Skip to content

Commit ced9019

Browse files
committed
sdk/solana: 2.0.0-beta.4 - support async token validation
1 parent c6301aa commit ced9019

File tree

17 files changed

+32
-50
lines changed

17 files changed

+32
-50
lines changed

packages/blockchain-sdk-aptos/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727
"tweetnacl": "^1.0.3"
2828
},
2929
"peerDependencies": {
30-
"@dialectlabs/sdk": "1.x",
30+
"@dialectlabs/sdk": "2.x",
3131
"aptos": "1.3.x"
3232
},
3333
"devDependencies": {
3434
"aptos": "1.3.12",
35-
"@dialectlabs/sdk": "^1.0.0"
35+
"@dialectlabs/sdk": "^2.0.0-beta.3"
3636
}
3737
}

packages/blockchain-sdk-aptos/src/auth/ed25519-payload/aptos-ed25519-payload-token-validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class AptosEd25519PayloadTokenValidator extends TokenValidator {
1717
return tokenHeader.alg === APTOS_ED25519_PAYLOAD_TOKEN_SIGNER_ALG;
1818
}
1919

20-
override isSignatureValid(token: Token): boolean {
20+
override async isSignatureValid(token: Token): Promise<boolean> {
2121
const signedPayload = decodeURLSafe(token.base64Body);
2222
return sign.detached.verify(
2323
signedPayload,

packages/blockchain-sdk-aptos/src/auth/ed25519/aptos-ed25519-token-validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class AptosEd25519TokenValidator extends TokenValidator {
1616
return tokenHeader.alg === APTOS_ED25519_TOKEN_SIGNER_ALG;
1717
}
1818

19-
override isSignatureValid(token: Token): boolean {
19+
async isSignatureValid(token: Token): Promise<boolean> {
2020
const signedPayload = token.base64Header + '.' + token.base64Body;
2121
const signingPayload = new TextEncoder().encode(signedPayload);
2222
return sign.detached.verify(

packages/blockchain-sdk-evm/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
2525
},
2626
"devDependencies": {
27-
"@dialectlabs/sdk": "^1.0.0",
28-
"ethers": "^5.7.2"
27+
"@dialectlabs/sdk": "^2.0.0-beta.3",
28+
"ethers": "^5.6.9"
2929
},
3030
"peerDependencies": {
31-
"@dialectlabs/sdk": "1.x",
32-
"ethers": "^5.x"
31+
"@dialectlabs/sdk": "2.x",
32+
"ethers": "^5.6.9"
3333
},
3434
"dependencies": {
3535
"ethers": "^5.7.2"

packages/blockchain-sdk-evm/src/auth/evm-ed25519-token-validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ethers } from 'ethers';
33
import { EVM_ED25519_TOKEN_SIGNER_ALG } from './evm-ed25519-token-signer';
44

55
export class EvmEd25519TokenValidator extends TokenValidator {
6-
isSignatureValid(token: Token): boolean {
6+
async isSignatureValid(token: Token): Promise<boolean> {
77
const messageBase64 = token.base64Header + '.' + token.base64Body;
88
const messageHash = ethers.utils.solidityKeccak256(
99
['string'],

packages/blockchain-sdk-solana/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dialectlabs/blockchain-sdk-solana",
3-
"version": "2.0.0-beta.3",
3+
"version": "2.0.0-beta.4",
44
"type": "module",
55
"repository": "[email protected]:dialectlabs/sdk.git",
66
"author": "dialectlabs",
@@ -27,11 +27,11 @@
2727
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
2828
},
2929
"devDependencies": {
30-
"@dialectlabs/sdk": "2.0.0-beta.3",
30+
"@dialectlabs/sdk": "2.0.0-beta.4",
3131
"@solana/wallet-adapter-base": "^0.9.15"
3232
},
3333
"peerDependencies": {
34-
"@dialectlabs/sdk": "^2.0.0-beta.3",
34+
"@dialectlabs/sdk": "^2.0.0-beta.4",
3535
"@solana/wallet-adapter-base": "0.x"
3636
},
3737
"dependencies": {

packages/blockchain-sdk-solana/src/auth/ed25519/solana-ed25519-token-validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export class SolanaEd25519TokenValidator extends TokenValidator {
1414
);
1515
}
1616

17-
isSignatureValid(token: Token): boolean {
17+
async isSignatureValid(token: Token): Promise<boolean> {
1818
const signedPayload = token.base64Header + '.' + token.base64Body;
1919
const signingPayload = new TextEncoder().encode(signedPayload);
2020
return nacl.sign.detached.verify(

packages/blockchain-sdk-solana/src/auth/tx/solana-tx-token-validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export class SolanaTxTokenValidator extends TokenValidator {
99
return tokenHeader.alg === SOLANA_TX_TOKEN_SIGNER_ALG;
1010
}
1111

12-
isSignatureValid(token: Token): boolean {
12+
async isSignatureValid(token: Token): Promise<boolean> {
1313
const byteBody = decodeURLSafe(token.base64Body);
1414
const tx = Transaction.from(byteBody);
1515
tx.recentBlockhash = PublicKey.default.toString();

packages/blockchain-sdk-solana/src/auth/v2/solana-v2-token-validator.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const v2tokenValidationCache: Record<
1313
}
1414
> = {};
1515

16-
const VALIDATION_CACHE_TTL = 1000 * 60; // 1 minute
16+
const VALIDATION_CACHE_TTL = 1000 * 60 * 5; // 5 minutes
1717

1818
const validationPromises: Record<string, Promise<void>> = {};
1919

@@ -26,7 +26,7 @@ export class SolanaV2TokenValidator extends TokenValidator {
2626
return tokenHeader.typ === 'JWT' && tokenHeader.alg === 'HS256';
2727
}
2828

29-
override isSignatureValid(token: Token): boolean {
29+
override async isSignatureValid(token: Token): Promise<boolean> {
3030
const cachedValidation = v2tokenValidationCache[token.rawValue];
3131
const shouldRevalidate =
3232
!cachedValidation ||
@@ -35,19 +35,14 @@ export class SolanaV2TokenValidator extends TokenValidator {
3535
Date.now();
3636

3737
if (shouldRevalidate) {
38-
this.validateAndCache(token).catch(console.error);
38+
await this.validateAndCache(token);
3939
}
4040

41-
if (!cachedValidation) {
42-
return true;
43-
}
44-
if (!cachedValidation.isValid) {
45-
return false;
46-
}
47-
return cachedValidation.isValid;
41+
const finalValidation = v2tokenValidationCache[token.rawValue];
42+
return finalValidation ? finalValidation.isValid : false;
4843
}
4944

50-
private async validateAndCache(token: Token) {
45+
private async validateAndCache(token: Token): Promise<void> {
5146
if (validationPromises[token.rawValue]) {
5247
return validationPromises[token.rawValue];
5348
}

packages/sdk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@dialectlabs/sdk",
3-
"version": "2.0.0-beta.3",
3+
"version": "2.0.0-beta.4",
44
"type": "module",
55
"repository": "[email protected]:dialectlabs/sdk.git",
66
"author": "dialectlabs",

0 commit comments

Comments
 (0)