bytes() :: non_neg_integer()
hash(binary()) :: {:ok, binary()} | {:error, atom()}
init() :: {:ok, binary()} | {:error, atom()}
verify(binary(), binary()) :: :ok | {:error, atom()}