defmodule Salty.Generichash do defmacro __using__(_opts) do quote do #@behaviour Salty.Multipart.Spec @behaviour Salty.Generichash alias Salty.Nif, as: C end end def primitive do Salty.Generichash.Blake2b end @callback bytes_min() :: non_neg_integer() @callback bytes_max() :: non_neg_integer() @callback bytes() :: non_neg_integer() @callback keybytes_min() :: non_neg_integer() @callback keybytes_max :: non_neg_integer() @callback keybytes :: non_neg_integer() @callback hash(binary(), binary(), binary()) :: {:ok, binary()} | {:error, atom()} @callback init(binary(), non_neg_integer()) :: {:ok, binary()} | {:error, atom()} @callback update(binary(), binary()) :: {:ok, binary()} | {:error, atom()} @callback final(binary(), non_neg_integer()) :: {:ok, binary()} | {:error, atom()} @callback final_verify(binary(), binary()) :: :ok | {:error, atom()} end