SSL.ClientHello.WireProfile (ex_ssl v0.16.7)

Copy Markdown View Source

Ordered, declarative configuration for a TLS ClientHello.

This structure contains policy only. Per-connection random values and fresh key exchange material must be supplied by the later materialization stage.

Summary

Types

cipher_suite()

@type cipher_suite() :: atom() | 0..65535 | grease_slot()

extension_spec()

@type extension_spec() ::
  {:server_name, :from_connection}
  | {:supported_groups, [group()]}
  | {:ec_point_formats, [0..255]}
  | {:extended_master_secret, binary()}
  | {:renegotiation_info, binary()}
  | {:signature_algorithms, [term()]}
  | {:signature_algorithms_cert, [term()]}
  | {:alpn, [binary() | grease_slot()]}
  | {:supported_versions, [version()]}
  | {:psk_key_exchange_modes, [atom() | 0..255 | grease_slot()]}
  | {:key_share, [group()]}
  | {:pre_shared_key, term()}
  | {:padding, :none | non_neg_integer() | {:fixed, non_neg_integer()}}
  | {:grease, atom()}
  | {:raw, 0..65535, binary()}

grease_slot()

@type grease_slot() :: {:grease, atom()}

group()

@type group() :: atom() | 0..65535 | grease_slot()

session_id_policy()

@type session_id_policy() :: :random_32 | :empty | {:fixed, binary()}

t()

@type t() :: %SSL.ClientHello.WireProfile{
  cipher_suites: [cipher_suite()],
  compression_methods: [0],
  extensions: [extension_spec()],
  grease: SSL.ClientHello.GreasePolicy.t(),
  legacy_version: 771,
  name: atom() | String.t() | nil,
  record: SSL.ClientHello.RecordPolicy.t(),
  session_id: session_id_policy()
}

version()

@type version() :: atom() | 0..65535 | grease_slot()