Comment on page
🍷
Elixir
An Elixir implementation of EIP-4361: Sign In With Ethereum.
- The Elixir implementation of Sign-In with Ethereum can be found here:
Sign-In with Ethereum can be installed as a
hex
. For more information and package information, click hereThe package can be installed by adding
siwe
to your list of dependencies in mix.exs
:def deps do
[
{:siwe, "~> 0.3"}
]
end
To see how this works in
iex
, clone this repository and from the root run:$ mix deps.get
Then create two files
message.txt
:login.xyz wants you to sign in with your Ethereum account:
0xfA151B5453CE69ABf60f0dbdE71F6C9C5868800E
Sign-In With Ethereum Example Statement
URI: https://login.xyz
Version: 1
Chain ID: 1
Nonce: ToTaLLyRanDOM
Issued At: 2021-12-17T00:38:39.834Z
signature.txt
:0x8d1327a1abbdf172875e5be41706c50fc3bede8af363b67aefbb543d6d082fb76a22057d7cb6d668ceba883f7d70ab7f1dc015b76b51d226af9d610fa20360ad1c
then run
$ iex -S mix
Once in iex, you can then run the following to see the result:
iex> {:ok, msg} = File.read("./message.txt")
...
iex> {:ok, sig} = File.read("./signature.txt")
...
iex> Siwe.parse_if_valid(String.trim(msg), String.trim(sig))
{:ok, %{
__struct__: Siwe,
address: "0xfA151B5453CE69ABf60f0dbdE71F6C9C5868800E",
chain_id: "1",
domain: "login.xyz",
expiration_time: nil,
issued_at: "2021-12-17T00:38:39.834Z",
nonce: "ToTaLLyRanDOM",
not_before: nil,
request_id: nil,
resources: [],
statement: "Sign-In With Ethereum Example Statement",
uri: "https://login.xyz",
version: "1"
}}
Any valid SIWE message and signature pair can be substituted.The functions described below can also be tested with
msg
, sig
, or a value set to the result Siwe.parse_if_valid
.Last modified 1yr ago