Îõ³h&:þ/      !"#$%&'()*+,-. BSD-style#Vincent Hanquez  experimentalportable Safe-Inferred $crypton-connectionÃShared values (certificate store, sessions, ..) between connectionsõAt the moment, this is only strictly needed to shared sessions and certificates when using a TLS enabled connection.crypton-connection9This opaque type represent a connection to a destination./crypton-connectionthis is set to 0 on EOFcrypton-connectionÇreturn a simple tuple of the port and hostname that we're connected to.crypton-connectionäTLS Settings that can be either expressed as simple settings, or as full blown TLS.Params settings.üUnless you need access to parameters that are not accessible through the simple settings, you should use TLSSettingsSimple.crypton-connectionÃfull blown TLS Settings directly using TLS.Params. for power users.crypton-connectionŠDisable certificate verification completely, this make TLS/SSL vulnerable to a MITM attack. not recommended to use, but for testing.crypton-connectionôDisable session management. TLS/SSL connections will always re-established their context. Not Implemented Yet.crypton-connection/Use server name extension. Not Implemented Yet. crypton-connection"Proxy settings for the connection.ÈOtherProxy handles specific application-level proxies like HTTP proxies.ØThe simple SOCKS settings is just the hostname and portnumber of the SOCKS proxy server.„That's for now the only settings in the SOCKS package, socks password, or any sort of other authentications is not yet implemented.crypton-connection0Connection Parameters to establish a Connection./The strict minimum is an hostname and the port.æIf you need to establish a TLS connection, you should make sure connectionUseSecure is correctly set.âIf you need to connect through a SOCKS, you should make sure connectionUseSocks is correctly set.crypton-connectionhost name to connect to.crypton-connectionport number to connect to.crypton-connectionoptional TLS parameters.crypton-connection#optional Proxy/Socks configuration.1crypton-connectionÎHostname This could either be a name string (punycode encoded) or an ipv4/ipv62crypton-connectionÎSimple backend enumeration, either using a raw connection or a tls connection.34/567 1289: BSD-style#Vincent Hanquez  experimentalportable Safe-Inferred6ܨcrypton-connection(Exception raised when the connect failedcrypton-connection?Exception raised when there's no resolution for a specific hostcrypton-connectionçThis is the exception raised if we reached the user specified limit for the line in ConnectionGetLine.crypton-connectionÁInitialize the library with shared parameters between connection.;crypton-connectionCreate a final TLS  ClientParams3 according to the destination and the TLSSettings.crypton-connectionÀUse an already established handle to create a connection object.“if the TLS Settings is set, it will do the handshake with the server. The SOCKS settings have no impact here, as the handle is already establishedcrypton-connectionÀUse an already established handle to create a connection object.“if the TLS Settings is set, it will do the handshake with the server. The SOCKS settings have no impact here, as the handle is already establishedcrypton-connection,Connect to a destination using the parametercrypton-connection&Put a block of data in the connection. crypton-connection+Get exact count of bytes from a connection.“The size argument is the exact amount that must be returned to the user. The call will wait until all data is available. Hence, it behaves like <.On end of input,   will throw an  exception.!crypton-connection!Get some bytes from a connection.·The size argument is just the maximum that could be returned to the user. The call will return as soon as there's data, even if there's less than requested. Hence, it behaves like =.On end of input, !0 returns 0, but subsequent calls will throw an  exception."crypton-connection/Get the next block of data from the connection.#crypton-connectionLike "Õ, but return the unused portion to the buffer, where it will be the next chunk read.$crypton-connection3Wait for input to become available on a connection.As with >Ý, the timeout value is given in milliseconds. If the timeout value is less than zero, then $ waits indefinitely.Unlike >Ì, this function does not do any decoding, so it returns true when there is any+ available input, not just full characters.%crypton-connection9Get the next line, using ASCII LF as the line terminator.This throws an  isEOFErrorû exception on end of input, and LineTooLong when the number of bytes gathered is over the limit without a line terminator.…The actual line returned can be bigger than the limit specified, provided that the last chunk returned by the underlaying backend contains a LF. Put another way: Only when we need more input and limit is reached that the LineTooLong exception will be raised.ÖAn end of file will be considered as a line terminator too, if the line is not empty.&crypton-connectionClose a connection.'crypton-connection5Activate secure layer using the parameters specified.ôThis is typically used to negotiate a TLS channel on an already established channel, e.g., supporting a STARTTLS command. It also flushes the received buffer to prevent application confusing received data before and after the setSecure call.=If the connection is already using TLS, nothing else happens.(crypton-connection7Returns if the connection is establish securely or not.crypton-connection&The global context of this connection.crypton-connectionÀThe parameters for this connection (where to connect, and such).crypton-connection*The new established connection on success.%crypton-connection>Maximum number of bytes before raising a LineTooLong exceptioncrypton-connection Connectioncrypton-connection%The received line with the LF trimmed)  !"#$%&'() &! "#%$'(?      !"#$%&'()*+,-./0123456789:;<=><=?0@AÂ/crypton-connection-0.3.1-6dEaEyEyq5s75vuduV1EWtNetwork.ConnectionNetwork.Connection.TypesE isEOFErrorConnectionContext Connection connectionID TLSSettingsTLSSettingsSimple#settingDisableCertificateValidationsettingDisableSessionsettingUseServerName SockSettings ProxySettingsSockSettingsSimpleSockSettingsEnvironment OtherProxyConnectionParamsconnectionHostnameconnectionPortconnectionUseSecureconnectionUseSocksHostCannotConnectHostNotResolved LineTooLongconnectionSessionManagerinitConnectionContextconnectFromHandleconnectFromSocket connectTo connectionPutconnectionGetExact connectionGetconnectionGetChunkconnectionGetChunk'connectionWaitForInputconnectionGetLineconnectionCloseconnectionSetSecureconnectionIsSecure$fExceptionLineTooLong$fExceptionHostNotResolved$fExceptionHostCannotConnect$fShowHostCannotConnect$fShowHostNotResolved$fShowLineTooLongconnectionBufferbase GHC.MaybeNothingHostNameConnectionBackendglobalCertificateStoreconnectionBackend ConnectionID ConnectionTLSConnectionSocketConnectionStream makeTLSParamsbytestring-0.11.3.1Data.ByteStringhGethGetSomeGHC.IO.Handle.Text hWaitForInput