npm.io
4.2.1 • Published 2 weeks ago

@signinwithethereum/siwe-parser

Licence
Apache-2.0
Version
4.2.1
Deps
2
Size
129 kB
Vulns
0
Weekly
0
Stars
11

@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-parser

Usage

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') // true
Utilities
import {
  isEIP55Address,
  isValidISO8601Date,
} from '@signinwithethereum/siwe-parser'

isEIP55Address('0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B') // true
isValidISO8601Date('2024-01-01T00:00:00Z') // true

Parsed 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

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.

Keywords