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

Immutable storage and hashing for exact encoded TLS handshake messages.

Messages are retained as reversed iodata chunks so appending does not flatten
or repeatedly copy the transcript.

# `hash`

```elixir
@type hash() :: :sha256 | :sha384
```

# `t`

```elixir
@type t() :: %SSL.Protocol.Transcript{
  hash: hash(),
  length: non_neg_integer(),
  messages: [iodata()]
}
```

# `append`

```elixir
@spec append(t(), iodata()) :: t()
```

# `apply_hello_retry_request_rewrite`

```elixir
@spec apply_hello_retry_request_rewrite(t()) :: %SSL.Protocol.Transcript{
  hash: :sha256 | :sha384,
  length: non_neg_integer(),
  messages: [&lt;&lt;_::32, _::_*8&gt;&gt;, ...]
}
```

# `checkpoint`

```elixir
@spec checkpoint(t()) :: t()
```

# `digest`

```elixir
@spec digest(t()) :: binary()
```

# `new`

```elixir
@spec new(hash()) :: %SSL.Protocol.Transcript{
  hash: :sha256 | :sha384,
  length: 0,
  messages: []
}
```

---

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