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

Pure, bounded TLS 1.2 ECDHE/EMS client protocol engine.

# `t`

```elixir
@type t() :: %SSL.Protocol.TLS12{
  client_identity: term(),
  client_random: term(),
  framer: term(),
  identity: term(),
  key_pair: term(),
  master_secret: term(),
  negotiated_protocol: term(),
  offer: term(),
  options: term(),
  peer: term(),
  phase: term(),
  premaster: term(),
  read_state: term(),
  request: term(),
  server_random: term(),
  suite: term(),
  transcript: term(),
  trust: term(),
  write_state: term()
}
```

# `encrypt`

```elixir
@spec encrypt(t(), :application_data | :alert, iodata()) ::
  {:ok, binary(), t()} | {:error, term()}
```

# `feed`

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

# `new`

```elixir
@spec new(binary(), SSL.Protocol.ClientOffer.t(), term(), term(), keyword()) ::
  {:ok, t()} | {:error, term()}
```

---

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