@reown/appkit-siwx 1.2.0-638deddc0.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,14 @@
1
1
  import { SIWXConfig } from '../core/SIWXConfig.js';
2
2
  import { InformalMessenger } from '../messengers/index.js';
3
3
  import { LocalStorage } from '../storages/index.js';
4
- import { EIP155Verifier } from '../verifiers/index.js';
4
+ import { EIP155Verifier, SolanaVerifier } from '../verifiers/index.js';
5
5
  const DEFAULTS = {
6
6
  getDefaultMessenger: () => new InformalMessenger({
7
7
  domain: typeof document === 'undefined' ? 'Unknown Domain' : document.location.host,
8
8
  uri: typeof document === 'undefined' ? 'Unknown URI' : document.location.href,
9
9
  getNonce: async () => Promise.resolve(Math.round(Math.random() * 10000).toString())
10
10
  }),
11
- getDefaultVerifiers: () => [new EIP155Verifier()],
11
+ getDefaultVerifiers: () => [new EIP155Verifier(), new SolanaVerifier()],
12
12
  getDefaultStorage: () => new LocalStorage({ key: '@appkit/siwx' })
13
13
  };
14
14
  export class DefaultSIWX extends SIWXConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultSIWX.js","sourceRoot":"","sources":["../../../../src/configs/DefaultSIWX.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,QAAQ,GAAG;IACf,mBAAmB,EAAE,GAAG,EAAE,CACxB,IAAI,iBAAiB,CAAC;QACpB,MAAM,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;QACnF,GAAG,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;QAC7E,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;KACpF,CAAC;IAEJ,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;IAEjD,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;CACnE,CAAA;AAED,MAAM,OAAO,WAAY,SAAQ,UAAU;IACzC,YAAY,SAAgD,EAAE;QAC5D,KAAK,CAAC;YACJ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,mBAAmB,EAAE;YAC7D,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,mBAAmB,EAAE;YAC7D,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE;SACxD,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"DefaultSIWX.js","sourceRoot":"","sources":["../../../../src/configs/DefaultSIWX.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtE,MAAM,QAAQ,GAAG;IACf,mBAAmB,EAAE,GAAG,EAAE,CACxB,IAAI,iBAAiB,CAAC;QACpB,MAAM,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;QACnF,GAAG,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;QAC7E,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;KACpF,CAAC;IAEJ,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,cAAc,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;IAEvE,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;CACnE,CAAA;AAED,MAAM,OAAO,WAAY,SAAQ,UAAU;IACzC,YAAY,SAAgD,EAAE;QAC5D,KAAK,CAAC;YACJ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,mBAAmB,EAAE;YAC7D,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,mBAAmB,EAAE;YAC7D,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE;SACxD,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -22,8 +22,21 @@ export class SIWXConfig {
22
22
  }
23
23
  return this.storage.set(sessions);
24
24
  }
