b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aNone bcdefghijkl cdefgijkl bcdefghijklunknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-Inferredm(record some data about this connection. n%number of handshakes on this context o$bytes received since last handshake p bytes sent since last handshake mqnoprstuv mqnoprstuvmqnoprstuvunknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-InferredBevery compression need to be wrapped in this, to fit in structure ?supported compression algorithms need to be part of this class w,return the associated ID for this algorithm xRdeflate (compress) a bytestring using a compression context and return the result ) along with the new compression context. yTinflate (decompress) a bytestring using a compression context and return the result $ along the new compression context. zTintersect a list of ids commonly given by the other side with a list of compression ^ the function keeps the list of compression in order, to be able to find quickly the prefered  compression. default null compression {|wxyz}~ wxyz {|wxyz}~None"unknown experimental#Vincent Hanquez <vincent@snarc.org>Noneprime modulus  generator public value (g^X mod p) Cdeprecated alert, should never be sent by compliant implementation 6TLSError that might be returned through the TLS stack handshake policy failed. mainly for instance of Error Versions known to TLS ESSL2 is just defined, but this version is and will not be supported.       !" !"#$%&'()*+,-./0       !" !"#$%/          "!  !"#$%&'()*+,-./0unknown experimental#Vincent Hanquez <vincent@snarc.org>None#Cipher algorithm )#$%&'()*12345+,-./016789:;<=>?@ABCDEFGHIJ'#$%&'()*12345+,-./016789:;<=>?@ABCDEFGH #$%&'()*12345+,-./016 @?>=<;:987ADCBEFGHIJunknown experimental#Vincent Hanquez <vincent@snarc.org>NoneKLKLKL unknown experimental#Vincent Hanquez <vincent@snarc.org>NoneMNOPQRSTUVWXYZ[\]^_`abcdefgMNOPQRSTUVWXYZ[\]^_MNOPQRSTUVWXYZ[\]^_ unknown experimental#Vincent Hanquez <vincent@snarc.org>Nonehcurrent protocol version icurrent key exchange type Djklhimnopqrstuvwxyz{|}~klhistuvwxz{Ajklhimnopqrstuvwxyz{|}~ None This is a strict version of and This is a strict version of &&. &verify that 2 bytestrings are equals.  it'5s a non lazy version, that will compare every bytes. % arguments need to be of same length  unknown experimental#Vincent Hanquez <vincent@snarc.org>NoneQG. unknown experimental#Vincent Hanquez <vincent@snarc.org>None2IA TLS Context is a handle augmented by tls specific state and parameters 3:return the connection object associated with this context has the handle EOFed or not. 1has the handshake been done and been successful. 44Certificate Usage callback possible returns values. 5usage of certificate rejected 6usage of certificate accepted 7'Certificate and Chain rejection reason >%version to use on client connection. ?"allowed versions that we can use. @+all ciphers supported ordered by priority. A/all compression supported ordered by priority. B#request a certificate from client.  use by server only. EAthe cert chain for this context with the associated keys if any. Fcallback for logging G%callback on a beggining of handshake H(callback to verify received cert chain. I,callback to maybe resume session on server. J,callback when session have been established K.callback when session is invalidated by error L2try to establish a connection using this session. =23     456789:;<=>?@ABCDEFGHIJKLMNOPQRST>mqnop 23456789:;<=>?@ABCDEFGHIJKLMNOPQRST2 3     4657;:98<=>?@ABCDEFGHIJKLMNOPQRSTunknown experimental#Vincent Hanquez <vincent@snarc.org>NoneRepresent a TLS record.  Yturn a plaintext record into a compressed record using the compression function supplied !Uturn a compressed record into a ciphertext record using the cipher function supplied "Yturn a ciphertext fragment into a compressed fragment using the cipher function supplied #_turn a compressed fragment into a plaintext fragment using the decompression function supplied $'turn a record into an header and bytes %+turn a header and a fragment into a record &turn a record into a header '()*+,-./01 !"#$%&"'()*,-./0 !"#$%&'()*+,-./01 !"#$%&unknown experimental#Vincent Hanquez <vincent@snarc.org>None23456223456unknown experimental#Vincent Hanquez <vincent@snarc.org>None789:;7789:;unknown experimental#Vincent Hanquez <vincent@snarc.org>None'()*,-./$%&27unknown experimental#Vincent Hanquez <vincent@snarc.org>None<=>?@ABC=>@<=>?@ABCunknown experimental#Vincent Hanquez <vincent@snarc.org>NoneDEFGHIJKIJDEFGHIJKunknown experimental#Vincent Hanquez <vincent@snarc.org>None L7receive one packet from the context that contains 1 or C many messages (many only in case of handshake). if will returns a 3 TLSError if the packet is unexpected or malformed MSend one packet to the context YlCreate a new Client context with a configuration, a RNG, a generic connection and the connection operation. ZGCreate a new Client context with a configuration, a RNG, and a Handle.  It reconfigures the handle's  to  NoBuffering. [lCreate a new Server context with a configuration, a RNG, a generic connection and the connection operation. \GCreate a new Server context with a configuration, a RNG, and a Handle.  It reconfigures the handle's  to  NoBuffering. ]=notify the context that this side wants to close connection. J this is important that it is called before closing the handle, otherwise 1 the session might not be resumable (for version < TLS1.2).  this doesn't actually close the handle N&when a new handshake is done, wrap up & clean up. ^#Handshake for a new TLS connection Q This is to be called at the beginning of a connection, and during renegotiation _ sendData sends a bunch of data. < It will automatically chunk data to acceptable packet size `GrecvData get data out of Data packet, and automatically renegotiate if % a Handshake ClientHello is received $OPQRUVWXSTUVWLXYZ[\]MY#Parameters to use for this context #Random number generator associated An abstract connection type 1A method for the connection buffer to be flushed 2A method for sending bytes through the connection 4A method for receiving bytes through the connection Z#parameters to use for this context 4random number generator associated with the context handle to use [\]N^_`^_`aabUVWXLMYZ[\]^_`aORQPUVWXSTUVWLXYZ[\]MYZ[\]N^_`^_`aabunknown experimental#Vincent Hanquez <vincent@snarc.org>None       !" !"#$%klhistuvwxz{=>@IJLMunknown experimental#Vincent Hanquez <vincent@snarc.org>Noneb  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ac<=>?@ABCDEFGHIJKLMNOPQR4657;:98TS 233Z\Y[]^_`a#$%&'()*+,-./01"! WXUVc  !"#$%&'()*+,-./01234567899:;<=>?@@ABCDE F G H I J K L M N O P P Q R S T U V W X Y Z [ \ ] ^ _ ` ` a b c d e fgghhijklmnopqrstuvwxyz{|}~}      !"#$%&'()*+,-./01233456789:;<=>?@ABCDEFGHIJKLM N O P Q R S T U V W X Y Z [ \ ] ^ _ `abcabdabeabfabgahiahjahk l m n o o p q r s t u v w x y z { | } ~                                                                                                                                            F                        !"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ tls-0.9.11 Network.TLSNetwork.TLS.MACNetwork.TLS.MeasurementNetwork.TLS.CompressionNetwork.TLS.CryptoNetwork.TLS.StructNetwork.TLS.CipherNetwork.TLS.CapNetwork.TLS.WireNetwork.TLS.PacketNetwork.TLS.UtilNetwork.TLS.StateNetwork.TLS.ContextNetwork.TLS.Record.TypesNetwork.TLS.Record.EngageNetwork.TLS.Record.DisengageNetwork.TLS.RecordNetwork.TLS.ReceivingNetwork.TLS.SendingNetwork.TLS.Core System.IO BufferModeNetwork.TLS.Internal Compression CompressionCcompressionCIDcompressionCDeflatecompressionCInflatenullCompression PrivateKeyPrivRSA SessionDatasessionVersion sessionCipher sessionSecret SessionIDTLSErrorError_Unknown_TypeError_Unknown_Version#Error_Internal_Packet_ByteProcessedError_Packet_ParsingError_Packet_unexpectedError_Packet_Size_Mismatch Error_Packet Error_EOF Error_RandomError_HandshakePolicyError_CertificateError_Protocol Error_MiscVersionTLS12TLS11TLS10SSL3SSL2CiphercipherID cipherName cipherHash cipherBulkcipherKeyExchange cipherMinVerBulkbulkName bulkKeySize bulkIVSize bulkBlockSizebulkFTLSCtx ctxConnectionTLSCertificateUsageCertificateUsageRejectCertificateUsageAcceptTLSCertificateRejectReasonCertificateRejectOtherCertificateRejectUnknownCACertificateRejectRevokedCertificateRejectExpired TLSParamspConnectVersionpAllowedVersionspCiphers pCompressionspWantClientCertpUseSecureRenegotiation pUseSession pCertificatespLogging onHandshakeonCertificatesRecvonSessionResumptiononSessionEstablishedonSessionInvalidatedsessionResumeWith TLSLoggingloggingPacketSentloggingPacketRecv loggingIOSent loggingIORecvdefaultLogging defaultParamsConnectionNotEstablishedHandshakeFailed clientWithclient serverWithserverbye handshakesendDatarecvData recvData'HMACmacSSLhmachmacMD5hmacSHA1 hmacSHA256hmacIterprf_SHA1prf_MD5 prf_MD5SHA1 prf_SHA256 Measurement nbHandshakes bytesReceived bytesSentnewMeasurementaddBytesReceived addBytesSentresetBytesCountersincrementNbHandshakes compressionIDcompressionDeflatecompressionInflatecompressionIntersectIDNullCompression$fCompressionCNullCompression$fShowCompression HashSHA256 HashMD5SHA1HashCtxHashCtxC hashCName hashCInit hashCUpdatehashCUpdateSSL hashCFinalKeyXchgKxRSAKxErrorRSAError PublicKeyPubRSAhashInit hashUpdate hashUpdateSSL hashFinal hashMD5SHA1 hashSHA256generalizeRSAError kxEncrypt kxDecrypt$fHashCtxCHashSHA256$fHashCtxCHashMD5SHA1 $fShowHashCtx$fShowPrivateKey$fShowPublicKeydh_pdh_gdh_YsDecryptionFailed TypeValuable valOfType valToType HandshakeFinished CertVerify CertRequest ServerKeyXchg ClientKeyXchgServerHelloDone HelloRequest Certificates ServerHello ClientHelloServerKeyXchgAlgorithmData SKX_Unknown SKX_DH_RSA SKX_DH_DSSSKX_RSA SKX_DHE_RSA SKX_DHE_DSS SKX_DH_AnonServerRSAParams rsa_modulus rsa_exponentServerDHParams HandshakeTypeHandshakeType_FinishedHandshakeType_ClientKeyXchgHandshakeType_CertVerifyHandshakeType_ServerHelloDoneHandshakeType_CertRequestHandshakeType_ServerKeyXchgHandshakeType_CertificateHandshakeType_ServerHelloHandshakeType_ClientHelloHandshakeType_HelloRequestAlertDescriptionNoRenegotiation UserCanceled InternalErrorInsufficientSecurityProtocolVersionExportRestriction DecryptError DecodeError AccessDenied UnknownCaIllegalParameterCertificateUnknownCertificateExpiredCertificateRevokedUnsupportedCertificateBadCertificateHandshakeFailureDecompressionFailureRecordOverflow BadRecordMacUnexpectedMessage CloseNotify AlertLevelAlertLevel_FatalAlertLevel_Warning Extension FinishedData CompressionIDCipherIDSession ClientRandom ServerRandomHeaderPacketAppDataChangeCipherSpecAlert ProtocolTypeProtocolType_AppDataProtocolType_HandshakeProtocolType_AlertProtocolType_ChangeCipherSpecSignatureAlgorithmSignatureOtherSignatureECDSA SignatureDSS SignatureRSASignatureAnonymous HashAlgorithm HashOther HashSHA512 HashSHA384 HashSHA224HashSHA1HashMD5HashNoneCertificateTypeCertificateType_UnknownCertificateType_fortezza_dms CertificateType_DSS_Ephemeral_DH CertificateType_RSA_Ephemeral_DHCertificateType_DSS_Fixed_DHCertificateType_RSA_Fixed_DHCertificateType_DSS_SignCertificateType_RSA_Sign CipherDatacipherDataContent cipherDataMACcipherDataPadding CipherType CipherAEAD CipherBlock CipherStream ConnectionEndConnectionClientConnectionServerBytesconstrRandom32 serverRandom clientRandom packetTypetypeOfHandshake numericalVerverOfNum $fTypeValuableSignatureAlgorithm$fTypeValuableHashAlgorithm$fTypeValuableCertificateType$fTypeValuableAlertDescription$fTypeValuableAlertLevel$fTypeValuableHandshakeType$fTypeValuableProtocolType$fTypeValuableCipherType$fTypeValuableConnectionEnd$fExceptionTLSError$fErrorTLSErrorHashhashNamehashSizehashFCipherKeyExchangeTypeCipherKeyExchange_ECDHE_ECDSACipherKeyExchange_ECDH_RSACipherKeyExchange_ECDH_ECDSACipherKeyExchange_DH_RSACipherKeyExchange_DH_DSSCipherKeyExchange_DHE_DSSCipherKeyExchange_ECDHE_RSACipherKeyExchange_DHE_RSACipherKeyExchange_DH_AnonCipherKeyExchange_RSA BulkFunctions BulkStreamF BulkBlockF BulkNoneFIVKeycipherKeyBlockSizecipherExchangeNeedMoreData $fEqCipher $fShowCipherhasHelloExtensionshasExplicitBlockIVrunGet getWords8 getWord16 getWords16 getWord24 getOpaque8 getOpaque16 getOpaque24 processBytes putWords8 putWord16 putWords16 putWord24putBytes putOpaque8 putOpaque16 putOpaque24 encodeWord16 encodeWord64cereal-0.3.5.2Data.Serialize.GetgetWord8getBytesisEmpty remainingGetData.Serialize.PutputWord8runPutPutcParamsVersioncParamsKeyXchgTypePRF CurrentParams runGetErr getVersion putVersion getHeaderType putHeaderTypegetHandshakeType decodeHeader encodeHeaderencodeHeaderNoVer decodeAlert decodeAlerts encodeAlertsdecodeHandshakeHeaderdecodeHandshakesdecodeHandshakedecodeHelloRequestdecodeClientHellodecodeServerHellodecodeServerHelloDonedecodeCertificatesdecodeFinishedgetSignatureHashAlgorithmgetSignatureHashAlgorithmsdecodeCertRequestdecodeCertVerifydecodeClientKeyXchgos2ipdecodeServerKeyXchg_DHdecodeServerKeyXchg_RSAdecodeServerKeyXchgencodeHandshakeencodeHandshakesencodeHandshakeHeaderencodeHandshakeContent getRandom32getServerRandom32getClientRandom32 putRandom32putClientRandom32putServerRandom32 getSession putSessiongetCertsputCert getExtensions putExtension putExtensionsdecodeChangeCipherSpecencodeChangeCipherSpecdecodeExtSecureRenegotiationencodeExtSecureRenegotiationdecodePreMasterSecretencodePreMasterSecretgenerateMasterSecret_SSLgenerateMasterSecret_TLSgenerateMasterSecretgenerateKeyBlock_TLSgenerateKeyBlock_SSLgenerateKeyBlockgenerateFinished_TLSgenerateFinished_SSLgenerateClientFinishedgenerateServerFinishedand'&&!bytesEqsubtakelast partition3 partition6fromJustTLSStrunTLSStTLSStatestClientContext stVersion stHandshake stSessionstSessionResuming stTxEncrypted stRxEncryptedstTxCryptStatestRxCryptState stTxMacState stRxMacStatestCipher stCompression stRandomGenstSecureRenegotiationstClientVerifiedDatastServerVerifiedDataStateRNGTLSHandshakeStatehstClientVersionhstClientRandomhstServerRandomhstMasterSecrethstRSAPublicKeyhstRSAPrivateKeyhstHandshakeDigest TLSMacState msSequence TLSCryptStatecstKeycstIV cstMacSecretassert runTLSState newTLSState withTLSRNGwithCompression genTLSRandom makeDigestupdateVerifiedDatafinishHandshakeTypeMaterialfinishHandshakeMaterialswitchTxEncryptionswitchRxEncryptionsetServerRandomsetMasterSecretsetMasterSecretFromPre setPublicKey setPrivateKeygetSessionData setSessionisSessionResumingneedEmptyPacket setKeyBlock setCipher setVersionsetSecureRenegotiationgetSecureRenegotiationgetCipherKeyExchangeTypegetVerifiedDataisClientContextnewEmptyHandshakestartHandshakeClienthasValidHandshakeupdateHandshakeupdateHandshakeDigestgetHandshakeDigest endHandshake$fMonadStateTLSStateTLSSt$fFunctorTLSSt$fShowStateRNGctxEOF_ctxEstablished_ ctxParamsctxStatectxMeasurementctxConnectionFlushctxConnectionSendctxConnectionRecv updateMeasure withMeasureconnectionFlushconnectionSendconnectionRecvctxEOFsetEOFctxEstablishedsetEstablished ctxLogging newCtxWithnewCtx throwCore usingState usingState_ getStateRNG$fShowTLSParamsRecordfragmentCompressfragmentCipherfragmentUncipherfragmentUncompress recordToRaw rawToRecordrecordToHeader Ciphertext Compressed PlaintextFragmentfragmentPlaintextfragmentCiphertextfragmentGetBytesonRecordFragment fragmentMap engageRecordcompressRecord encryptRecordencryptContent encryptDatadisengageRecorduncompressRecord decryptRecord getCipherData decryptData returnEither processPacketprocessHandshake decryptRSAprocessServerHelloprocessClientKeyXchgprocessClientFinishedprocessCertificates makeRecord processRecordpostprocessRecord encodeRecordpreProcessPacket writePacket encryptRSAwritePacketContent recvPacket sendPackethandshakeTerminate RecvState RecvStateDoneRecvStateHandshake RecvStateNext errorToAlerthandshakeFailed checkValid readExact recvRecordrecvPacketHandshake runRecvStatesendChangeCipherAndFinishrecvChangeCipherAndFinish unexpected newSessionhandshakeClienthandshakeServerWithhandshakeServer#$fExceptionConnectionNotEstablished$fExceptionHandshakeFailed