Îõ³h$–7Í      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL7Concurrently run actions until one succeeds or all fail(c) Eric Mertens, 2020ISCemertens@gmail.com Safe-Inferred+ÙOMhookup#microsecond delay between attempts hookuprelease unneeded success hookupordered list of attempts M?Hack into the internals of OpenSSL to add missing functionality(c) Eric Mertens, 2016ISCemertens@gmail.comNone mhookupäAdd hostname checking to the certificate verification step. Partial wildcards matching is disabled. hookup?Set the ciphers to be used by the given context for TLS 1.3 Çhttps://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_cipher_list.htmlèUnrecognised ciphers are ignored. If no ciphers from the list are recognised, an exception is raised.hookup hostname   &SOCKS5 network protocol implementation(c) Eric Mertens, 2018ISCemertens@gmail.comNoneè¡ Nhookup;Server message used to indicate result of client's request.OhookupÉClient message used to request a network operation from the SOCKS server.Phookup?Initial SOCKS sent by server with chosen authentication method.QhookupÊInitial SOCKS sent by client with proposed list of authentication methods.Rhookup%proposed methods (maximum length 255)Shookup2Network host identified by address or domain name.ThookupIPv4 host addressUhookupIPv6 host addressVhookup Domain name (maximum length 255)WhookupNetwork host and port number hookupSOCKS command reply codesXhookupSOCKS client commandsYhookupSOCKS authentication methods0NZ[\O]^_P`aQbRSTUVWc  XdefYghijklmnopqr2Network connections generalized over TLS and SOCKS(c) Eric Mertens, 2016ISCemertens@gmail.comNone+ )hookup­A 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 8 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 protocol hookup%Use the connection hostname to verify!hookupNo verification"hookup Use the given hostname to verify#hookupãTLS connection parameters. These parameters are passed to OpenSSL when making a secure connection.%hookupPath to client certificate&hookupPath to client private key'hookupPrivate key decryption password(hookupPath to CA certificate bundle)hookup OpenSSL cipher suite name (e.g. "HIGH")*hookup!OpenSSL cipher suites for TLS 1.3+hookup2Hostname to use when checking certificate validity,hookupSOCKS connection parameters.hookupSOCKS server host/hookupSOCKS server port0hookupParameters for 8.Common defaults for fields:  defaultFamily, 7When a ,Ñ is provided the connection will be established using a SOCKS (version 5) proxy.When a #Ú is provided the connection negotiate TLS at connect time in order to protect the stream.ìThe binding hostname can be used to force the connect to use a particular interface or IP protocol version.2hookupDestination host3hookupDestination TCP port4hookupOptional SOCKS parameters5hookupOptional TLS parameters6hookupSource address to bind7hookupÍDefault values for TLS that use no client certificates, use system CA root, "HIGH", cipher suite, and which validate hostnames.8hookupÊOpen network connection to TCP service specified by the given parameters.-The resulting connection MUST be closed with : to avoid leaking resources.Throws s, , t, 9hookup 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 t:hookupClose network connection.;hookupÆReceive 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: s, u, t<hookup2Receive a line from the network connection. Both "\r\n" and "\n" are recognized. Returning v< means that the peer has closed its half of the connection. Unterminated lines will raise a ø exception. This can happen if the peer transmits some data and closes its end without transmitting a line terminator.Throws: u, t, , s=hookupPush a w¡ 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.>hookupÿSend bytes on the network connection. This ensures the whole chunk is transmitted, which might take multiple underlying sends.Throws: s, t@hookup#Get peer certificate if one exists.Ahookup#Get peer certificate if one exists.Ihookupx" implemented for prettier messages8hookupparameters hookupopen connection 9hookupparameters 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 ?hookupconnection params hookup hostname Ä  ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGÍ89:?;<>=0123456,-./#$%&'()*+! "7   A@BCDEFGù      !"#$%&'(()*+,-./001233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[P\]Q^_R`SYabcdefghijklmnopqrstsupvwxyzp{|ý!hookup-0.7-1Wim2Qr3I7aBp2tN32mgayHookupHookup.OpenSSLHookup.Concurrent Hookup.Socks5)HsOpenSSL-0.11.7.2-Ch9HdupST8sHR7JcgKodvl OpenSSL.PEMPwTTY PwCallbackPwBSPwStrPwNonePemPasswordSupplywithDefaultPassword getPubKeyDerinstallVerificationcontextSetTls13Ciphers CommandReplyAddrNotSupportedCmdNotSupported TTLExpiredConnectionRefusedHostUnreachableNetUnreachable NotAllowedGeneralFailure Succeeded ConnectionConnectionFailureHostnameResolutionFailure LineTooLong LineTruncated SocksErrorSocksAuthenticationErrorSocksProtocolErrorSocksBadDomainName TlsVerify VerifyDefault VerifyNoneVerifyHostname TlsParamstpClientCertificatetpClientPrivateKeytpClientPrivateKeyPasswordtpServerCertificate tpCipherSuitetpCipherSuiteTls13tpVerify SocksParamsspHostspPortConnectionParamscpHostcpPortcpSockscpTlscpBinddefaultTlsParamsconnectconnectWithSocketcloserecvrecvLineputBufsend upgradeTlsgetPeerCertificategetClientCertificategetPeerCertFingerprintSha1getPeerCertFingerprintSha256getPeerCertFingerprintSha512getPeerPubkeyFingerprintSha1getPeerPubkeyFingerprintSha256getPeerPubkeyFingerprintSha512$fExceptionConnectError$fExceptionConnectionFailure$fShowConnectionFailure$fShowConnectError$fShowTlsVerifyconcurrentAttemptsResponseRequest ServerHello ClientHello cHelloMethodsHostIPv4IPv6 DomainNameAddressCommand AuthMethodrspReply rspAddress reqCommand reqAddress sHelloMethodConnectBind UdpAssociateAuthNoAuthenticationRequired AuthGssApiAuthUsernamePasswordAuthNoAcceptableMethodsbuildClientHelloparseClientHellobuildServerHelloparseServerHello buildRequest parseRequest buildResponse parseResponsebaseGHC.IO.ExceptionIOErrorOpenSSL.Session ProtocolErrorConnectionAbruptlyTerminated GHC.MaybeNothingbytestring-0.10.10.0Data.ByteString.Internal ByteStringGHC.Exception.TypedisplayException