πŸ’¨Go

A Go implementation of EIP-4361: Sign In With Ethereum.

Getting started

  • The Go implementation of Sign-In with Ethereum can be found here:

Installation

SIWE can be easily installed in any Go project by running:

Usage

SIWE exposes a Message struct which implements EIP-4361.

Parsing a SIWE Message

Parsing is done via the siwe.ParseMessage function:

The function will return a nil pointer and an error if there was an issue while parsing.

Verifying and Authenticating a SIWE Message

Verification and Authentication is performed via EIP-191, using the address field of the Message as the expected signer. This returns the Ethereum public key of the signer:

The time constraints (expiry and not-before) can also be validated, at current or particular times:

Combined verification of time constraints and authentication can be done in a single call with verify:

Serialization of a SIWE Message

Message instances can also be serialized as their EIP-4361 string representations via the String method:

Signing Messages from Go code

To sign messages directly from Go code, you will need to do it like shown below to correctly follow the personal_sign format:

Last updated