# `Kryptex.Keyring`
[🔗](https://github.com/KaseyCantu/kryptex/blob/v0.1.0/lib/kryptex/keyring.ex#L1)

Loads and validates encryption keys from application config.

## Expected config

    config :kryptex,
      keys: [
        %{id: 1, key: System.fetch_env!("KRYPTEX_DEK_1")},
        %{id: 2, key: System.fetch_env!("KRYPTEX_DEK_2")}
      ],
      default_key_id: 2

Keys may be provided as raw 32-byte binaries or base64 strings.

# `key_entry`

```elixir
@type key_entry() :: %{id: key_id(), key: binary()}
```

# `key_id`

```elixir
@type key_id() :: non_neg_integer()
```

# `current_key`

```elixir
@spec current_key() :: key_entry()
```

# `current_key_id`

```elixir
@spec current_key_id() :: key_id()
```

# `get_key!`

```elixir
@spec get_key!(key_id()) :: key_entry()
```

# `keys`

```elixir
@spec keys() :: [key_entry()]
```

---

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