@signinwithethereum/siwe-parser
v4.1.0
Published
Parse Messages that conform to EIP-4361: Sign in with Ethereum (SIWE)
Downloads
537
Readme
@signinwithethereum/siwe-parser
A parser for EIP-4361: Sign in with Ethereum messages, using an ABNF grammar for strict specification compliance.
Installation
npm install @signinwithethereum/siwe-parserUsage
Parsing a SIWE message
import { ParsedMessage } from '@signinwithethereum/siwe-parser'
const message = new ParsedMessage(rawMessage)
console.log(message.domain)
console.log(message.address)
console.log(message.uri)
console.log(message.version)
console.log(message.chainId)
console.log(message.nonce)
console.log(message.issuedAt)The constructor throws if the message does not conform to EIP-4361.
Validating a URI
import { isUri } from '@signinwithethereum/siwe-parser'
isUri('https://example.com') // trueUtilities
import {
isEIP55Address,
isValidISO8601Date,
} from '@signinwithethereum/siwe-parser'
isEIP55Address('0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B') // true
isValidISO8601Date('2024-01-01T00:00:00Z') // trueParsed Fields
| Field | Type | Required |
| ---------------- | ---------- | -------- |
| domain | string | Yes |
| address | string | Yes |
| uri | string | Yes |
| version | string | Yes |
| chainId | number | Yes |
| nonce | string | Yes |
| issuedAt | string | Yes |
| scheme | string | No |
| statement | string | No |
| expirationTime | string | No |
| notBefore | string | No |
| requestId | string | No |
| resources | string[] | No |
Related
For full SIWE message creation, signing, and verification (including ERC-1271 and EIP-6492 support), use @signinwithethereum/siwe which includes this parser.
Disclaimer
Our TypeScript library for Sign In with Ethereum has not yet undergone a formal security audit. We welcome continued feedback on the usability, architecture, and security of this implementation.