25
- async getSessions(chainId) {
26
- return this.storage.get(chainId);
25
+ async getSessions(chainId, address) {
26
+ const allSessions = await this.storage.get(chainId);
27
+ return allSessions.filter(session => {
28
+ const isSameChain = session.message.chainId === chainId;
29
+ const isSameAddress = session.message.accountAddress === address;
30
+ const startsAt = session.message.notBefore || session.message.issuedAt;
31
+ if (!startsAt || Date.parse(startsAt) > Date.now()) {
32
+ return false;
33
+ }
34
+ const endsAt = session.message.expirationTime;
35
+ if (endsAt && Date.now() > Date.parse(endsAt)) {
36
+ return false;
37
+ }
38
+ return isSameChain && isSameAddress;
39
+ });
27
40
  }
28
41
  async revokeSession(chainId, address) {
29
42
  return this.storage.delete(chainId, address);
@@ -31,7 +44,7 @@ export class SIWXConfig {
31
44
  async verifySession(session) {
32
45
  const chainVerifiers = this.verifiers.filter(verifier => verifier.shouldVerify(session));
33
46
  const verifications = await Promise.all(chainVerifiers.map(verifier => verifier.verify(session)));
34
- return verifications.every(result => result);
47
+ return verifications.length > 0 && verifications.every(result => result);
35
48
  }
36
49
  }
37
50
  //# sourceMappingURL=SIWXConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SIWXConfig.js","sourceRoot":"","sources":["../../../../src/core/SIWXConfig.ts"],"names":[],"mappings":"AAWA,MAAM,OAAgB,UAAU;IAK9B,YAAY,MAAoC;QAC9C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC/B,CAAC;IAEM,aAAa,CAAC,KAAuB;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAoB;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,QAAuB;QAC9C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAE7F,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;QACzE,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAsB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,OAAe;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAES,KAAK,CAAC,aAAa,CAAC,OAAoB;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;QACxF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACzD,CAAA;QAED,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"SIWXConfig.js","sourceRoot":"","sources":["../../../../src/core/SIWXConfig.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  export class SIWXVerifier {
2
2
  shouldVerify(session) {
3
- return (session.message.version === this.messageVersion &&
4
- session.message.chainId.startsWith(this.chainNamespace));
3
+ return session.message.chainId.startsWith(this.chainNamespace);
5
4
  }
6
5
  }
7
6
  //# sourceMappingURL=SIWXVerifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SIWXVerifier.js","sourceRoot":"","sources":["../../../../src/core/SIWXVerifier.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IAIzB,YAAY,CAAC,OAAoB;QACtC,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc;YAC/C,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CACxD,CAAA;IACH,CAAC;CAGF"}
1
+ {"version":3,"file":"SIWXVerifier.js","sourceRoot":"","sources":["../../../../src/core/SIWXVerifier.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;IAGzB,YAAY,CAAC,OAAoB;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAChE,CAAC;CAGF"}
@@ -1,10 +1,10 @@
1
1
  import { SIWXVerifier } from '../core/SIWXVerifier.js';
2
2
  import { verifyMessage } from 'viem';
3
+ import { ConstantsUtil } from '@reown/appkit-common';
3
4
  export class EIP155Verifier extends SIWXVerifier {
4
5
  constructor() {
5
6
  super(...arguments);
6
- this.chainNamespace = 'eip155';
7
- this.messageVersion = '1';
7
+ this.chainNamespace = ConstantsUtil.CHAIN.EVM;
8
8
  }
9
9
  async verify(session) {
10
10
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"EIP155Verifier.js","sourceRoot":"","sources":["../../../../src/verifiers/EIP155Verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEpC,MAAM,OAAO,cAAe,SAAQ,YAAY;IAAhD;;QACkB,mBAAc,GAAG,QAAQ,CAAA;QACzB,mBAAc,GAAG,GAAG,CAAA;IAatC,CAAC;IAXQ,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,aAAa,CAAC;gBACzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACnC,SAAS,EAAE,OAAO,CAAC,SAA0B;gBAC7C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,cAA+B;aACzD,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"EIP155Verifier.js","sourceRoot":"","sources":["../../../../src/verifiers/EIP155Verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,OAAO,cAAe,SAAQ,YAAY;IAAhD;;QACkB,mBAAc,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAA;IAa1D,CAAC;IAXQ,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,aAAa,CAAC;gBACzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACnC,SAAS,EAAE,OAAO,CAAC,SAA0B;gBAC7C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,cAA+B;aACzD,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import { SIWXVerifier } from '../core/SIWXVerifier.js';
2
+ import nacl from 'tweetnacl';
3
+ import bs58 from 'bs58';
4
+ import { ConstantsUtil } from '@reown/appkit-common';
5
+ export class SolanaVerifier extends SIWXVerifier {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.chainNamespace = ConstantsUtil.CHAIN.SOLANA;
9
+ }
10
+ async verify(session) {
11
+ try {
12
+ const publicKey = bs58.decode(session.message.accountAddress);
13
+ const signature = bs58.decode(session.signature);
14
+ const message = new TextEncoder().encode(session.message.toString());
15
+ const isValid = nacl.sign.detached.verify(message, signature, publicKey);
16
+ return Promise.resolve(isValid);
17
+ }
18
+ catch (error) {
19
+ return Promise.resolve(false);
20
+ }
21
+ }
22
+ }
23
+ //# sourceMappingURL=SolanaVerifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolanaVerifier.js","sourceRoot":"","sources":["../../../../src/verifiers/SolanaVerifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,OAAO,cAAe,SAAQ,YAAY;IAAhD;;QACkB,mBAAc,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAA;IAe7D,CAAC;IAbQ,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAChD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YAEpE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;YAExE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;CACF"}
@@ -1,2 +1,3 @@
1
1
  export * from './EIP155Verifier.js';
2
+ export * from './SolanaVerifier.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/verifiers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/verifiers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA"}
@@ -30,6 +30,18 @@ describe('EIP155Verifier', () => {
30
30
  test('should have eip155 as the chain namespace', () => {
31
31
  expect(verifier.chainNamespace).toBe('eip155');
32
32
  });
33
+ test('should verify only eip155 chain id', () => {
34
+ expect(verifier.shouldVerify(mockSession({
35
+ message: {
36
+ chainId: 'eip155:1'
37
+ }
38
+ }))).toBe(true);
39
+ expect(verifier.shouldVerify(mockSession({
40
+ message: {
41
+ chainId: 'solana:mainnet'
42
+ }
43
+ }))).toBe(false);
44
+ });
33
45
  test.each(cases)(`should verify $reason`, async ({ session, expected }) => {
34
46
  expect(await verifier.verify(session)).toBe(expected);
35
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EIP155Verifier.test.js","sourceRoot":"","sources":["../../../../tests/verifiers/EIP155Verifier.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAoB,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAQrD,MAAM,KAAK,GAAW;IACpB;QACE,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,WAAW,EAAE;QACtB,QAAQ,EAAE,IAAI;KACf;IACD;QACE,MAAM,EAAE,2CAA2C;QACnD,OAAO,EAAE,WAAW,CAAC;YACnB,SAAS,EAAE,oBAAoB;SAChC,CAAC;QACF,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,MAAM,EAAE,iDAAiD;QACzD,OAAO,EAAE,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,cAAc,EAAE,4CAA4C;aAC7D;SACF,CAAC;QACF,QAAQ,EAAE,KAAK;KAChB;CACF,CAAA;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;IAErC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxE,MAAM,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"EIP155Verifier.test.js","sourceRoot":"","sources":["../../../../tests/verifiers/EIP155Verifier.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAoB,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAQrD,MAAM,KAAK,GAAW;IACpB;QACE,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,WAAW,EAAE;QACtB,QAAQ,EAAE,IAAI;KACf;IACD;QACE,MAAM,EAAE,2CAA2C;QACnD,OAAO,EAAE,WAAW,CAAC;YACnB,SAAS,EAAE,oBAAoB;SAChC,CAAC;QACF,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,MAAM,EAAE,iDAAiD;QACzD,OAAO,EAAE,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,cAAc,EAAE,4CAA4C;aAC7D;SACF,CAAC;QACF,QAAQ,EAAE,KAAK;KAChB;CACF,CAAA;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;IAErC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,QAAQ,CAAC,YAAY,CACnB,WAAW,CAAC;YACV,OAAO,EAAE;gBACP,OAAO,EAAE,UAAU;aACpB;SACF,CAAC,CACH,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,CACJ,QAAQ,CAAC,YAAY,CACnB,WAAW,CAAC;YACV,OAAO,EAAE;gBACP,OAAO,EAAE,gBAAgB;aAC1B;SACF,CAAC,CACH,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxE,MAAM,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { describe, test, expect } from 'vitest';
2
+ import {} from '@reown/appkit-core';
3
+ import { mockSession } from '../mocks/mockSession.js';
4
+ import { SolanaVerifier } from '../../src/verifiers/SolanaVerifier.js';
5
+ const cases = [
6
+ {
7
+ reason: 'valid session',
8
+ session: mockSession({
9
+ message: {
10
+ accountAddress: '2VqKhjZ766ZN3uBtBpb7Ls3cN4HrocP1rzxzekhVEgpU'
11
+ },
12
+ signature: '2ZpgpUKF6RtmbrE8uBmPwRiBqRnsCKiBKkjsPSpf6c64r4XdDoevjhjNX35X7GeuSwwRhmbB2Ro4NfHWAeXWNhDL'
13
+ }),
14
+ expected: true
15
+ },
16
+ {
17
+ reason: 'invalid session with an invalid signature',
18
+ session: mockSession({
19
+ message: {
20
+ accountAddress: '2VqKhjZ766ZN3uBtBpb7Ls3cN4HrocP1rzxzekhVEgpU'
21
+ },
22
+ signature: '3ErkFZkvhSJVR7E1uakGwj8icgfxvRSS6AwW5bq4CZsXPZ83XrT1H9xcCWLvhsYCLYzFc7WSMQEJxGgpZvtgqbdE'
23
+ }),
24
+ expected: false
25
+ },
26
+ {
27
+ reason: 'invalid session with an invalid account address',
28
+ session: mockSession({
29
+ message: {
30
+ accountAddress: 'C6ydkvKcRdXz3ZTEYy6uWAAyZgyUF49qP4XPdaDB2nqS'
31
+ },
32
+ signature: '2ZpgpUKF6RtmbrE8uBmPwRiBqRnsCKiBKkjsPSpf6c64r4XdDoevjhjNX35X7GeuSwwRhmbB2Ro4NfHWAeXWNhDL'
33
+ }),
34
+ expected: false
35
+ }
36
+ ];
37
+ describe('SolanaVerifier', () => {
38
+ const verifier = new SolanaVerifier();
39
+ test('should have solana as the chain namespace', () => {
40
+ expect(verifier.chainNamespace).toBe('solana');
41
+ });
42
+ test('should verify only solana chain id', () => {
43
+ expect(verifier.shouldVerify(mockSession({
44
+ message: {
45
+ chainId: 'solana:mainnet'
46
+ }
47
+ }))).toBe(true);
48
+ expect(verifier.shouldVerify(mockSession({
49
+ message: {
50
+ chainId: 'eip155:1'
51
+ }
52
+ }))).toBe(false);
53
+ });
54
+ test.each(cases)(`should verify $reason`, async ({ session, expected }) => {
55
+ expect(await verifier.verify(session)).toBe(expected);
56
+ });
57
+ });
58
+ //# sourceMappingURL=SolanaVerifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolanaVerifier.test.js","sourceRoot":"","sources":["../../../../tests/verifiers/SolanaVerifier.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAoB,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AAQtE,MAAM,KAAK,GAAW;IACpB;QACE,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,cAAc,EAAE,8CAA8C;aAC/D;YACD,SAAS,EACP,0FAA0F;SAC7F,CAAC;QACF,QAAQ,EAAE,IAAI;KACf;IACD;QACE,MAAM,EAAE,2CAA2C;QACnD,OAAO,EAAE,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,cAAc,EAAE,8CAA8C;aAC/D;YACD,SAAS,EACP,0FAA0F;SAC7F,CAAC;QACF,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,MAAM,EAAE,iDAAiD;QACzD,OAAO,EAAE,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,cAAc,EAAE,8CAA8C;aAC/D;YACD,SAAS,EACP,0FAA0F;SAC7F,CAAC;QACF,QAAQ,EAAE,KAAK;KAChB;CACF,CAAA;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;IAErC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,QAAQ,CAAC,YAAY,CACnB,WAAW,CAAC;YACV,OAAO,EAAE;gBACP,OAAO,EAAE,gBAAgB;aAC1B;SACF,CAAC,CACH,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,CACJ,QAAQ,CAAC,YAAY,CACnB,WAAW,CAAC;YACV,OAAO,EAAE;gBACP,OAAO,EAAE,UAAU;aACpB;SACF,CAAC,CACH,CACF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxE,MAAM,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}