MCPcopy Create free account
hub / github.com/wevm/viem / parseSiweMessage

Function parseSiweMessage

src/utils/siwe/parseSiweMessage.ts:28–64  ·  view source on GitHub ↗
(
  message: string,
)

Source from the content-addressed store, hash-verified

26 * @returns EIP-4361 fields object
27 */
28export function parseSiweMessage(
29 message: string,
30): Prettify<ExactPartial<SiweMessage>> {
31 const { scheme, statement, ...prefix } = (message.match(prefixRegex)
32 ?.groups ?? {}) as {
33 address: Address
34 domain: string
35 scheme?: string
36 statement?: string
37 }
38 const { chainId, expirationTime, issuedAt, notBefore, requestId, ...suffix } =
39 (message.match(suffixRegex)?.groups ?? {}) as {
40 chainId: string
41 expirationTime?: string
42 issuedAt?: string
43 nonce: string
44 notBefore?: string
45 requestId?: string
46 uri: string
47 version: '1'
48 }
49 const resources = message.split('Resources:')[1]?.split('\n- ').slice(1)
50 return {
51 ...prefix,
52 ...suffix,
53 ...(chainId ? { chainId: Number(chainId) } : {}),
54 ...(expirationTime
55 ? { expirationTime: parseSiweDateTime(expirationTime) }
56 : {}),
57 ...(issuedAt ? { issuedAt: parseSiweDateTime(issuedAt) } : {}),
58 ...(notBefore ? { notBefore: parseSiweDateTime(notBefore) } : {}),
59 ...(requestId ? { requestId } : {}),
60 ...(resources ? { resources } : {}),
61 ...(scheme ? { scheme } : {}),
62 ...(statement ? { statement } : {}),
63 }
64}
65
66// https://regexr.com/80gdj
67const prefixRegex =

Callers 2

verifySiweMessageFunction · 0.85

Calls 1

parseSiweDateTimeFunction · 0.85

Tested by

no test coverage detected