@solana/keychain-aws-kms 0.4.0 → 0.6.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.
- package/README.md +5 -5
- package/dist/__tests__/aws-kms-signer.integration.test.js +10 -43
- package/dist/__tests__/aws-kms-signer.integration.test.js.map +1 -1
- package/dist/__tests__/aws-kms-signer.test.js +24 -0
- package/dist/__tests__/aws-kms-signer.test.js.map +1 -1
- package/dist/__tests__/setup.d.ts +3 -0
- package/dist/__tests__/setup.d.ts.map +1 -1
- package/dist/__tests__/setup.js +18 -2
- package/dist/__tests__/setup.js.map +1 -1
- package/dist/aws-kms-signer.d.ts +6 -0
- package/dist/aws-kms-signer.d.ts.map +1 -1
- package/dist/aws-kms-signer.js +23 -2
- package/dist/aws-kms-signer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/src/__tests__/aws-kms-signer.integration.test.ts +10 -74
- package/src/__tests__/aws-kms-signer.test.ts +30 -0
- package/src/__tests__/setup.ts +27 -2
- package/src/aws-kms-signer.ts +33 -2
- package/src/index.ts +1 -1
package/README.md
CHANGED
|
@@ -83,9 +83,9 @@ Or use the AWS Console:
|
|
|
83
83
|
### Basic Example
|
|
84
84
|
|
|
85
85
|
```typescript
|
|
86
|
-
import {
|
|
86
|
+
import { createAwsKmsSigner } from '@solana/keychain-aws-kms';
|
|
87
87
|
|
|
88
|
-
const signer =
|
|
88
|
+
const signer = createAwsKmsSigner({
|
|
89
89
|
keyId: 'arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012',
|
|
90
90
|
publicKey: 'YourSolanaPublicKeyBase58',
|
|
91
91
|
region: 'us-east-1', // Optional, defaults to AWS config default
|
|
@@ -102,7 +102,7 @@ const signatures = await signer.signTransactions([transaction]);
|
|
|
102
102
|
### With Custom Credentials
|
|
103
103
|
|
|
104
104
|
```typescript
|
|
105
|
-
const signer =
|
|
105
|
+
const signer = createAwsKmsSigner({
|
|
106
106
|
keyId: 'arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012',
|
|
107
107
|
publicKey: 'YourSolanaPublicKeyBase58',
|
|
108
108
|
region: 'us-east-1',
|
|
@@ -117,7 +117,7 @@ const signer = new AwsKmsSigner({
|
|
|
117
117
|
### With Request Delay (Rate Limiting)
|
|
118
118
|
|
|
119
119
|
```typescript
|
|
120
|
-
const signer =
|
|
120
|
+
const signer = createAwsKmsSigner({
|
|
121
121
|
keyId: 'arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012',
|
|
122
122
|
publicKey: 'YourSolanaPublicKeyBase58',
|
|
123
123
|
requestDelayMs: 100, // 100ms delay between concurrent requests
|
|
@@ -131,7 +131,7 @@ const signer = new AwsKmsSigner({
|
|
|
131
131
|
#### Constructor
|
|
132
132
|
|
|
133
133
|
```typescript
|
|
134
|
-
|
|
134
|
+
createAwsKmsSigner(config: AwsKmsSignerConfig)
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
**Config Options:**
|
|
@@ -1,50 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getAddMemoInstruction } from '@solana-program/memo';
|
|
1
|
+
import { runSignerIntegrationTest } from '@solana/keychain-test-utils';
|
|
3
2
|
import { config } from 'dotenv';
|
|
4
|
-
import { describe,
|
|
5
|
-
import {
|
|
3
|
+
import { describe, it } from 'vitest';
|
|
4
|
+
import { getConfig } from './setup.js';
|
|
6
5
|
config();
|
|
7
|
-
const REQUIRED_ENV_VARS = ['AWS_KMS_KEY_ID', 'AWS_KMS_SIGNER_PUBKEY'];
|
|
8
|
-
function hasRequiredEnvVars() {
|
|
9
|
-
return REQUIRED_ENV_VARS.every(v => process.env[v]);
|
|
10
|
-
}
|
|
11
|
-
function createAwsKmsSigner() {
|
|
12
|
-
return new AwsKmsSigner({
|
|
13
|
-
keyId: process.env.AWS_KMS_KEY_ID,
|
|
14
|
-
publicKey: process.env.AWS_KMS_SIGNER_PUBKEY,
|
|
15
|
-
region: process.env.AWS_KMS_REGION,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
6
|
describe('AwsKmsSigner Integration', () => {
|
|
19
|
-
it.skipIf(!
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const { value: { blockhash, lastValidBlockHeight }, } = await rpc.getLatestBlockhash().send();
|
|
25
|
-
// Create memo transaction (doesn't need funds)
|
|
26
|
-
const transaction = pipe(createTransactionMessage({ version: 0 }), tx => setTransactionMessageFeePayerSigner(signer, tx), tx => appendTransactionMessageInstructions([getAddMemoInstruction({ memo: 'AWS KMS test' })], tx), tx => setTransactionMessageLifetimeUsingBlockhash({ blockhash, lastValidBlockHeight }, tx));
|
|
27
|
-
// Sign via AWS KMS
|
|
28
|
-
const signed = await signTransactionMessageWithSigners(transaction);
|
|
29
|
-
// Verify signature returned
|
|
30
|
-
expect(signed.signatures[signer.address]).toBeDefined();
|
|
31
|
-
expect(signed.signatures[signer.address]?.length).toBe(64);
|
|
32
|
-
}, 60000); // 1 minute timeout
|
|
33
|
-
it.skipIf(!hasRequiredEnvVars())('signs messages', async () => {
|
|
34
|
-
const signer = createAwsKmsSigner();
|
|
35
|
-
const message = {
|
|
36
|
-
content: new Uint8Array([1, 2, 3, 4, 5]),
|
|
37
|
-
signatures: {},
|
|
38
|
-
};
|
|
39
|
-
const result = await signer.signMessages([message]);
|
|
40
|
-
expect(result).toHaveLength(1);
|
|
41
|
-
expect(result[0]?.[signer.address]).toBeDefined();
|
|
42
|
-
expect(result[0]?.[signer.address]?.length).toBe(64);
|
|
7
|
+
it.skipIf(!process.env.AWS_KMS_KEY_ID)('signs transactions with real API', async () => {
|
|
8
|
+
await runSignerIntegrationTest(await getConfig(['signTransaction']));
|
|
9
|
+
});
|
|
10
|
+
it.skipIf(!process.env.AWS_KMS_KEY_ID)('signs messages with real API', async () => {
|
|
11
|
+
await runSignerIntegrationTest(await getConfig(['signMessage']));
|
|
43
12
|
});
|
|
44
|
-
it.skipIf(!
|
|
45
|
-
|
|
46
|
-
const available = await signer.isAvailable();
|
|
47
|
-
expect(available).toBe(true);
|
|
13
|
+
it.skipIf(!process.env.AWS_KMS_KEY_ID)('simulates transactions with real API', async () => {
|
|
14
|
+
await runSignerIntegrationTest(await getConfig(['simulateTransaction']));
|
|
48
15
|
});
|
|
49
16
|
});
|
|
50
17
|
//# sourceMappingURL=aws-kms-signer.integration.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-kms-signer.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/aws-kms-signer.integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"aws-kms-signer.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/aws-kms-signer.integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,EAAE,CAAC;AAET,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,wBAAwB,CAAC,MAAM,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,wBAAwB,CAAC,MAAM,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,wBAAwB,CAAC,MAAM,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,10 @@ import { generateKeyPairSigner } from '@solana/signers';
|
|
|
2
2
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
3
|
import { assertIsSolanaSigner } from '@solana/keychain-core';
|
|
4
4
|
import { AwsKmsSigner } from '../aws-kms-signer.js';
|
|
5
|
+
vi.mock('@solana/keychain-core', async (importOriginal) => {
|
|
6
|
+
const mod = await importOriginal();
|
|
7
|
+
return { ...mod, assertSignatureValid: vi.fn() };
|
|
8
|
+
});
|
|
5
9
|
// Mock AWS SDK
|
|
6
10
|
const mockSend = vi.fn();
|
|
7
11
|
vi.mock('@aws-sdk/client-kms', () => {
|
|
@@ -40,6 +44,26 @@ describe('AwsKmsSigner', () => {
|
|
|
40
44
|
beforeEach(() => {
|
|
41
45
|
vi.clearAllMocks();
|
|
42
46
|
});
|
|
47
|
+
describe('create', () => {
|
|
48
|
+
it('creates an AwsKmsSigner with valid config', async () => {
|
|
49
|
+
const keyPair = await generateKeyPairSigner();
|
|
50
|
+
const signer = AwsKmsSigner.create({
|
|
51
|
+
keyId: TEST_KEY_ID,
|
|
52
|
+
publicKey: keyPair.address,
|
|
53
|
+
});
|
|
54
|
+
expect(signer.address).toBe(keyPair.address);
|
|
55
|
+
assertIsSolanaSigner(signer);
|
|
56
|
+
});
|
|
57
|
+
it('should throw error for missing keyId', async () => {
|
|
58
|
+
const keyPair = await generateKeyPairSigner();
|
|
59
|
+
expect(() => {
|
|
60
|
+
AwsKmsSigner.create({
|
|
61
|
+
keyId: '',
|
|
62
|
+
publicKey: keyPair.address,
|
|
63
|
+
});
|
|
64
|
+
}).toThrow('Missing required keyId field');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
43
67
|
describe('constructor', () => {
|
|
44
68
|
it('creates an AwsKmsSigner with valid config', async () => {
|
|
45
69
|
const keyPair = await generateKeyPairSigner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-kms-signer.test.js","sourceRoot":"","sources":["../../src/__tests__/aws-kms-signer.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aws-kms-signer.test.js","sourceRoot":"","sources":["../../src/__tests__/aws-kms-signer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { SolanaSigner } from '@solana/keychain-core';
|
|
2
|
+
import type { SignerTestConfig, TestScenario } from '@solana/keychain-test-utils';
|
|
1
3
|
export declare const TEST_KEY_ID = "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012";
|
|
2
4
|
export declare const TEST_REGION = "us-east-1";
|
|
5
|
+
export declare function getConfig(scenarios: TestScenario[]): Promise<SignerTestConfig<SolanaSigner>>;
|
|
3
6
|
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIlF,eAAO,MAAM,WAAW,gFAAgF,CAAC;AACzG,eAAO,MAAM,WAAW,cAAc,CAAC;AAkBvC,wBAAsB,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAKlG"}
|
package/dist/__tests__/setup.js
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
// This file can be used for shared test utilities or setup
|
|
1
|
+
import { createAwsKmsSigner } from '../aws-kms-signer.js';
|
|
3
2
|
export const TEST_KEY_ID = 'arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012';
|
|
4
3
|
export const TEST_REGION = 'us-east-1';
|
|
4
|
+
const SIGNER_TYPE = 'aws-kms';
|
|
5
|
+
const REQUIRED_ENV_VARS = ['AWS_KMS_KEY_ID', 'AWS_KMS_SIGNER_PUBKEY'];
|
|
6
|
+
const CONFIG = {
|
|
7
|
+
createSigner: () => Promise.resolve(createAwsKmsSigner({
|
|
8
|
+
keyId: process.env.AWS_KMS_KEY_ID,
|
|
9
|
+
publicKey: process.env.AWS_KMS_SIGNER_PUBKEY,
|
|
10
|
+
region: process.env.AWS_KMS_REGION,
|
|
11
|
+
})),
|
|
12
|
+
requiredEnvVars: REQUIRED_ENV_VARS,
|
|
13
|
+
signerType: SIGNER_TYPE,
|
|
14
|
+
};
|
|
15
|
+
export async function getConfig(scenarios) {
|
|
16
|
+
return {
|
|
17
|
+
...CONFIG,
|
|
18
|
+
testScenarios: scenarios,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
5
21
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG,6EAA6E,CAAC;AACzG,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,iBAAiB,GAAG,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;AAEtE,MAAM,MAAM,GAAmC;IAC3C,YAAY,EAAE,GAAG,EAAE,CACf,OAAO,CAAC,OAAO,CACX,kBAAkB,CAAC;QACf,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;QAClC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAsB;QAC7C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;KACrC,CAAC,CACL;IACL,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,WAAW;CAC1B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAyB;IACrD,OAAO;QACH,GAAG,MAAM;QACT,aAAa,EAAE,SAAS;KAC3B,CAAC;AACN,CAAC"}
|
package/dist/aws-kms-signer.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { SolanaSigner } from '@solana/keychain-core';
|
|
|
3
3
|
import { SignableMessage, SignatureDictionary } from '@solana/signers';
|
|
4
4
|
import { Transaction, TransactionWithinSizeLimit, TransactionWithLifetime } from '@solana/transactions';
|
|
5
5
|
import type { AwsKmsSignerConfig } from './types.js';
|
|
6
|
+
export declare function createAwsKmsSigner<TAddress extends string = string>(config: AwsKmsSignerConfig): SolanaSigner<TAddress>;
|
|
6
7
|
/**
|
|
7
8
|
* AWS KMS-based signer using EdDSA (Ed25519) signing
|
|
8
9
|
*
|
|
@@ -17,12 +18,17 @@ import type { AwsKmsSignerConfig } from './types.js';
|
|
|
17
18
|
* --key-usage SIGN_VERIFY \
|
|
18
19
|
* --description "Solana signing key"
|
|
19
20
|
* ```
|
|
21
|
+
*
|
|
22
|
+
* @deprecated Prefer `createAwsKmsSigner()`. Class export will be removed in a future version.
|
|
20
23
|
*/
|
|
21
24
|
export declare class AwsKmsSigner<TAddress extends string = string> implements SolanaSigner<TAddress> {
|
|
22
25
|
readonly address: Address<TAddress>;
|
|
23
26
|
private readonly keyId;
|
|
24
27
|
private readonly client;
|
|
25
28
|
private readonly requestDelayMs;
|
|
29
|
+
/** @deprecated Use `createAwsKmsSigner()` instead. */
|
|
30
|
+
static create<TAddress extends string = string>(config: AwsKmsSignerConfig): AwsKmsSigner<TAddress>;
|
|
31
|
+
/** @deprecated Use `createAwsKmsSigner()` instead. Direct construction will be removed in a future version. */
|
|
26
32
|
constructor(config: AwsKmsSignerConfig);
|
|
27
33
|
/**
|
|
28
34
|
* Validate request delay ms
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-kms-signer.d.ts","sourceRoot":"","sources":["../src/aws-kms-signer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"aws-kms-signer.d.ts","sourceRoot":"","sources":["../src/aws-kms-signer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAIH,YAAY,EAEf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAExG,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAC/D,MAAM,EAAE,kBAAkB,GAC3B,YAAY,CAAC,QAAQ,CAAC,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAY,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,CAAE,YAAW,YAAY,CAAC,QAAQ,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,sDAAsD;IACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC;IAInG,+GAA+G;gBACnG,MAAM,EAAE,kBAAkB;IA4CtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;YACW,KAAK;IAMnB;;OAEG;YACW,SAAS;IA+CvB;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC;IAsBjG;;OAEG;IACG,gBAAgB,CAClB,YAAY,EAAE,SAAS,CAAC,WAAW,GAAG,0BAA0B,GAAG,uBAAuB,CAAC,EAAE,GAC9F,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC;IAoB1C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAsBxC"}
|
package/dist/aws-kms-signer.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { DescribeKeyCommand, KMSClient, MessageType, SignCommand, SigningAlgorithmSpec } from '@aws-sdk/client-kms';
|
|
2
2
|
import { assertIsAddress } from '@solana/addresses';
|
|
3
|
-
import { createSignatureDictionary, SignerErrorCode, throwSignerError } from '@solana/keychain-core';
|
|
3
|
+
import { assertSignatureValid, createSignatureDictionary, SignerErrorCode, throwSignerError, } from '@solana/keychain-core';
|
|
4
|
+
export function createAwsKmsSigner(config) {
|
|
5
|
+
return AwsKmsSigner.create(config);
|
|
6
|
+
}
|
|
4
7
|
/**
|
|
5
8
|
* AWS KMS-based signer using EdDSA (Ed25519) signing
|
|
6
9
|
*
|
|
@@ -15,8 +18,15 @@ import { createSignatureDictionary, SignerErrorCode, throwSignerError } from '@s
|
|
|
15
18
|
* --key-usage SIGN_VERIFY \
|
|
16
19
|
* --description "Solana signing key"
|
|
17
20
|
* ```
|
|
21
|
+
*
|
|
22
|
+
* @deprecated Prefer `createAwsKmsSigner()`. Class export will be removed in a future version.
|
|
18
23
|
*/
|
|
19
24
|
export class AwsKmsSigner {
|
|
25
|
+
/** @deprecated Use `createAwsKmsSigner()` instead. */
|
|
26
|
+
static create(config) {
|
|
27
|
+
return new AwsKmsSigner(config);
|
|
28
|
+
}
|
|
29
|
+
/** @deprecated Use `createAwsKmsSigner()` instead. Direct construction will be removed in a future version. */
|
|
20
30
|
constructor(config) {
|
|
21
31
|
if (!config.keyId) {
|
|
22
32
|
throwSignerError(SignerErrorCode.CONFIG_ERROR, {
|
|
@@ -128,6 +138,11 @@ export class AwsKmsSigner {
|
|
|
128
138
|
? message.content
|
|
129
139
|
: new Uint8Array(Array.from(message.content));
|
|
130
140
|
const signatureBytes = await this.signBytes(messageBytes);
|
|
141
|
+
await assertSignatureValid({
|
|
142
|
+
data: messageBytes,
|
|
143
|
+
signature: signatureBytes,
|
|
144
|
+
signerAddress: this.address,
|
|
145
|
+
});
|
|
131
146
|
return createSignatureDictionary({
|
|
132
147
|
signature: signatureBytes,
|
|
133
148
|
signerAddress: this.address,
|
|
@@ -141,7 +156,13 @@ export class AwsKmsSigner {
|
|
|
141
156
|
return await Promise.all(transactions.map(async (transaction, index) => {
|
|
142
157
|
await this.delay(index);
|
|
143
158
|
// Sign the transaction message bytes
|
|
144
|
-
const
|
|
159
|
+
const txMessageBytes = new Uint8Array(transaction.messageBytes);
|
|
160
|
+
const signatureBytes = await this.signBytes(txMessageBytes);
|
|
161
|
+
await assertSignatureValid({
|
|
162
|
+
data: txMessageBytes,
|
|
163
|
+
signature: signatureBytes,
|
|
164
|
+
signerAddress: this.address,
|
|
165
|
+
});
|
|
145
166
|
return createSignatureDictionary({
|
|
146
167
|
signature: signatureBytes,
|
|
147
168
|
signerAddress: this.address,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-kms-signer.js","sourceRoot":"","sources":["../src/aws-kms-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAW,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"aws-kms-signer.js","sourceRoot":"","sources":["../src/aws-kms-signer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AwsKmsSigner } from './aws-kms-signer.js';
|
|
1
|
+
export { AwsKmsSigner, createAwsKmsSigner } from './aws-kms-signer.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solana/keychain-aws-kms",
|
|
3
3
|
"author": "Solana Foundation",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"description": "AWS KMS-based signer for Solana transactions using EdDSA (Ed25519)",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": "https://github.com/solana-foundation/solana-keychain",
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"src"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@aws-sdk/client-kms": "^3.
|
|
32
|
+
"@aws-sdk/client-kms": "^3.991.0",
|
|
33
33
|
"@solana/addresses": "^6.0.1",
|
|
34
34
|
"@solana/codecs-strings": "^6.0.1",
|
|
35
35
|
"@solana/keys": "^6.0.1",
|
|
36
36
|
"@solana/signers": "^6.0.1",
|
|
37
37
|
"@solana/transactions": "^6.0.1",
|
|
38
|
-
"@solana/keychain-core": "0.
|
|
38
|
+
"@solana/keychain-core": "0.6.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@solana-program/memo": "^0.11.0",
|
|
42
42
|
"@solana/kit": "^6.0.1",
|
|
43
43
|
"dotenv": "^17.2.3",
|
|
44
|
-
"@solana/keychain-test-utils": "0.
|
|
44
|
+
"@solana/keychain-test-utils": "0.6.0"
|
|
45
45
|
},
|
|
46
46
|
"publishConfig": {
|
|
47
47
|
"access": "public"
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"test:watch": "vitest",
|
|
56
56
|
"test:watch:unit": "vitest --config ../../vitest.config.unit.ts",
|
|
57
57
|
"test:watch:integration": "vitest --config ../../vitest.config.integration.ts",
|
|
58
|
-
"typecheck": "tsc --noEmit"
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"test:treeshakability": "agadoo dist/index.js"
|
|
59
60
|
}
|
|
60
61
|
}
|
|
@@ -1,83 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
appendTransactionMessageInstructions,
|
|
3
|
-
createSolanaRpc,
|
|
4
|
-
createTransactionMessage,
|
|
5
|
-
pipe,
|
|
6
|
-
setTransactionMessageFeePayerSigner,
|
|
7
|
-
setTransactionMessageLifetimeUsingBlockhash,
|
|
8
|
-
signTransactionMessageWithSigners,
|
|
9
|
-
} from '@solana/kit';
|
|
10
|
-
import { getAddMemoInstruction } from '@solana-program/memo';
|
|
1
|
+
import { runSignerIntegrationTest } from '@solana/keychain-test-utils';
|
|
11
2
|
import { config } from 'dotenv';
|
|
12
|
-
import { describe,
|
|
3
|
+
import { describe, it } from 'vitest';
|
|
13
4
|
|
|
14
|
-
import {
|
|
5
|
+
import { getConfig } from './setup.js';
|
|
15
6
|
|
|
16
7
|
config();
|
|
17
8
|
|
|
18
|
-
const REQUIRED_ENV_VARS = ['AWS_KMS_KEY_ID', 'AWS_KMS_SIGNER_PUBKEY'];
|
|
19
|
-
|
|
20
|
-
function hasRequiredEnvVars(): boolean {
|
|
21
|
-
return REQUIRED_ENV_VARS.every(v => process.env[v]);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function createAwsKmsSigner(): AwsKmsSigner {
|
|
25
|
-
return new AwsKmsSigner({
|
|
26
|
-
keyId: process.env.AWS_KMS_KEY_ID!,
|
|
27
|
-
publicKey: process.env.AWS_KMS_SIGNER_PUBKEY!,
|
|
28
|
-
region: process.env.AWS_KMS_REGION,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
9
|
describe('AwsKmsSigner Integration', () => {
|
|
33
|
-
it.skipIf(!
|
|
34
|
-
|
|
35
|
-
async () => {
|
|
36
|
-
const signer = createAwsKmsSigner();
|
|
37
|
-
const rpcUrl = process.env.SOLANA_RPC_URL ?? 'https://api.devnet.solana.com';
|
|
38
|
-
|
|
39
|
-
// Get real blockhash from devnet
|
|
40
|
-
const rpc = createSolanaRpc(rpcUrl);
|
|
41
|
-
const {
|
|
42
|
-
value: { blockhash, lastValidBlockHeight },
|
|
43
|
-
} = await rpc.getLatestBlockhash().send();
|
|
44
|
-
|
|
45
|
-
// Create memo transaction (doesn't need funds)
|
|
46
|
-
const transaction = pipe(
|
|
47
|
-
createTransactionMessage({ version: 0 }),
|
|
48
|
-
tx => setTransactionMessageFeePayerSigner(signer, tx),
|
|
49
|
-
tx => appendTransactionMessageInstructions([getAddMemoInstruction({ memo: 'AWS KMS test' })], tx),
|
|
50
|
-
tx => setTransactionMessageLifetimeUsingBlockhash({ blockhash, lastValidBlockHeight }, tx),
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
// Sign via AWS KMS
|
|
54
|
-
const signed = await signTransactionMessageWithSigners(transaction);
|
|
55
|
-
|
|
56
|
-
// Verify signature returned
|
|
57
|
-
expect(signed.signatures[signer.address]).toBeDefined();
|
|
58
|
-
expect(signed.signatures[signer.address]?.length).toBe(64);
|
|
59
|
-
},
|
|
60
|
-
60_000,
|
|
61
|
-
); // 1 minute timeout
|
|
62
|
-
|
|
63
|
-
it.skipIf(!hasRequiredEnvVars())('signs messages', async () => {
|
|
64
|
-
const signer = createAwsKmsSigner();
|
|
65
|
-
|
|
66
|
-
const message = {
|
|
67
|
-
content: new Uint8Array([1, 2, 3, 4, 5]),
|
|
68
|
-
signatures: {},
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
const result = await signer.signMessages([message]);
|
|
72
|
-
|
|
73
|
-
expect(result).toHaveLength(1);
|
|
74
|
-
expect(result[0]?.[signer.address]).toBeDefined();
|
|
75
|
-
expect(result[0]?.[signer.address]?.length).toBe(64);
|
|
10
|
+
it.skipIf(!process.env.AWS_KMS_KEY_ID)('signs transactions with real API', async () => {
|
|
11
|
+
await runSignerIntegrationTest(await getConfig(['signTransaction']));
|
|
76
12
|
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
13
|
+
it.skipIf(!process.env.AWS_KMS_KEY_ID)('signs messages with real API', async () => {
|
|
14
|
+
await runSignerIntegrationTest(await getConfig(['signMessage']));
|
|
15
|
+
});
|
|
16
|
+
it.skipIf(!process.env.AWS_KMS_KEY_ID)('simulates transactions with real API', async () => {
|
|
17
|
+
await runSignerIntegrationTest(await getConfig(['simulateTransaction']));
|
|
82
18
|
});
|
|
83
19
|
});
|
|
@@ -5,6 +5,11 @@ import { assertIsSolanaSigner } from '@solana/keychain-core';
|
|
|
5
5
|
import { AwsKmsSigner } from '../aws-kms-signer.js';
|
|
6
6
|
import type { AwsKmsSignerConfig } from '../types.js';
|
|
7
7
|
|
|
8
|
+
vi.mock('@solana/keychain-core', async importOriginal => {
|
|
9
|
+
const mod = await importOriginal<typeof import('@solana/keychain-core')>();
|
|
10
|
+
return { ...mod, assertSignatureValid: vi.fn() };
|
|
11
|
+
});
|
|
12
|
+
|
|
8
13
|
// Mock AWS SDK
|
|
9
14
|
const mockSend = vi.fn();
|
|
10
15
|
|
|
@@ -50,6 +55,31 @@ describe('AwsKmsSigner', () => {
|
|
|
50
55
|
vi.clearAllMocks();
|
|
51
56
|
});
|
|
52
57
|
|
|
58
|
+
describe('create', () => {
|
|
59
|
+
it('creates an AwsKmsSigner with valid config', async () => {
|
|
60
|
+
const keyPair = await generateKeyPairSigner();
|
|
61
|
+
|
|
62
|
+
const signer = AwsKmsSigner.create({
|
|
63
|
+
keyId: TEST_KEY_ID,
|
|
64
|
+
publicKey: keyPair.address,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
expect(signer.address).toBe(keyPair.address);
|
|
68
|
+
assertIsSolanaSigner(signer);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('should throw error for missing keyId', async () => {
|
|
72
|
+
const keyPair = await generateKeyPairSigner();
|
|
73
|
+
|
|
74
|
+
expect(() => {
|
|
75
|
+
AwsKmsSigner.create({
|
|
76
|
+
keyId: '',
|
|
77
|
+
publicKey: keyPair.address,
|
|
78
|
+
});
|
|
79
|
+
}).toThrow('Missing required keyId field');
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
53
83
|
describe('constructor', () => {
|
|
54
84
|
it('creates an AwsKmsSigner with valid config', async () => {
|
|
55
85
|
const keyPair = await generateKeyPairSigner();
|
package/src/__tests__/setup.ts
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { SolanaSigner } from '@solana/keychain-core';
|
|
2
|
+
import type { SignerTestConfig, TestScenario } from '@solana/keychain-test-utils';
|
|
3
|
+
|
|
4
|
+
import { createAwsKmsSigner } from '../aws-kms-signer.js';
|
|
3
5
|
|
|
4
6
|
export const TEST_KEY_ID = 'arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012';
|
|
5
7
|
export const TEST_REGION = 'us-east-1';
|
|
8
|
+
|
|
9
|
+
const SIGNER_TYPE = 'aws-kms';
|
|
10
|
+
const REQUIRED_ENV_VARS = ['AWS_KMS_KEY_ID', 'AWS_KMS_SIGNER_PUBKEY'];
|
|
11
|
+
|
|
12
|
+
const CONFIG: SignerTestConfig<SolanaSigner> = {
|
|
13
|
+
createSigner: () =>
|
|
14
|
+
Promise.resolve(
|
|
15
|
+
createAwsKmsSigner({
|
|
16
|
+
keyId: process.env.AWS_KMS_KEY_ID!,
|
|
17
|
+
publicKey: process.env.AWS_KMS_SIGNER_PUBKEY!,
|
|
18
|
+
region: process.env.AWS_KMS_REGION,
|
|
19
|
+
}),
|
|
20
|
+
),
|
|
21
|
+
requiredEnvVars: REQUIRED_ENV_VARS,
|
|
22
|
+
signerType: SIGNER_TYPE,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export async function getConfig(scenarios: TestScenario[]): Promise<SignerTestConfig<SolanaSigner>> {
|
|
26
|
+
return {
|
|
27
|
+
...CONFIG,
|
|
28
|
+
testScenarios: scenarios,
|
|
29
|
+
};
|
|
30
|
+
}
|
package/src/aws-kms-signer.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { DescribeKeyCommand, KMSClient, MessageType, SignCommand, SigningAlgorithmSpec } from '@aws-sdk/client-kms';
|
|
2
2
|
import { Address, assertIsAddress } from '@solana/addresses';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
assertSignatureValid,
|
|
5
|
+
createSignatureDictionary,
|
|
6
|
+
SignerErrorCode,
|
|
7
|
+
SolanaSigner,
|
|
8
|
+
throwSignerError,
|
|
9
|
+
} from '@solana/keychain-core';
|
|
4
10
|
import { SignatureBytes } from '@solana/keys';
|
|
5
11
|
import { SignableMessage, SignatureDictionary } from '@solana/signers';
|
|
6
12
|
import { Transaction, TransactionWithinSizeLimit, TransactionWithLifetime } from '@solana/transactions';
|
|
7
13
|
|
|
8
14
|
import type { AwsCredentials, AwsKmsSignerConfig } from './types.js';
|
|
9
15
|
|
|
16
|
+
export function createAwsKmsSigner<TAddress extends string = string>(
|
|
17
|
+
config: AwsKmsSignerConfig,
|
|
18
|
+
): SolanaSigner<TAddress> {
|
|
19
|
+
return AwsKmsSigner.create(config);
|
|
20
|
+
}
|
|
21
|
+
|
|
10
22
|
/**
|
|
11
23
|
* AWS KMS-based signer using EdDSA (Ed25519) signing
|
|
12
24
|
*
|
|
@@ -21,6 +33,8 @@ import type { AwsCredentials, AwsKmsSignerConfig } from './types.js';
|
|
|
21
33
|
* --key-usage SIGN_VERIFY \
|
|
22
34
|
* --description "Solana signing key"
|
|
23
35
|
* ```
|
|
36
|
+
*
|
|
37
|
+
* @deprecated Prefer `createAwsKmsSigner()`. Class export will be removed in a future version.
|
|
24
38
|
*/
|
|
25
39
|
export class AwsKmsSigner<TAddress extends string = string> implements SolanaSigner<TAddress> {
|
|
26
40
|
readonly address: Address<TAddress>;
|
|
@@ -28,6 +42,12 @@ export class AwsKmsSigner<TAddress extends string = string> implements SolanaSig
|
|
|
28
42
|
private readonly client: KMSClient;
|
|
29
43
|
private readonly requestDelayMs: number;
|
|
30
44
|
|
|
45
|
+
/** @deprecated Use `createAwsKmsSigner()` instead. */
|
|
46
|
+
static create<TAddress extends string = string>(config: AwsKmsSignerConfig): AwsKmsSigner<TAddress> {
|
|
47
|
+
return new AwsKmsSigner<TAddress>(config);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** @deprecated Use `createAwsKmsSigner()` instead. Direct construction will be removed in a future version. */
|
|
31
51
|
constructor(config: AwsKmsSignerConfig) {
|
|
32
52
|
if (!config.keyId) {
|
|
33
53
|
throwSignerError(SignerErrorCode.CONFIG_ERROR, {
|
|
@@ -159,6 +179,11 @@ export class AwsKmsSigner<TAddress extends string = string> implements SolanaSig
|
|
|
159
179
|
? message.content
|
|
160
180
|
: new Uint8Array(Array.from(message.content));
|
|
161
181
|
const signatureBytes = await this.signBytes(messageBytes);
|
|
182
|
+
await assertSignatureValid({
|
|
183
|
+
data: messageBytes,
|
|
184
|
+
signature: signatureBytes,
|
|
185
|
+
signerAddress: this.address,
|
|
186
|
+
});
|
|
162
187
|
return createSignatureDictionary({
|
|
163
188
|
signature: signatureBytes,
|
|
164
189
|
signerAddress: this.address,
|
|
@@ -177,7 +202,13 @@ export class AwsKmsSigner<TAddress extends string = string> implements SolanaSig
|
|
|
177
202
|
transactions.map(async (transaction, index) => {
|
|
178
203
|
await this.delay(index);
|
|
179
204
|
// Sign the transaction message bytes
|
|
180
|
-
const
|
|
205
|
+
const txMessageBytes = new Uint8Array(transaction.messageBytes);
|
|
206
|
+
const signatureBytes = await this.signBytes(txMessageBytes);
|
|
207
|
+
await assertSignatureValid({
|
|
208
|
+
data: txMessageBytes,
|
|
209
|
+
signature: signatureBytes,
|
|
210
|
+
signerAddress: this.address,
|
|
211
|
+
});
|
|
181
212
|
return createSignatureDictionary({
|
|
182
213
|
signature: signatureBytes,
|
|
183
214
|
signerAddress: this.address,
|
package/src/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AwsKmsSigner } from './aws-kms-signer.js';
|
|
1
|
+
export { AwsKmsSigner, createAwsKmsSigner } from './aws-kms-signer.js';
|
|
2
2
|
export type { AwsKmsSignerConfig, AwsCredentials, KmsKeyMetadata } from './types.js';
|