type hmac_key = Cstruct.t
type iv_mode =
| Iv of Cstruct.t
| Random_iv
type 'k cbc_cipher =
(module Mirage_crypto.Cipher_block.S.CBC
with type key = 'k)
type 'k cbc_state = {
cipher : 'k cbc_cipher;
cipher_secret : 'k;
iv_mode : iv_mode;
hmac : Mirage_crypto.Hash.hash;
hmac_secret : hmac_key;
}
type 'k aead_cipher = (module Mirage_crypto.AEAD with type key = 'k)
type 'k aead_state = {
cipher : 'k aead_cipher;
cipher_secret : 'k;
nonce : nonce;
explicit_nonce : bool;
}
type crypto_context = {
sequence : int64;
cipher_st : cipher_st;
}
type hs_log = Cstruct.t list
type dh_secret = [
| `Finite_field of Mirage_crypto_pk.Dh.secret
| `P256 of Mirage_crypto_ec.P256.Dh.secret
| `P384 of Mirage_crypto_ec.P384.Dh.secret
| `P521 of Mirage_crypto_ec.P521.Dh.secret
| `X25519 of Mirage_crypto_ec.X25519.secret
]
type reneg_params = Cstruct.t * Cstruct.t
type common_session_data = {
server_random : Cstruct.t;
client_random : Cstruct.t;
peer_certificate_chain : X509.Certificate.t list;
peer_certificate : X509.Certificate.t option;
trust_anchor : X509.Certificate.t option;
received_certificates : X509.Certificate.t list;
own_certificate : X509.Certificate.t list;
own_private_key : X509.Private_key.t option;
own_name : [ `host ] Domain_name.t option;
client_auth : bool;
master_secret : Core.master_secret;
alpn_protocol : string option;
}
type error = [
| `AuthenticationFailure of X509.Validation.validation_error
| `NoConfiguredCiphersuite of Ciphersuite.ciphersuite list
| `NoConfiguredVersions of Core.tls_version list
| `NoConfiguredSignatureAlgorithm of Core.signature_algorithm list
| `NoMatchingCertificateFound of string
| `NoCertificateConfigured
| `CouldntSelectCertificate
]
val pp_error :
Stdlib.Format.formatter ->
[< `AuthenticationFailure of X509.Validation.validation_error
| `CouldntSelectCertificate
| `NoCertificateConfigured
| `NoConfiguredCiphersuite of
[< `AES_128_CCM_SHA256
| `AES_128_GCM_SHA256
| `AES_256_GCM_SHA384
| `CHACHA20_POLY1305_SHA256
| `DHE_RSA_WITH_3DES_EDE_CBC_SHA
| `DHE_RSA_WITH_AES_128_CBC_SHA
| `DHE_RSA_WITH_AES_128_CBC_SHA256
| `DHE_RSA_WITH_AES_128_CCM
| `DHE_RSA_WITH_AES_128_GCM_SHA256
| `DHE_RSA_WITH_AES_256_CBC_SHA
| `DHE_RSA_WITH_AES_256_CBC_SHA256
| `DHE_RSA_WITH_AES_256_CCM
| `DHE_RSA_WITH_AES_256_GCM_SHA384
| `DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
| `ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
| `ECDHE_ECDSA_WITH_AES_128_CBC_SHA
| `ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
| `ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
| `ECDHE_ECDSA_WITH_AES_256_CBC_SHA
| `ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
| `ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
| `ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
| `ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
| `ECDHE_RSA_WITH_AES_128_CBC_SHA
| `ECDHE_RSA_WITH_AES_128_CBC_SHA256
| `ECDHE_RSA_WITH_AES_128_GCM_SHA256
| `ECDHE_RSA_WITH_AES_256_CBC_SHA
| `ECDHE_RSA_WITH_AES_256_CBC_SHA384
| `ECDHE_RSA_WITH_AES_256_GCM_SHA384
| `ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
| `RSA_WITH_3DES_EDE_CBC_SHA
| `RSA_WITH_AES_128_CBC_SHA
| `RSA_WITH_AES_128_CBC_SHA256
| `RSA_WITH_AES_128_CCM
| `RSA_WITH_AES_128_GCM_SHA256
| `RSA_WITH_AES_256_CBC_SHA
| `RSA_WITH_AES_256_CBC_SHA256
| `RSA_WITH_AES_256_CCM
| `RSA_WITH_AES_256_GCM_SHA384 AES_128_CCM_SHA256 AES_128_GCM_SHA256 AES_256_GCM_SHA384 CHACHA20_POLY1305_SHA256 ]
list
| `NoConfiguredSignatureAlgorithm of
[< `ECDSA_SECP256R1_SHA1
| `ECDSA_SECP256R1_SHA256
| `ECDSA_SECP384R1_SHA384
| `ECDSA_SECP521R1_SHA512
| `ED25519
| `RSA_PKCS1_MD5
| `RSA_PKCS1_SHA1
| `RSA_PKCS1_SHA224
| `RSA_PKCS1_SHA256
| `RSA_PKCS1_SHA384
| `RSA_PKCS1_SHA512
| `RSA_PSS_RSAENC_SHA256
| `RSA_PSS_RSAENC_SHA384
| `RSA_PSS_RSAENC_SHA512 ECDSA_SECP256R1_SHA1 ECDSA_SECP256R1_SHA256 ECDSA_SECP384R1_SHA384 ECDSA_SECP521R1_SHA512 ]
list
| `NoConfiguredVersions of
[< `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 ] list
| `NoMatchingCertificateFound of string ] ->
unit
val pp_client_hello_error :
Stdlib.Format.formatter ->
[< `EmptyCiphersuites
| `Has0rttAfterHRR
| `NoCookie
| `NoGoodSignatureAlgorithms of
[< `ECDSA_SECP256R1_SHA1
| `ECDSA_SECP256R1_SHA256
| `ECDSA_SECP384R1_SHA384
| `ECDSA_SECP521R1_SHA512
| `ED25519
| `RSA_PKCS1_MD5
| `RSA_PKCS1_SHA1
| `RSA_PKCS1_SHA224
| `RSA_PKCS1_SHA256
| `RSA_PKCS1_SHA384
| `RSA_PKCS1_SHA512
| `RSA_PSS_RSAENC_SHA256
| `RSA_PSS_RSAENC_SHA384
| `RSA_PSS_RSAENC_SHA512 ECDSA_SECP256R1_SHA1 ECDSA_SECP256R1_SHA256 ECDSA_SECP384R1_SHA384 ECDSA_SECP521R1_SHA512 ]
list
| `NoKeyShareExtension
| `NoSignatureAlgorithmsExtension
| `NoSupportedCiphersuite of Packet.any_ciphersuite list
| `NoSupportedGroupExtension
| `NotSetCiphersuites of Packet.any_ciphersuite list
| `NotSetExtension of 'a
| `NotSetKeyShare of (Packet.named_group * 'b) list
| `NotSetSupportedGroup of Packet.named_group list
| `NotSubsetKeyShareSupportedGroup of
Packet.named_group list * (Packet.named_group * 'c) list ] ->
unit
type fatal = [
| `NoSecureRenegotiation
| `NoSupportedGroup
| `NoVersions of Core.tls_any_version list
| `ReaderError of Reader.error
| `NoCertificateReceived
| `NoCertificateVerifyReceived
| `NotRSACertificate
| `KeyTooSmall
| `SignatureVerificationFailed of string
| `SigningFailed of string
| `BadCertificateChain
| `MACMismatch
| `MACUnderflow
| `RecordOverflow of int
| `UnknownRecordVersion of int * int
| `UnknownContentType of int
| `CannotHandleApplicationDataYet
| `NoHeartbeat
| `BadRecordVersion of Core.tls_any_version
| `BadFinished
| `HandshakeFragmentsNotEmpty
| `InsufficientDH
| `InvalidDH
| `BadECDH of Mirage_crypto_ec.error
| `InvalidRenegotiation
| `InvalidClientHello of client_hello_errors
| `InvalidServerHello
| `InvalidRenegotiationVersion of Core.tls_version
| `InappropriateFallback
| `UnexpectedCCS
| `UnexpectedHandshake of Core.tls_handshake
| `InvalidCertificateUsage
| `InvalidCertificateExtendedUsage
| `InvalidSession
| `NoApplicationProtocol
| `HelloRetryRequest
| `InvalidMessage
| `Toomany0rttbytes
| `MissingContentType
| `Downgrade12
| `Downgrade11
| `WriteHalfClosed
]
val pp_fatal :
Stdlib.Format.formatter ->
[< `BadCertificateChain
| `BadECDH of Mirage_crypto_ec.error
| `BadFinished
| `BadRecordVersion of
[< `SSL_3 | `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 | `TLS_1_X of int ]
| `CannotHandleApplicationDataYet
| `Downgrade11
| `Downgrade12
| `HandshakeFragmentsNotEmpty
| `HelloRetryRequest
| `InappropriateFallback
| `InsufficientDH
| `InvalidCertificateExtendedUsage
| `InvalidCertificateUsage
| `InvalidClientHello of
[< `EmptyCiphersuites
| `Has0rttAfterHRR
| `NoCookie
| `NoGoodSignatureAlgorithms of
[< `ECDSA_SECP256R1_SHA1
| `ECDSA_SECP256R1_SHA256
| `ECDSA_SECP384R1_SHA384
| `ECDSA_SECP521R1_SHA512
| `ED25519
| `RSA_PKCS1_MD5
| `RSA_PKCS1_SHA1
| `RSA_PKCS1_SHA224
| `RSA_PKCS1_SHA256
| `RSA_PKCS1_SHA384
| `RSA_PKCS1_SHA512
| `RSA_PSS_RSAENC_SHA256
| `RSA_PSS_RSAENC_SHA384
| `RSA_PSS_RSAENC_SHA512 ECDSA_SECP256R1_SHA1 ECDSA_SECP256R1_SHA256 ECDSA_SECP384R1_SHA384 ECDSA_SECP521R1_SHA512 ]
list
| `NoKeyShareExtension
| `NoSignatureAlgorithmsExtension
| `NoSupportedCiphersuite of Packet.any_ciphersuite list
| `NoSupportedGroupExtension
| `NotSetCiphersuites of Packet.any_ciphersuite list
| `NotSetExtension of 'a
| `NotSetKeyShare of (Packet.named_group * 'b) list
| `NotSetSupportedGroup of Packet.named_group list
| `NotSubsetKeyShareSupportedGroup of
Packet.named_group list * (Packet.named_group * 'c) list ]
| `InvalidDH
| `InvalidMessage
| `InvalidRenegotiation
| `InvalidRenegotiationVersion of
[< `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 ]
| `InvalidServerHello
| `InvalidSession
| `KeyTooSmall
| `MACMismatch
| `MACUnderflow
| `MissingContentType
| `NoApplicationProtocol
| `NoCertificateReceived
| `NoCertificateVerifyReceived
| `NoHeartbeat
| `NoSecureRenegotiation
| `NoSupportedGroup
| `NoVersions of
[< `SSL_3 | `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 | `TLS_1_X of int ]
list
| `NotRSACertificate
| `ReaderError of Reader.error
| `RecordOverflow of int
| `SignatureVerificationFailed of string
| `SigningFailed of string
| `Toomany0rttbytes
| `UnexpectedCCS
| `UnexpectedHandshake of Core.tls_handshake
| `UnknownContentType of int
| `UnknownRecordVersion of int * int
| `WriteHalfClosed ] ->
unit
val pp_failure :
Stdlib.Format.formatter ->
[< `Alert of Packet.alert_type
| `Error of
[< `AuthenticationFailure of X509.Validation.validation_error
| `CouldntSelectCertificate
| `NoCertificateConfigured
| `NoConfiguredCiphersuite of
[< `AES_128_CCM_SHA256
| `AES_128_GCM_SHA256
| `AES_256_GCM_SHA384
| `CHACHA20_POLY1305_SHA256
| `DHE_RSA_WITH_3DES_EDE_CBC_SHA
| `DHE_RSA_WITH_AES_128_CBC_SHA
| `DHE_RSA_WITH_AES_128_CBC_SHA256
| `DHE_RSA_WITH_AES_128_CCM
| `DHE_RSA_WITH_AES_128_GCM_SHA256
| `DHE_RSA_WITH_AES_256_CBC_SHA
| `DHE_RSA_WITH_AES_256_CBC_SHA256
| `DHE_RSA_WITH_AES_256_CCM
| `DHE_RSA_WITH_AES_256_GCM_SHA384
| `DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
| `ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
| `ECDHE_ECDSA_WITH_AES_128_CBC_SHA
| `ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
| `ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
| `ECDHE_ECDSA_WITH_AES_256_CBC_SHA
| `ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
| `ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
| `ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
| `ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
| `ECDHE_RSA_WITH_AES_128_CBC_SHA
| `ECDHE_RSA_WITH_AES_128_CBC_SHA256
| `ECDHE_RSA_WITH_AES_128_GCM_SHA256
| `ECDHE_RSA_WITH_AES_256_CBC_SHA
| `ECDHE_RSA_WITH_AES_256_CBC_SHA384
| `ECDHE_RSA_WITH_AES_256_GCM_SHA384
| `ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
| `RSA_WITH_3DES_EDE_CBC_SHA
| `RSA_WITH_AES_128_CBC_SHA
| `RSA_WITH_AES_128_CBC_SHA256
| `RSA_WITH_AES_128_CCM
| `RSA_WITH_AES_128_GCM_SHA256
| `RSA_WITH_AES_256_CBC_SHA
| `RSA_WITH_AES_256_CBC_SHA256
| `RSA_WITH_AES_256_CCM
| `RSA_WITH_AES_256_GCM_SHA384 AES_128_CCM_SHA256 AES_128_GCM_SHA256 AES_256_GCM_SHA384 CHACHA20_POLY1305_SHA256 ]
list
| `NoConfiguredSignatureAlgorithm of
[< `ECDSA_SECP256R1_SHA1
| `ECDSA_SECP256R1_SHA256
| `ECDSA_SECP384R1_SHA384
| `ECDSA_SECP521R1_SHA512
| `ED25519
| `RSA_PKCS1_MD5
| `RSA_PKCS1_SHA1
| `RSA_PKCS1_SHA224
| `RSA_PKCS1_SHA256
| `RSA_PKCS1_SHA384
| `RSA_PKCS1_SHA512
| `RSA_PSS_RSAENC_SHA256
| `RSA_PSS_RSAENC_SHA384
| `RSA_PSS_RSAENC_SHA512 ECDSA_SECP256R1_SHA1 ECDSA_SECP256R1_SHA256 ECDSA_SECP384R1_SHA384 ECDSA_SECP521R1_SHA512 ]
list
| `NoConfiguredVersions of
[< `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 ] list
| `NoMatchingCertificateFound of string ]
| `Fatal of
[< `BadCertificateChain
| `BadECDH of Mirage_crypto_ec.error
| `BadFinished
| `BadRecordVersion of
[< `SSL_3 | `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 | `TLS_1_X of int ]
| `CannotHandleApplicationDataYet
| `Downgrade11
| `Downgrade12
| `HandshakeFragmentsNotEmpty
| `HelloRetryRequest
| `InappropriateFallback
| `InsufficientDH
| `InvalidCertificateExtendedUsage
| `InvalidCertificateUsage
| `InvalidClientHello of
[< `EmptyCiphersuites
| `Has0rttAfterHRR
| `NoCookie
| `NoGoodSignatureAlgorithms of
[< `ECDSA_SECP256R1_SHA1
| `ECDSA_SECP256R1_SHA256
| `ECDSA_SECP384R1_SHA384
| `ECDSA_SECP521R1_SHA512
| `ED25519
| `RSA_PKCS1_MD5
| `RSA_PKCS1_SHA1
| `RSA_PKCS1_SHA224
| `RSA_PKCS1_SHA256
| `RSA_PKCS1_SHA384
| `RSA_PKCS1_SHA512
| `RSA_PSS_RSAENC_SHA256
| `RSA_PSS_RSAENC_SHA384
| `RSA_PSS_RSAENC_SHA512 ECDSA_SECP256R1_SHA1 ECDSA_SECP256R1_SHA256 ECDSA_SECP384R1_SHA384 ECDSA_SECP521R1_SHA512 ]
list
| `NoKeyShareExtension
| `NoSignatureAlgorithmsExtension
| `NoSupportedCiphersuite of Packet.any_ciphersuite list
| `NoSupportedGroupExtension
| `NotSetCiphersuites of Packet.any_ciphersuite list
| `NotSetExtension of 'a
| `NotSetKeyShare of (Packet.named_group * 'b) list
| `NotSetSupportedGroup of Packet.named_group list
| `NotSubsetKeyShareSupportedGroup of
Packet.named_group list * (Packet.named_group * 'c) list ]
| `InvalidDH
| `InvalidMessage
| `InvalidRenegotiation
| `InvalidRenegotiationVersion of
[< `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 ]
| `InvalidServerHello
| `InvalidSession
| `KeyTooSmall
| `MACMismatch
| `MACUnderflow
| `MissingContentType
| `NoApplicationProtocol
| `NoCertificateReceived
| `NoCertificateVerifyReceived
| `NoHeartbeat
| `NoSecureRenegotiation
| `NoSupportedGroup
| `NoVersions of
[< `SSL_3 | `TLS_1_0 | `TLS_1_1 | `TLS_1_2 | `TLS_1_3 | `TLS_1_X of int ]
list
| `NotRSACertificate
| `ReaderError of Reader.error
| `RecordOverflow of int
| `SignatureVerificationFailed of string
| `SigningFailed of string
| `Toomany0rttbytes
| `UnexpectedCCS
| `UnexpectedHandshake of Core.tls_handshake
| `UnknownContentType of int
| `UnknownRecordVersion of int * int
| `WriteHalfClosed ] ] ->
unit