Siwe (siwe v0.2.3)
Siwe provides validation and parsing for Sign-In with Ethereum messages and signatures.
Link to this section Summary
Functions
Parses a SIWE message string into Siwe.Message struct if conforming to standards. Will parse messages without checking for validity.
Generates an alphanumeric nonce for use in SIWE messages.
Tests that a message and signature pair correspond and that the current time is valid (after not_before, and before expiration_time) any validation of other fields to server's expectation are left to the calling application. Just a wrapper around the Rustler NIF
Parses a SIWE message string into a Siwe Message Struct if the given signature matches the message string.
Parses a SIWE message string into a Siwe Message Struct if the current time is valid in terms of the message string.
Formats parsed SIWE message into string matching signing material
Link to this section Functions
from_str!(msg)
Specs
from_str!(String.t()) :: Siwe.Message
Parses a SIWE message string into Siwe.Message struct if conforming to standards. Will parse messages without checking for validity.
generate_nonce()
Specs
generate_nonce() :: String.t()
Generates an alphanumeric nonce for use in SIWE messages.
parse_if_valid!(message, signature)
Specs
Tests that a message and signature pair correspond and that the current time is valid (after not_before, and before expiration_time) any validation of other fields to server's expectation are left to the calling application. Just a wrapper around the Rustler NIF
Returns a Message structure based on the passed message
## Examples iex> Siwe.parseifvalid!(Enum.join(["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", ...> ], "\n"), ...> "0x8d1327a1abbdf172875e5be41706c50fc3bede8af363b67aefbb543d6d082fb76a22057d7cb6d668ceba883f7d70ab7f1dc015b76b51d226af9d610fa20360ad1c") %{ __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" }
parse_if_valid_sig!(msg, sig)
Specs
Parses a SIWE message string into a Siwe Message Struct if the given signature matches the message string.
parse_if_valid_time!(msg)
Specs
parse_if_valid_time!(String.t()) :: Siwe.Message.t()
Parses a SIWE message string into a Siwe Message Struct if the current time is valid in terms of the message string.
to_str!(msg)
Specs
to_str!(String.t()) :: Siwe.Message.t()
Formats parsed SIWE message into string matching signing material