val string_of_extensionType : _: MiTLS.Parsers.ExtensionType.extensionType -> Prims.string
let string_of_extensionType = function
  | Server_name -> "server_name"
  | Max_fragment_length -> "max_fragment_length"
  | Status_request -> "status_request"
  | Supported_groups -> "supported_groups"
  | Ec_point_formats -> "ec_point_formats"
  | Signature_algorithms -> "signature_algorithms"
  | Use_srtp -> "use_srtp"
  | Heartbeat -> "heartbeat"
  | Application_layer_protocol_negotiation -> "application_layer_protocol_negotiation"
  | Signed_certificate_timestamp -> "signed_certificate_timestamp"
  | Client_certificate_type -> "client_certificate_type"
  | Server_certificate_type -> "server_certificate_type"
  | Padding -> "padding"
  | Encrypt_then_mac -> "encrypt_then_mac"
  | Extended_master_secret -> "extended_master_secret"
  | Session_ticket -> "session_ticket"
  | Pre_shared_key -> "pre_shared_key"
  | Early_data -> "early_data"
  | Supported_versions -> "supported_versions"
  | Cookie -> "cookie"
  | Psk_key_exchange_modes -> "psk_key_exchange_modes"
  | Certificate_authorities -> "certificate_authorities"
  | Oid_filters -> "oid_filters"
  | Post_handshake_auth -> "post_handshake_auth"
  | Signature_algorithms_cert -> "signature_algorithms_cert"
  | Key_share -> "key_share"
  | Unknown_extensionType _ -> "Unknown_extensionType"
module MiTLS.Parsers.ExtensionType

(* This file has been automatically generated by EverParse. *)
open FStar.Bytes
module U8 = FStar.UInt8
module U16 = FStar.UInt16
module U32 = FStar.UInt32
module U64 = FStar.UInt64
module LP = LowParse.Spec.Base
module LS = LowParse.SLow.Base
module LSZ = LowParse.SLow.Base
module LPI = LowParse.Spec.AllIntegers
module LL = LowParse.Low.Base
module L = FStar.List.Tot
module B = LowStar.Buffer
module BY = FStar.Bytes
module HS = FStar.HyperStack
module HST = FStar.HyperStack.ST


let extensionType_repr = U16.t
inline_for_extraction let extensionType_repr_eq (x1 x2: extensionType_repr) : Tot bool = (x1 = x2)
let known_extensionType_repr (v:U16.t) : bool = v `extensionType_repr_eq` 0us || (v `extensionType_repr_eq` 1us || (v `extensionType_repr_eq` 5us || (v `extensionType_repr_eq` 10us || (v `extensionType_repr_eq` 11us || (v `extensionType_repr_eq` 13us || (v `extensionType_repr_eq` 14us || (v `extensionType_repr_eq` 15us || (v `extensionType_repr_eq` 16us || (v `extensionType_repr_eq` 18us || (v `extensionType_repr_eq` 19us || (v `extensionType_repr_eq` 20us || (v `extensionType_repr_eq` 21us || (v `extensionType_repr_eq` 22us || (v `extensionType_repr_eq` 23us || (v `extensionType_repr_eq` 35us || (v `extensionType_repr_eq` 41us || (v `extensionType_repr_eq` 42us || (v `extensionType_repr_eq` 43us || (v `extensionType_repr_eq` 44us || (v `extensionType_repr_eq` 45us || (v `extensionType_repr_eq` 47us || (v `extensionType_repr_eq` 48us || (v `extensionType_repr_eq` 49us || (v `extensionType_repr_eq` 50us || (v `extensionType_repr_eq` 51us || (false))))))))))))))))))))))))))

type extensionType =
  | Server_name
  | Max_fragment_length
  | Status_request
  | Supported_groups
  | Ec_point_formats
  | Signature_algorithms
  | Use_srtp
  | Heartbeat
  | Application_layer_protocol_negotiation
  | Signed_certificate_timestamp
  | Client_certificate_type
  | Server_certificate_type
  | Padding
  | Encrypt_then_mac
  | Extended_master_secret
  | 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
  | Unknown_extensionType of (v:U16.t{not (known_extensionType_repr v)})
/
prims.fst.checked LowStar.Buffer.fst.checked LowParse.Spec.Base.fsti.checked LowParse.Spec.AllIntegers.fst.checked LowParse.SLow.Base.fst.checked LowParse.Low.Base.fst.checked FStar.UInt8.fsti.checked FStar.UInt64.fsti.checked FStar.UInt32.fsti.checked FStar.UInt16.fsti.checked FStar.Seq.fst.checked FStar.Pervasives.fsti.checked FStar.List.Tot.fst.checked FStar.HyperStack.ST.fsti.checked FStar.HyperStack.fst.checked FStar.Bytes.fsti.checked
MiTLS.Parsers.ExtensionType.fsti
_: MiTLS.Parsers.ExtensionType.extensionType -> Prims.string
MiTLS.Parsers.ExtensionType.extensionType FStar.UInt16.t Prims.b2t Prims.op_Negation MiTLS.Parsers.ExtensionType.known_extensionType_repr Prims.string
let string_of_extensionType =
  
function
| Server_name -> "server_name"
| Max_fragment_length -> "max_fragment_length"
| Status_request -> "status_request"
| Supported_groups -> "supported_groups"
| Ec_point_formats -> "ec_point_formats"
| Signature_algorithms -> "signature_algorithms"
| Use_srtp -> "use_srtp"
| Heartbeat -> "heartbeat"
| Application_layer_protocol_negotiation -> "application_layer_protocol_negotiation"
| Signed_certificate_timestamp -> "signed_certificate_timestamp"
| Client_certificate_type -> "client_certificate_type"
| Server_certificate_type -> "server_certificate_type"
| Padding -> "padding"
| Encrypt_then_mac -> "encrypt_then_mac"
| Extended_master_secret -> "extended_master_secret"
| Session_ticket -> "session_ticket"
| Pre_shared_key -> "pre_shared_key"
| Early_data -> "early_data"
| Supported_versions -> "supported_versions"
| Cookie -> "cookie"
| Psk_key_exchange_modes -> "psk_key_exchange_modes"
| Certificate_authorities -> "certificate_authorities"
| Oid_filters -> "oid_filters"
| Post_handshake_auth -> "post_handshake_auth"
| Signature_algorithms_cert -> "signature_algorithms_cert"
| Key_share -> "key_share"
| Unknown_extensionType _ -> "Unknown_extensionType"