lib/eip712/hash.ex

defmodule EIP712.Hash do
  @doc ~S"""
  Returns the keccak of the given binary message.

  ## Examples

    iex> EIP712.Hash.keccak("test")
    <<156, 34, 255, 95, 33, 240, 184, 27, 17, 62, 99, 247, 219, 109, 169, 79, 237, 239, 17, 178, 17, 155, 64, 136, 184, 150, 100, 251, 154, 60, 182, 88>>
  """
  def keccak(message), do: ExKeccak.hash_256(message)

  @doc ~S"""
  Returns the keccak of the given binary message, as an unsigned.

  ## Examples

    iex> EIP712.Hash.keccak_unsigned("test")
    70622639689279718371527342103894932928233838121221666359043189029713682937432
  """
  def keccak_unsigned(message) do
    message
    |> keccak()
    |> :binary.decode_unsigned()
  end
end