Pure, bounded decoder for TLS 1.3 ServerHello and HelloRetryRequest messages.
The input starts at a handshake header. A successful decode retains the exact consumed bytes and returns any concatenated handshake bytes as the remainder.
Summary
Types
@type expectations() :: %{ :legacy_session_id => binary(), optional(:offered_versions) => [0..65535], :offered_ciphers => [0..65535], :offered_groups => [0..65535], :offered_key_share_groups => [0..65535], :offered_extension_ids => [0..65535], :offered_psk_key_exchange_modes => [0 | 1], optional(:offered_psk_count) => non_neg_integer() }
@type extension() :: {:supported_versions, 772} | {:key_share, %{group: 0..65535, key_exchange: binary()}} | {:selected_group, 0..65535} | {:pre_shared_key, non_neg_integer()} | {:cookie, binary()}
@type kind() :: :server_hello | :hello_retry_request