# `Ankusa.Verifier.Hmac.Scheme`
[🔗](https://github.com/jamescarr/ankusa/blob/ankusa-v0.7.0/packages/ankusa/lib/ankusa/verifier/hmac.ex#L41)

Declarative description of one provider's HMAC signature scheme.

The one field with no sensible default is `signature_header`: which header
carries the signature(s). Everything else defaults to the most common shape
(raw SHA-256 hex over the body).

# `encoding`

```elixir
@type encoding() :: :hex | :base64
```

# `hash`

```elixir
@type hash() :: :sha256 | :sha512 | :sha1
```

# `parse`

```elixir
@type parse() :: :whole | :csv_pairs | :space_versions
```

# `secret_decode`

```elixir
@type secret_decode() :: :raw | :whsec_base64
```

# `t`

```elixir
@type t() :: %Ankusa.Verifier.Hmac.Scheme{
  encoding: encoding(),
  hash: hash(),
  parse: parse(),
  secret_decode: secret_decode(),
  sig_key: String.t() | nil,
  sig_prefix: String.t() | nil,
  signature_header: String.t(),
  signed: String.t(),
  timestamp: timestamp(),
  version: String.t() | nil
}
```

# `timestamp`

```elixir
@type timestamp() :: nil | {:header, String.t()} | {:sig, String.t()}
```

---

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