h,2 )      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0.2.1.0None "%&(-1?+A TLS protocol version supported by Rustls.(Unused) userdata.k Hostname.vu:<;SmnojhialkQMKJHLN?EF>=OD@AB32654/01p87txwPGCcrqs-*+,.)b^_`[YRZ]I\9WVTUXfdeg ( !"#$%&'   (onmljihgfedcbak\`_^][ZYXWVUTSR <; :QGDEF C@AB?N>=MLKJIHOP&'$%t"#qpsr !wx 987 vu6543210/.-,+*)None "%&(-1?)Messages sent from the background thread.Reply with a buffer, either containing the read data, or awaiting a write to this buffer."Notify that the FFI call finished.'Messages sent to the background thread.Request to start a read or a write FFI call from the background thread. It should respond with .Notify the background thread that we are done interacting with the buffer.A Rustls connection.Type-level indicator whether a  is client- or server-side."Underlying data source for Rustls.0Write data from the given buffer to the backend.1Read data from the backend into the given buffer.#Wrapper for exceptions thrown in a .TLS exception thrown by Rustls.Use % for a human-friendly representation.A ' to get TLS connection information via .%A Rustls connection logging callback.Rustls log level.7Assembled configuration for a Rustls server connection.A logging callback.Note that this is a record selector, so you can use it as a setter::{=setLogCallback :: LogCallback -> ServerConfig -> ServerConfig)setLogCallback logCallback serverConfig == serverConfig { serverConfigLogCallback = Just logCallback }:}Rustls client config builder.#Optionally, a client cert verifier.3Ignore the client's ciphersuite order. Defaults to .ALPN protocols.List of s.The cryptography provider.;One or more PEM-encoded certificate revocation lists (CRL).*Which client connections are allowed by a .Allow any authenticated client (i.e. offering a trusted certificate), and reject clients offering none.Allow any authenticated client (i.e. offering a trusted certificate), but also allow clients offering none.&How to verify TLS client certificates.List of certificate revocation lists used to verify TLS client certificates.4Certificates used to verify TLS client certificates.%Which client connections are allowed.7Assembled configuration for a Rustls client connection.A logging callback.Note that this is a record selector, so you can use it as a setter::{=setLogCallback :: LogCallback -> ClientConfig -> ClientConfig)setLogCallback logCallback clientConfig == clientConfig { clientConfigLogCallback = Just logCallback }:}A complete chain of certificates plus a private key for the leaf certificate.PEM-encoded private key.PEM-encoded certificate chain.*Parsing mode for PEM-encoded certificates.Fail if syntactically invalid. Ignore if syntactically invalid.This may be useful on systems that have syntactically invalid root certificates.%A source of PEM-encoded certificates.#In-memory PEM-encoded certificates.0Fetch PEM-encoded root certificates from a file.&How to verify TLS server certificates.Verify the validity of TLS certificates based on the operating system's certificate facilities, using  2https://github.com/rustls/rustls-platform-verifierrustls-platform-verifier.List of certificate revocation lists used to verify TLS server certificates.4Certificates used to verify TLS server certificates.Rustls client config builder.List of s for client authentication.Clients that want to support both ECDSA and RSA certificates will want the ECDSA to go first in the list.6Whether to enable Server Name Indication. Defaults to .ALPN protocols. The server certificate verifier.The cryptography provider.)A negotiated TLS cipher suite. Subset of .,The text representation of the cipher suite.The IANA value of the cipher suite. The bytes are interpreted in network order.See  https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 for a list.?A TLS cipher suite supported by a Rustls cryptography provider.$The TLS version of the cipher suite.,The text representation of the cipher suite.The IANA value of the cipher suite. The bytes are interpreted in network order.See  https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 for a list.An ALPN protocol ID. See  https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for a list of registered IDs.#A cryptography provider for Rustls.In particular, this contains the set of supported TLS cipher suites.Checks if the given  represents a certificate error. An in-memory .Helper function, see  complete_io from rustls. https://github.com/rustls/rustls/blob/v/0.23.4/rustls/src/conn.rs#L544Read a  with the given max length.This will silently truncate s which are too long.Write a .None "%&(-1?(/A DER-encoded certificate.Combined version string of Rustls and rustls-ffi, as well as the Rustls cryptography provider.version,"rustls-ffi/0.14.1/rustls/0.23.18/aws-lc-rs":Get the process-wide default Rustls cryptography provider.Create a derived  by restricting the cipher suites to the ones in the given list.Get the cipher suites supported by the given cryptography provider.Get all TLS versions supported by at least one of the cipher suites supported by the given cryptography provider.A 4 with good defaults, using the OS certificate store.Build a  into a .This is a relatively expensive operation, so it is a good idea to share one  when creating multiple s.Build a  into a .This is a relatively expensive operation, so it is a good idea to share one  when creating multiple s.A  with good defaults.*Allocate a new logging callback, taking a  and a message.3If it throws an exception, it will be wrapped in a  and passed to .4 Make sure that its lifetime encloses those of the "s which you configured to use it.(Initialize a TLS connection as a client.(Initialize a TLS connection as a server.Ensure that the connection is handshaked. It is only necessary to call this if you want to obtain connection information. You can do so by providing a .:{getALPNAndTLSVersion :: MonadIO m => Connection side ->$ m (Maybe ALPNProtocol, TLSVersion)getALPNAndTLSVersion conn =< handshake conn $ (,) <$> getALPNProtocol <*> getTLSVersion:})Get the negotiated ALPN protocol, if any.(Get the negotiated TLS protocol version. Get the negotiated cipher suite./Get the SNI hostname set by the client, if any.Get the i%-th certificate provided by the peer.Index 0 is the end entity certificate. Higher indices are certificates in the chain. Requesting an index higher than what is available returns .Send a  close_notify warning alert. This informs the peer that the connection is being closed.Read data from the Rustls  into the given buffer.Read data from the Rustls  into a 7. The result will not be longer than the given length.Write data to the Rustls  from the given buffer.Write a  to the Rustls .Must be a subset of  . Only the  is used. Hostname.Maximum result length. Note that a buffer of this size will be allocated.vu vu vu         !"#$%&&''(())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    $$$$!!#######rustls-0.2.1.0-inplaceRustls.Internal.FFIRustls.InternalRustlsrustlsEdisplayException handshake ghc-internalGHC.Internal.Foreign.C.ConstPtrConstPtr unConstPtr RootCertStoreRootCertStoreBuilderCryptoProviderBuilderCryptoProvider TLSVersion unTLSVersionSupportedCipherSuite Certificate CertifiedKey WriteCallback ReadCallback LogParamsrustlsLogParamsMessagerustlsLogParamsLevelLogLevel LogCallback ConnectionClientCertVerifierWebPkiClientCertVerifierBuilderServerConfigBuilder ServerConfigServerCertVerifierWebPkiServerCertVerifierBuilderClientConfigBuilder ClientConfigUserdataIOResultResult SliceBytesStr ConstCStringrootCertStoreFreerootCertStoreBuilderBuildrootCertStoreBuilderFree%rootCertStoreBuilderLoadRootsFromFilerootCertStoreBuilderAddPemrootCertStoreBuilderNewcryptoProviderCiphersuitesGetcryptoProviderCiphersuitesLencryptoProviderFreecryptoProviderBuilderFreecryptoProviderBuilderBuild$cryptoProviderBuilderSetCipherSuites cryptoProviderBuilderNewWithBase#cryptoProviderBuilderNewFromDefault%hsSupportedCiphersuiteProtocolVersionhsSupportedCipherSuiteGetNamesupportedCipherSuiteGetSuitecertificateGetDERcertifiedKeyFreecertifiedKeyBuildconnectionSetBufferLimitconnectionSendCloseNotifyconnectionProcessNewPacketsconnectionWantsWriteconnectionWriteconnectionWriteTlsmkWriteCallbackconnectionWantsReadconnectionReadconnectionReadTlsmkReadCallbackconnectionGetPeerCertificateserverConnectionGetSNIHostname&connectionGetNegotiatedCipherSuiteName"connectionGetNegotiatedCipherSuiteconnectionGetProtocolVersionconnectionGetALPNProtocolconnectionIsHandshakingconnectionSetLogCallback mkLogCallbackconnectionFree$serverConfigBuilderSetClientVerifierclientCertVerifierFree$webPkiClientCertVerifierBuilderBuild#webPkiClientCertVerifierBuilderFree3webPkiClientCertVerifierBuilderAllowUnauthenticated%webPkiClientCertVerifierBuilderAddCrl.webPkiClientCertVerifierBuilderNewWithProvider#serverConfigBuilderSetCertifiedKeys'serverConfigBuilderSetIgnoreClientOrder#serverConfigBuilderSetALPNProtocolsserverConnectionNewserverConfigFreeserverConfigBuilderBuildserverConfigBuilderFreeserverConfigBuilderNewCustom$clientConfigBuilderSetServerVerifierserverCertVerifierFree&platformServerCertVerifierWithProvider$webPkiServerCertVerifierBuilderBuild#webPkiServerCertVerifierBuilderFree%webPkiServerCertVerifierBuilderAddCrl.webPkiServerCertVerifierBuilderNewWithProvider"clientConfigBuilderSetCertifiedKeyclientConfigBuilderSetEnableSNI#clientConfigBuilderSetALPNProtocolsclientConnectionNewclientConfigFreeclientConfigBuilderBuildclientConfigBuilderFreeclientConfigBuilderNewCustomerrorMsgresultIsCertErrorresultInsufficientSizeresultOk hsVersionTLS13TLS12 ioResultOk ioResultErr$fShowTLSVersion$fEqTLSVersion$fOrdTLSVersion$fStorableTLSVersion$fGenericLogParams$fGStorableLogParams$fShowLogLevel $fEqLogLevel$fStorableLogLevel $fEqIOResult $fShowResult $fEqResult $fOrdResult$fGenericSliceBytes$fGStorableSliceBytes $fGenericStr$fGStorableStrIsEOFNotEOFIOMsgRes UsingBufferDoneFFIIOMsgReqRequestDone ReadOrWriteReadWrite Connection'interactThreadioMsgResioMsgReqlenPtrbackendconnSideClientServerBackend backendWrite backendReadRustlsUnknownLogLevelRustlsLogExceptionRustlsExceptionrustlsErrorCodeHandshakeQuery unLogCallback LogLevelError LogLevelWarn LogLevelInfo LogLevelDebug LogLevelTraceserverConfigLogCallbackserverConfigPtrserverConfigClientCertVerifierserverConfigIgnoreClientOrderserverConfigALPNProtocolsserverConfigCertifiedKeysserverConfigCryptoProviderCertificateRevocationListunCertificateRevocationListClientCertVerifierPolicyAllowAnyAuthenticatedClient&AllowAnyAnonymousOrAuthenticatedClientclientCertVerifierCRLsclientCertVerifierCertificatesclientCertVerifierPolicyclientConfigLogCallbackclientConfigPtr privateKeycertificateChainPEMCertificateParsingPEMCertificateParsingStrictPEMCertificateParsingLaxPEMCertificatesPEMCertificatesInMemoryPemCertificatesFromFilePlatformServerCertVerifierserverCertVerifierCRLsserverCertVerifierCertificatesclientConfigCertifiedKeysclientConfigEnableSNIclientConfigALPNProtocolsclientConfigServerCertVerifierclientConfigCryptoProviderNegotiatedCipherSuitenegotiatedCipherSuiteNamenegotiatedCipherSuiteID CipherSuitecipherSuiteTLSVersioncipherSuiteName cipherSuiteID ALPNProtocolunALPNProtocolunCryptoProviderhandshakeQuery resultMsg isCertErrorrethrowRmkSocketBackendmkByteStringBackendwithConnection interactTLS completeIOcompletePriorIOgetIsHandshaking getWantsRead getWantsWritewhenM loopWhileTrue cSizeToInt intToCSize strToTextignoreExceptionsignoreSyncExceptions$fShowCryptoProvider$fShowCertifiedKey$fExceptionRustlsException $fShowIsEOF $fEqIsEOF$fFunctorHandshakeQuery$fApplicativeHandshakeQuery$fMonadHandshakeQuery$fShowRustlsUnknownLogLevel $fExceptionRustlsUnknownLogLevel$fShowRustlsLogException$fExceptionRustlsLogException$fShowRustlsException $fOrdLogLevel$fEnumLogLevel$fBoundedLogLevel$fGenericLogLevel$fShowServerConfigBuilder$fGenericServerConfigBuilder$fShowClientConfigBuilder$fGenericClientConfigBuilder$fShowServerCertVerifier$fGenericServerCertVerifier$fShowClientCertVerifier$fGenericClientCertVerifier$fShowCertificateRevocationList"$fGenericCertificateRevocationList$fShowClientCertVerifierPolicy$fEqClientCertVerifierPolicy$fOrdClientCertVerifierPolicy$fEnumClientCertVerifierPolicy!$fBoundedClientCertVerifierPolicy!$fGenericClientCertVerifierPolicy$fGenericCertifiedKey$fShowPEMCertificates$fGenericPEMCertificates$fShowPEMCertificateParsing$fEqPEMCertificateParsing$fOrdPEMCertificateParsing$fEnumPEMCertificateParsing$fBoundedPEMCertificateParsing$fGenericPEMCertificateParsing$fShowNegotiatedCipherSuite$fEqNegotiatedCipherSuite$fOrdNegotiatedCipherSuite$fGenericNegotiatedCipherSuite$fShowCipherSuite$fEqCipherSuite$fOrdCipherSuite$fGenericCipherSuite$fShowALPNProtocol$fEqALPNProtocol$fOrdALPNProtocol$fGenericALPNProtocolDERCertificateunDERCertificateversiongetDefaultCryptoProvidersetCryptoProviderCipherSuitescryptoProviderCipherSuitescryptoProviderTLSVersionsdefaultClientConfigBuilderbuildClientConfigbuildServerConfigdefaultServerConfigBuildernewLogCallbacknewClientConnectionnewServerConnectiongetALPNProtocol getTLSVersiongetNegotiatedCipherSuitegetSNIHostnamegetPeerCertificatesendCloseNotifyreadPtrreadBSwritePtrwriteBS$fShowDERCertificate$fEqDERCertificate$fOrdDERCertificate$fGenericDERCertificateGHC.Internal.BaseMonadghc-prim GHC.TypesFalseTruebytestring-0.12.1.0-inplaceData.ByteString.Internal.Type ByteStringGHC.Internal.Conc.Sync reportErrorGHC.Internal.MaybeNothing