!uyn9      !"#$%&'()*+,-./012345678?Hack into the internals of OpenSSL to add missing functionality(c) Eric Mertens, 2016ISCemertens@gmail.comNone 9hookupdAdd hostname checking to the certificate verification step. Partial wildcards matching is disabled.:hookupparam hookupname hookupnamelen hookup1 success, 0 failure ;hookupparam hookupflags <hookupctx 9hookup hostname =9&SOCKS5 network protocol implementation(c) Eric Mertens, 2018ISCemertens@gmail.comNonegr>hookup;Server message used to indicate result of client's request.?hookupIClient message used to request a network operation from the SOCKS server.@hookup?Initial SOCKS sent by server with chosen authentication method.AhookupJInitial SOCKS sent by client with proposed list of authentication methods.Bhookup%proposed methods (maximum length 255)Chookup2Network host identified by address or domain name.DhookupIPv4 host addressEhookupIPv6 host addressFhookup Domain name (maximum length 255)GhookupNetwork host and port numberhookupSOCKS command reply codesHhookup/Tags used in the protocol messages for encoded C valuesIhookupSOCKS client commandsJhookupSOCKS authentication methodsKhookup Transform a L into a strict MNhookupBuild a list of buildable things prefixing the length of the list as a single byte. The list must not be longer than 255 elements.OhookupxParse a list of parsable things where the length of the list is encoded as a single byte before the items to be parsed.Phookup Match a 16-bit, big-endian word.0>QRS?TUV@WXAYBCDEFGZ I[\]J^_`abcdefghi2Network connections generalized over TLS and SOCKS(c) Eric Mertens, 2016ISCemertens@gmail.comNonel* hookupA connection to a network service along with its read buffer used for line-oriented protocols. The connection could be a plain network connection, SOCKS connected, or TLS. hookup3Type for errors that can be thrown by this package. hookupFailure during  getAddrInfo resolving remote hosthookupFailure during ) to remote hosthookupFailure during -hookupIncomplete line during -hookup4Socks command rejected by server by given reply codehookup,Socks authentication method was not acceptedhookup3Socks server sent an invalid message or no message.hookup+Domain name was too long for SOCKS protocolhookupcTLS connection parameters. These parameters are passed to OpenSSL when making a secure connection.hookupPath to client certificatehookupPath to client private keyhookupPath to CA certificate bundlehookup OpenSSL cipher suite name (e.g. "HIGH")hookup#Disables certificate checking when jhookupSOCKS connection parametershookupSOCKS server hosthookupSOCKS server port hookupParameters for ).Common defaults for fields: ', (The address family can be specified in order to force only IPv4 or IPv6 to be used. The default behavior is to support both. It can be useful to specify exactly one of these in the case that the other is misconfigured and a hostname is resolving to both.When a Q is provided the connection will be established using a SOCKS (version 5) proxy.When a Z is provided the connection negotiate TLS at connect time in order to protect the stream."hookupIP Protocol family (default  AF_UNSPEC)#hookupDestination host$hookupDestination TCP port%hookupOptional SOCKS parameters&hookupOptional TLS parameters'hookupDefault k5 value is unspecified and allows both INET and INET6.(hookupMDefault values for TLS that use no client certificates, use system CA root, "HIGH", cipher suite, and which validate hostnames.lhookupPOpen a socket using the given parameters either directly or via a SOCKS server.mhookupLTry establishing a connection to the services indicated by a given list of nY values. Either return a socket that has successfully connected to one of the candidate ns or throw a  / exception will all of the encountered errors.ohookupDCreate a socket and connect to the service identified by the given n! and return the connected socket.phookupOpen a q using the parameters from an n)hookupJOpen network connection to TCP service specified by the given parameters.-The resulting connection MUST be closed with + to avoid leaking resources.Throws r, , s,  *hookup Create a new   using an already connected socket. This will attempt to start TLS if configured but will ignore any SOCKS server settings as it is assumed that the socket is already actively connected to the intended service.Throws s+hookupClose network connection.,hookupReceive the next chunk from the stream. This operation will first return the buffer if it contains a non-empty chunk. Otherwise it will request up to the requested number of bytes from the stream.Throws: r, t, s-hookup2Receive a line from the network connection. Both "\r\n" and "\n" are recognized. Returning u< means that the peer has closed its half of the connection. Unterminated lines will raise a x exception. This can happen if the peer transmits some data and closes its end without transmitting a line terminator.Throws: t, s,  , r.hookupPush a M onto the buffer so that it will be the first bytes to be read on the next receive operation. This could perhaps be useful for putting the unused portion of a ," back into the buffer for future - or , operations.vhookupRemove the trailing '\\r' if one is found./hookupSend bytes on the network connection. This ensures the whole chunk is transmitted, which might take multiple underlying sends.Throws: r, swhookupInitiate a TLS session on the given socket destined for the given hostname. When successful an active TLS connection is returned with certificate verification successful when requested. This function requires that the TLSParams component of   is set.0hookup#Get peer certificate if one exists.7hookupx" implemented for prettier messages mhookupaccumulated errors hookupcandidate AddrInfos hookupconnected socket yhookupparameters hookupsocket creation action hookupopen network handle )hookupparameters hookupopen connection *hookupparameters hookupconnected socket hookupopen connection +hookupopen connection ,hookupopen connection hookupmaximum underlying recv size hookupnext chunk from stream -hookupopen connection hookupmaximum line length hookupnext line or end-of-stream .hookupconnection hookupnew head of buffer /hookupopen connection hookupchunk whookupconnection params hookuphostname hookupsocket creation action hookupconnected TLS zhookup insecure 7    !"#$%&'()*+,-./0123456@ )*+,-/. !"#$%&'(    0123456{       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMKNOPQR=ST>UV?W@FXYZ[\]^_`abcdefghijklmnjopqrstuvwxywxzt{|}~t hookup-0.3-GPaENwqfpkm1qbYxDSa33HookupHookup.OpenSSL Hookup.Socks5 CommandReplyAddrNotSupportedCmdNotSupported TTLExpiredConnectionRefusedHostUnreachableNetUnreachable NotAllowedGeneralFailure Succeeded ConnectionConnectionFailureHostnameResolutionFailure LineTooLong LineTruncated SocksErrorSocksAuthenticationErrorSocksProtocolErrorSocksBadDomainName TlsParamstpClientCertificatetpClientPrivateKeytpServerCertificate tpCipherSuite tpInsecure SocksParamsspHostspPortConnectionParamscpFamilycpHostcpPortcpSockscpTls defaultFamilydefaultTlsParamsconnectconnectWithSocketcloserecvrecvLineputBufsendgetPeerCertificategetPeerCertFingerprintSha1getPeerCertFingerprintSha256getPeerCertFingerprintSha512getPeerPubkeyFingerprintSha1getPeerPubkeyFingerprintSha256getPeerPubkeyFingerprintSha512$fExceptionConnectionFailure$fShowConnectionFailureinstallVerificationx509VerifyParamSet1Hostx509VerifyParamSetHostflags sslGet0Param getPubKeyDerResponseRequest ServerHello ClientHello cHelloMethodsHostIPv4IPv6 DomainNameAddressHostTagCommand AuthMethod runBuilderbytestring-0.10.8.2 Data.ByteString.Builder.InternalBuilderData.ByteString.Internal ByteString buildListOf parseListOf parseWord16BErspReply rspAddress reqCommand reqAddress sHelloMethodConnectBind UdpAssociateAuthNoAuthenticationRequired AuthGssApiAuthUsernamePasswordAuthNoAcceptableMethodsbuildClientHelloparseClientHellobuildServerHelloparseServerHello buildRequest parseRequest buildResponse parseResponseghc-prim GHC.TypesTrue&network-3.0.1.1-CHSR3XrToff3SltVAZnyeNNetwork.Socket.TypesFamily openSocketattemptConnectionsNetwork.Socket.InfoAddrInfoconnectToAddrInfosocket' NetworkHandlebaseGHC.IO.ExceptionIOError*HsOpenSSL-0.11.4.17-4iFz3WJp60V5aWhmVW8imfOpenSSL.Session ProtocolErrorConnectionAbruptlyTerminated GHC.MaybeNothingcleanEndstartTlsGHC.Exception.TypedisplayExceptionopenNetworkHandleverificationMode