lib/salty/kdf.ex

defmodule Salty.Kdf do
  defmacro __using__(_opts) do
    quote do
      @behaviour Salty.Kdf
      alias Salty.Nif, as: C
    end
  end

  def primitive do
    Salty.Kdf.Blake2b
  end

  @callback bytes_min() :: pos_integer()

  @callback bytes_max() :: pos_integer()

  @callback contextbytes() :: pos_integer()

  @callback keybytes() :: pos_integer()

  @callback derive_from_key(pos_integer(), non_neg_integer(), binary(), binary()) :: {:ok, binary()} | {:error, atom()}

end