View Source Charon.Utils.KeyGenerator (Charon v3.1.1)

Derive a key from a base secret using PBKDF2.

Link to this section Summary

Functions

Derive a new key from base_secret using salt. The result is cached using FastGlobal with key Elixir.Charon.Utils.KeyGenerator.

Link to this section Types

@type opts() :: [
  length: pos_integer(),
  iterations: pos_integer(),
  digest: :sha | :sha224 | :sha256 | :sha384 | :sha512
]

Link to this section Functions

Link to this function

derive_key(base_secret, salt, opts \\ [])

View Source
@spec derive_key(binary(), binary(), opts()) :: binary()

Derive a new key from base_secret using salt. The result is cached using FastGlobal with key Elixir.Charon.Utils.KeyGenerator.

options

Options

  • :length key length in bytes, default 32 (256 bits)
  • :iterations hash iterations to derive new key, default 250_000
  • :digest hashing algorithm used as pseudo-random function, default :sha256

doctests

Doctests

iex> derive_key("secret", "salt", length: 5, iterations: 1)
<<56, 223, 66, 139, 48>>

# key is returned from cache based on function args
iex> FastGlobal.put(KeyGenerator, %{{"secret", "salt", [length: 5, iterations: 1]} => "supersecret"})
iex> derive_key("secret", "salt", length: 5, iterations: 1)
"supersecret"