@reown/appkit-siwx 1.2.0-638deddc0.0 → 1.2.1
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.
- package/dist/esm/src/configs/DefaultSIWX.js +2 -2
- package/dist/esm/src/configs/DefaultSIWX.js.map +1 -1
- package/dist/esm/src/core/SIWXConfig.js +16 -3
- package/dist/esm/src/core/SIWXConfig.js.map +1 -1
- package/dist/esm/src/core/SIWXVerifier.js +1 -2
- package/dist/esm/src/core/SIWXVerifier.js.map +1 -1
- package/dist/esm/src/verifiers/EIP155Verifier.js +2 -2
- package/dist/esm/src/verifiers/EIP155Verifier.js.map +1 -1
- package/dist/esm/src/verifiers/SolanaVerifier.js +23 -0
- package/dist/esm/src/verifiers/SolanaVerifier.js.map +1 -0
- package/dist/esm/src/verifiers/index.js +1 -0
- package/dist/esm/src/verifiers/index.js.map +1 -1
- package/dist/esm/tests/verifiers/EIP155Verifier.test.js +12 -0
- package/dist/esm/tests/verifiers/EIP155Verifier.test.js.map +1 -1
- package/dist/esm/tests/verifiers/SolanaVerifier.test.js +58 -0
- package/dist/esm/tests/verifiers/SolanaVerifier.test.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/src/core/SIWXConfig.d.ts +1 -1
- package/dist/types/src/core/SIWXVerifier.d.ts +0 -1
- package/dist/types/src/verifiers/EIP155Verifier.d.ts +1 -2
- package/dist/types/src/verifiers/SolanaVerifier.d.ts +6 -0
- package/dist/types/src/verifiers/index.d.ts +1 -0
- package/dist/types/tests/verifiers/SolanaVerifier.test.d.ts +1 -0
- package/package.json +5 -3
|
@@ -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;
|
|
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
|
-
|
|
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;
|
|
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
|
|
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;
|
|
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 =
|
|
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;
|
|
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 +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"}
|