# `SSL.Protocol.TLS12Codec`
[🔗](https://github.com/gsmlg-dev/http_fetch/blob/v0.16.7/apps/ex_ssl/lib/ssl/protocol/tls12_codec.ex#L1)

Bounded codecs for complete TLS 1.2 handshake messages.

`SSL.Protocol.HandshakeFramer` handles stream fragmentation. This module
consumes exactly one encoded handshake message and retains its original bytes
for transcript and signature verification.

# `message`

```elixir
@type message() :: map()
```

# `decode`

```elixir
@spec decode(binary()) :: {:ok, message()} | {:error, term()}
```

# `encode_certificate`

```elixir
@spec encode_certificate([binary()]) :: {:ok, binary()} | {:error, term()}
```

# `encode_certificate_verify`

```elixir
@spec encode_certificate_verify(non_neg_integer(), binary()) ::
  {:ok, binary()} | {:error, term()}
```

# `encode_client_key_exchange`

```elixir
@spec encode_client_key_exchange(binary()) :: {:ok, binary()} | {:error, term()}
```

# `encode_finished`

```elixir
@spec encode_finished(binary()) :: {:ok, binary()} | {:error, term()}
```

---

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