# `Quic.Profile`
[🔗](https://github.com/gsmlg-dev/http_fetch/blob/v1.0.0-rc.9/apps/elixir_quic/lib/quic/profile.ex#L1)

Capability-checked client wire policy for Quic.

A profile contains ordered policy only. `SSL.ClientHello.Materializer` keeps
the ClientHello random and key shares fresh for every materialization.
Profile names describe local policy and are not browser identities or hash
targets.

# `name`

```elixir
@type name() :: :ordered | :compact
```

# `t`

```elixir
@type t() :: %{
  name: name(),
  tls: SSL.ClientHello.WireProfile.t(),
  transport_parameters: binary(),
  cid_length: 8..20,
  max_packet_size: pos_integer()
}
```

# `builtins`

Return the two built-in legal policy variants.

# `capabilities`

Convert the current public ex_ssl capability report to profile capabilities.

# `compile`

```elixir
@spec compile(name(), keyword()) :: {:ok, t()} | {:error, term()}
```

# `materialize`

Materialize one profile with fresh per-connection random values.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
