tls

Transport Layer Security purely in OCaml
Library tls
Module Tls . Packet
val get_uint24_len : Cstruct.t -> int
val set_uint24_len : Cstruct.t -> int -> unit
type content_type =
| CHANGE_CIPHER_SPEC
| ALERT
| HANDSHAKE
| APPLICATION_DATA
| HEARTBEAT
val int_to_content_type : int -> content_type option
val content_type_to_int : content_type -> int
val compare_content_type : content_type -> content_type -> int
val content_type_to_string : content_type -> string
val string_to_content_type : string -> content_type option
val sexp_of_content_type : content_type -> Sexplib.Sexp.t
val content_type_of_sexp : Sexplib.Sexp.t -> content_type
type alert_level =
| WARNING
| FATAL
val int_to_alert_level : int -> alert_level option
val alert_level_to_int : alert_level -> int
val compare_alert_level : alert_level -> alert_level -> int
val alert_level_to_string : alert_level -> string
val string_to_alert_level : string -> alert_level option
val sexp_of_alert_level : alert_level -> Sexplib.Sexp.t
val alert_level_of_sexp : Sexplib.Sexp.t -> alert_level
type alert_type =
| CLOSE_NOTIFY
| UNEXPECTED_MESSAGE
| BAD_RECORD_MAC
| DECRYPTION_FAILED
| RECORD_OVERFLOW
| DECOMPRESSION_FAILURE
| HANDSHAKE_FAILURE
| NO_CERTIFICATE_RESERVED
| BAD_CERTIFICATE
| UNSUPPORTED_CERTIFICATE
| CERTIFICATE_REVOKED
| CERTIFICATE_EXPIRED
| CERTIFICATE_UNKNOWN
| ILLEGAL_PARAMETER
| UNKNOWN_CA
| ACCESS_DENIED
| DECODE_ERROR
| DECRYPT_ERROR
| EXPORT_RESTRICTION_RESERVED
| PROTOCOL_VERSION
| INSUFFICIENT_SECURITY
| INTERNAL_ERROR
| INAPPROPRIATE_FALLBACK
| USER_CANCELED
| NO_RENEGOTIATION
| MISSING_EXTENSION
| UNSUPPORTED_EXTENSION
| CERTIFICATE_UNOBTAINABLE
| UNRECOGNIZED_NAME
| BAD_CERTIFICATE_STATUS_RESPONSE
| BAD_CERTIFICATE_HASH_VALUE
| UNKNOWN_PSK_IDENTITY
| CERTIFICATE_REQUIRED
| NO_APPLICATION_PROTOCOL
val int_to_alert_type : int -> alert_type option
val alert_type_to_int : alert_type -> int
val compare_alert_type : alert_type -> alert_type -> int
val alert_type_to_string : alert_type -> string
val string_to_alert_type : string -> alert_type option
val sexp_of_alert_type : alert_type -> Sexplib.Sexp.t
val alert_type_of_sexp : Sexplib.Sexp.t -> alert_type
type handshake_type =
| HELLO_REQUEST
| CLIENT_HELLO
| SERVER_HELLO
| HELLO_VERIFY_REQUEST
| SESSION_TICKET
| END_OF_EARLY_DATA
| ENCRYPTED_EXTENSIONS
| CERTIFICATE
| SERVER_KEY_EXCHANGE
| CERTIFICATE_REQUEST
| SERVER_HELLO_DONE
| CERTIFICATE_VERIFY
| CLIENT_KEY_EXCHANGE
| FINISHED
| CERTIFICATE_URL
| CERTIFICATE_STATUS
| SUPPLEMENTAL_DATA
| KEY_UPDATE
| MESSAGE_HASH
val int_to_handshake_type : int -> handshake_type option
val handshake_type_to_int : handshake_type -> int
val compare_handshake_type : handshake_type -> handshake_type -> int
val handshake_type_to_string : handshake_type -> string
val string_to_handshake_type : string -> handshake_type option
val sexp_of_handshake_type : handshake_type -> Sexplib.Sexp.t
val handshake_type_of_sexp : Sexplib.Sexp.t -> handshake_type
type client_certificate_type =
| RSA_SIGN
| DSS_SIGN
| RSA_FIXED_DH
| DSS_FIXED_DH
| RSA_EPHEMERAL_DH_RESERVED
| DSS_EPHEMERAL_DH_RESERVED
| FORTEZZA_DMS_RESERVED
| ECDSA_SIGN
| RSA_FIXED_ECDH
| ECDSA_FIXED_ECDH
val int_to_client_certificate_type : int -> client_certificate_type option
val client_certificate_type_to_int : client_certificate_type -> int
val compare_client_certificate_type : client_certificate_type -> client_certificate_type -> int
val client_certificate_type_to_string : client_certificate_type -> string
val string_to_client_certificate_type : string -> client_certificate_type option
val sexp_of_client_certificate_type : client_certificate_type -> Sexplib.Sexp.t
val client_certificate_type_of_sexp : Sexplib.Sexp.t -> client_certificate_type
type compression_method =
| NULL
| DEFLATE
| LZS
val int_to_compression_method : int -> compression_method option
val compression_method_to_int : compression_method -> int
val compare_compression_method : compression_method -> compression_method -> int
val compression_method_to_string : compression_method -> string
val string_to_compression_method : string -> compression_method option
val sexp_of_compression_method : compression_method -> Sexplib.Sexp.t
val compression_method_of_sexp : Sexplib.Sexp.t -> compression_method
type extension_type =
| SERVER_NAME
| MAX_FRAGMENT_LENGTH
| CLIENT_CERTIFICATE_URL
| TRUSTED_CA_KEYS
| TRUNCATED_HMAC
| STATUS_REQUEST
| USER_MAPPING
| CLIENT_AUTHZ
| SERVER_AUTHZ
| CERT_TYPE
| SUPPORTED_GROUPS
| EC_POINT_FORMATS
| SRP
| SIGNATURE_ALGORITHMS
| USE_SRTP
| HEARTBEAT
| APPLICATION_LAYER_PROTOCOL_NEGOTIATION
| STATUS_REQUEST_V2
| SIGNED_CERTIFICATE_TIMESTAMP
| CLIENT_CERTIFICATE_TYPE
| SERVER_CERTIFICATE_TYPE
| PADDING
| ENCRYPT_THEN_MAC
| EXTENDED_MASTER_SECRET
| TOKEN_BINDING
| CACHED_INFO
| TLS_LTS
| COMPRESSED_CERTIFICATE
| RECORD_SIZE_LIMIT
| PWD_PROTECT
| PWD_CLEAR
| PASSWORD_SALT
| SESSION_TICKET
| PRE_SHARED_KEY
| EARLY_DATA
| SUPPORTED_VERSIONS
| COOKIE
| PSK_KEY_EXCHANGE_MODES
| CERTIFICATE_AUTHORITIES
| OID_FILTERS
| POST_HANDSHAKE_AUTH
| SIGNATURE_ALGORITHMS_CERT
| KEY_SHARE
| RENEGOTIATION_INFO
| DRAFT_SUPPORT
val int_to_extension_type : int -> extension_type option
val extension_type_to_int : extension_type -> int
val compare_extension_type : extension_type -> extension_type -> int
val extension_type_to_string : extension_type -> string
val string_to_extension_type : string -> extension_type option
val sexp_of_extension_type : extension_type -> Sexplib.Sexp.t
val extension_type_of_sexp : Sexplib.Sexp.t -> extension_type
type max_fragment_length =
| TWO_9
| TWO_10
| TWO_11
| TWO_12
val int_to_max_fragment_length : int -> max_fragment_length option
val max_fragment_length_to_int : max_fragment_length -> int
val compare_max_fragment_length : max_fragment_length -> max_fragment_length -> int
val max_fragment_length_to_string : max_fragment_length -> string
val string_to_max_fragment_length : string -> max_fragment_length option
val sexp_of_max_fragment_length : max_fragment_length -> Sexplib.Sexp.t
val max_fragment_length_of_sexp : Sexplib.Sexp.t -> max_fragment_length
type psk_key_exchange_mode =
| PSK_KE
| PSK_KE_DHE
val int_to_psk_key_exchange_mode : int -> psk_key_exchange_mode option
val psk_key_exchange_mode_to_int : psk_key_exchange_mode -> int
val compare_psk_key_exchange_mode : psk_key_exchange_mode -> psk_key_exchange_mode -> int
val psk_key_exchange_mode_to_string : psk_key_exchange_mode -> string
val string_to_psk_key_exchange_mode : string -> psk_key_exchange_mode option
val sexp_of_psk_key_exchange_mode : psk_key_exchange_mode -> Sexplib.Sexp.t
val psk_key_exchange_mode_of_sexp : Sexplib.Sexp.t -> psk_key_exchange_mode
type signature_alg =
| RSA_PKCS1_MD5
| RSA_PKCS1_SHA1
| RSA_PKCS1_SHA224
| RSA_PKCS1_SHA256
| RSA_PKCS1_SHA384
| RSA_PKCS1_SHA512
| ECDSA_SECP256R1_SHA1
| ECDSA_SECP256R1_SHA256
| ECDSA_SECP384R1_SHA384
| ECDSA_SECP521R1_SHA512
| RSA_PSS_RSAENC_SHA256
| RSA_PSS_RSAENC_SHA384
| RSA_PSS_RSAENC_SHA512
| ED25519
| ED448
| RSA_PSS_PSS_SHA256
| RSA_PSS_PSS_SHA384
| RSA_PSS_PSS_SHA512
val int_to_signature_alg : int -> signature_alg option
val signature_alg_to_int : signature_alg -> int
val compare_signature_alg : signature_alg -> signature_alg -> int
val signature_alg_to_string : signature_alg -> string
val string_to_signature_alg : string -> signature_alg option
val sexp_of_signature_alg : signature_alg -> Sexplib.Sexp.t
val signature_alg_of_sexp : Sexplib.Sexp.t -> signature_alg
val to_signature_alg : [< `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 ] -> signature_alg
val of_signature_alg : signature_alg -> [> `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 ] option
type ec_curve_type =
| NAMED_CURVE
val int_to_ec_curve_type : int -> ec_curve_type option
val ec_curve_type_to_int : ec_curve_type -> int
val compare_ec_curve_type : ec_curve_type -> ec_curve_type -> int
val ec_curve_type_to_string : ec_curve_type -> string
val string_to_ec_curve_type : string -> ec_curve_type option
val sexp_of_ec_curve_type : ec_curve_type -> Sexplib.Sexp.t
val ec_curve_type_of_sexp : Sexplib.Sexp.t -> ec_curve_type
type named_group =
| SECP256R1
| SECP384R1
| SECP521R1
| X25519
| X448
| FFDHE2048
| FFDHE3072
| FFDHE4096
| FFDHE6144
| FFDHE8192
val int_to_named_group : int -> named_group option
val named_group_to_int : named_group -> int
val compare_named_group : named_group -> named_group -> int
val named_group_to_string : named_group -> string
val string_to_named_group : string -> named_group option
val sexp_of_named_group : named_group -> Sexplib.Sexp.t
val named_group_of_sexp : Sexplib.Sexp.t -> named_group
type any_ciphersuite =
| TLS_NULL_WITH_NULL_NULL
| TLS_RSA_WITH_NULL_MD5
| TLS_RSA_WITH_NULL_SHA
| TLS_RSA_WITH_IDEA_CBC_SHA
| TLS_RSA_WITH_DES_CBC_SHA
| TLS_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_DH_DSS_WITH_DES_CBC_SHA
| TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
| TLS_DH_RSA_WITH_DES_CBC_SHA
| TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_DHE_DSS_WITH_DES_CBC_SHA
| TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
| TLS_DHE_RSA_WITH_DES_CBC_SHA
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_DH_anon_WITH_DES_CBC_SHA
| TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
| RESERVED_SSL3_1
| RESERVED_SSL3_2
| TLS_PSK_WITH_NULL_SHA
| TLS_DHE_PSK_WITH_NULL_SHA
| TLS_RSA_PSK_WITH_NULL_SHA
| TLS_RSA_WITH_AES_128_CBC_SHA
| TLS_DH_DSS_WITH_AES_128_CBC_SHA
| TLS_DH_RSA_WITH_AES_128_CBC_SHA
| TLS_DHE_DSS_WITH_AES_128_CBC_SHA
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA
| TLS_DH_anon_WITH_AES_128_CBC_SHA
| TLS_RSA_WITH_AES_256_CBC_SHA
| TLS_DH_DSS_WITH_AES_256_CBC_SHA
| TLS_DH_RSA_WITH_AES_256_CBC_SHA
| TLS_DHE_DSS_WITH_AES_256_CBC_SHA
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA
| TLS_DH_anon_WITH_AES_256_CBC_SHA
| TLS_RSA_WITH_NULL_SHA256
| TLS_RSA_WITH_AES_128_CBC_SHA256
| TLS_RSA_WITH_AES_256_CBC_SHA256
| TLS_DH_DSS_WITH_AES_128_CBC_SHA256
| TLS_DH_RSA_WITH_AES_128_CBC_SHA256
| TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
| TLS_DH_DSS_WITH_AES_256_CBC_SHA256
| TLS_DH_RSA_WITH_AES_256_CBC_SHA256
| TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
| TLS_DH_anon_WITH_AES_128_CBC_SHA256
| TLS_DH_anon_WITH_AES_256_CBC_SHA256
| TLS_PSK_WITH_3DES_EDE_CBC_SHA
| TLS_PSK_WITH_AES_128_CBC_SHA
| TLS_PSK_WITH_AES_256_CBC_SHA
| TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
| TLS_DHE_PSK_WITH_AES_128_CBC_SHA
| TLS_DHE_PSK_WITH_AES_256_CBC_SHA
| TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
| TLS_RSA_PSK_WITH_AES_128_CBC_SHA
| TLS_RSA_PSK_WITH_AES_256_CBC_SHA
| TLS_RSA_WITH_SEED_CBC_SHA
| TLS_DH_DSS_WITH_SEED_CBC_SHA
| TLS_DH_RSA_WITH_SEED_CBC_SHA
| TLS_DHE_DSS_WITH_SEED_CBC_SHA
| TLS_DHE_RSA_WITH_SEED_CBC_SHA
| TLS_DH_anon_WITH_SEED_CBC_SHA
| TLS_RSA_WITH_AES_128_GCM_SHA256
| TLS_RSA_WITH_AES_256_GCM_SHA384
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
| TLS_DH_RSA_WITH_AES_128_GCM_SHA256
| TLS_DH_RSA_WITH_AES_256_GCM_SHA384
| TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
| TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
| TLS_DH_DSS_WITH_AES_128_GCM_SHA256
| TLS_DH_DSS_WITH_AES_256_GCM_SHA384
| TLS_DH_anon_WITH_AES_128_GCM_SHA256
| TLS_DH_anon_WITH_AES_256_GCM_SHA384
| TLS_PSK_WITH_AES_128_GCM_SHA256
| TLS_PSK_WITH_AES_256_GCM_SHA384
| TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
| TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
| TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
| TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
| TLS_PSK_WITH_AES_128_CBC_SHA256
| TLS_PSK_WITH_AES_256_CBC_SHA384
| TLS_PSK_WITH_NULL_SHA256
| TLS_PSK_WITH_NULL_SHA384
| TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
| TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
| TLS_DHE_PSK_WITH_NULL_SHA256
| TLS_DHE_PSK_WITH_NULL_SHA384
| TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
| TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
| TLS_RSA_PSK_WITH_NULL_SHA256
| TLS_RSA_PSK_WITH_NULL_SHA384
| TLS_EMPTY_RENEGOTIATION_INFO_SCSV
| TLS_AES_128_GCM_SHA256
| TLS_AES_256_GCM_SHA384
| TLS_CHACHA20_POLY1305_SHA256
| TLS_AES_128_CCM_SHA256
| TLS_AES_128_CCM_8_SHA256
| TLS_FALLBACK_SCSV
| TLS_ECDH_ECDSA_WITH_NULL_SHA
| TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
| TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
| TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
| TLS_ECDHE_ECDSA_WITH_NULL_SHA
| TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
| TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
| TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
| TLS_ECDH_RSA_WITH_NULL_SHA
| TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
| TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
| TLS_ECDHE_RSA_WITH_NULL_SHA
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
| TLS_ECDH_anon_WITH_NULL_SHA
| TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
| TLS_ECDH_anon_WITH_AES_128_CBC_SHA
| TLS_ECDH_anon_WITH_AES_256_CBC_SHA
| TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA
| TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA
| TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA
| TLS_SRP_SHA_WITH_AES_128_CBC_SHA
| TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA
| TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA
| TLS_SRP_SHA_WITH_AES_256_CBC_SHA
| TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA
| TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA
| TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
| TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
| TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
| TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
| TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
| TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
| TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
| TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
| TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
| TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
| TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
| TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
| TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
| TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
| TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
| TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
| TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
| TLS_ECDHE_PSK_WITH_NULL_SHA
| TLS_ECDHE_PSK_WITH_NULL_SHA256
| TLS_ECDHE_PSK_WITH_NULL_SHA384
| TLS_RSA_WITH_AES_128_CCM
| TLS_RSA_WITH_AES_256_CCM
| TLS_DHE_RSA_WITH_AES_128_CCM
| TLS_DHE_RSA_WITH_AES_256_CCM
| TLS_RSA_WITH_AES_128_CCM_8
| TLS_RSA_WITH_AES_256_CCM_8
| TLS_DHE_RSA_WITH_AES_128_CCM_8
| TLS_DHE_RSA_WITH_AES_256_CCM_8
| TLS_PSK_WITH_AES_128_CCM
| TLS_PSK_WITH_AES_256_CCM
| TLS_DHE_PSK_WITH_AES_128_CCM
| TLS_DHE_PSK_WITH_AES_256_CCM
| TLS_PSK_WITH_AES_128_CCM_8
| TLS_PSK_WITH_AES_256_CCM_8
| TLS_DHE_PSK_WITH_AES_128_CCM_8
| TLS_DHE_PSK_WITH_AES_256_CCM_8
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
| TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
| TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
| TLS_PSK_WITH_CHACHA20_POLY1305_SHA256
| TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256
| TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256
| TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256
| TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256
| TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384
| TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256
| TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256
| TLS_ECDHE_PSK_WITH_AES_256_CCM_SHA384
val int_to_any_ciphersuite : int -> any_ciphersuite option
val any_ciphersuite_to_int : any_ciphersuite -> int
val compare_any_ciphersuite : any_ciphersuite -> any_ciphersuite -> int
val any_ciphersuite_to_string : any_ciphersuite -> string
val string_to_any_ciphersuite : string -> any_ciphersuite option
val sexp_of_any_ciphersuite : any_ciphersuite -> Sexplib.Sexp.t
val any_ciphersuite_of_sexp : Sexplib.Sexp.t -> any_ciphersuite
type key_update_request_type =
| UPDATE_NOT_REQUESTED
| UPDATE_REQUESTED
val int_to_key_update_request_type : int -> key_update_request_type option
val key_update_request_type_to_int : key_update_request_type -> int
val compare_key_update_request_type : key_update_request_type -> key_update_request_type -> int
val key_update_request_type_to_string : key_update_request_type -> string
val string_to_key_update_request_type : string -> key_update_request_type option
val sexp_of_key_update_request_type : key_update_request_type -> Sexplib.Sexp.t
val key_update_request_type_of_sexp : Sexplib.Sexp.t -> key_update_request_type
val helloretryrequest : Mirage_crypto.Hash.digest
val downgrade12 : Cstruct.t
val downgrade11 : Cstruct.t