Skip to content

Commit bfb2564

Browse files
authored
feat: Implement disconnection from backing service(s) (#27)
Fixes #10
1 parent 234058f commit bfb2564

File tree

5 files changed

+35
-1
lines changed

5 files changed

+35
-1
lines changed

src/lib/KmsRsaPssProvider.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
import { RsaPssProvider } from 'webcrypto-core';
22

3-
export abstract class KmsRsaPssProvider extends RsaPssProvider {}
3+
export abstract class KmsRsaPssProvider extends RsaPssProvider {
4+
public abstract close(): Promise<void>;
5+
}

src/lib/aws/AwsKmsRsaPssProvider.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,4 +460,16 @@ describe('AwsKmsRsaPssProvider', () => {
460460
);
461461
});
462462
});
463+
464+
describe('close', () => {
465+
test('Client should be destroyed', async () => {
466+
const client = new KMSClient({});
467+
const mockDestroy = jest.spyOn(client, 'destroy').mockReturnValue(undefined);
468+
const provider = new AwsKmsRsaPssProvider(client);
469+
470+
await provider.close();
471+
472+
expect(mockDestroy).toHaveBeenCalledWith();
473+
});
474+
});
463475
});

src/lib/aws/AwsKmsRsaPssProvider.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ export class AwsKmsRsaPssProvider extends KmsRsaPssProvider {
114114
throw new KmsError('Signature verification is unsupported');
115115
}
116116

117+
async close(): Promise<void> {
118+
this.client.destroy();
119+
}
120+
117121
private async retrievePublicKey(key: AwsKmsRsaPssPrivateKey): Promise<ArrayBuffer> {
118122
const command = new GetPublicKeyCommand({ KeyId: key.arn });
119123
const response = await this.client.send(command, REQUEST_OPTIONS);

src/lib/gcp/GcpKmsRsaPssProvider.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,3 +770,15 @@ describe('onVerify', () => {
770770
);
771771
});
772772
});
773+
774+
describe('close', () => {
775+
test('Client should be closed', async () => {
776+
const client = new KeyManagementServiceClient();
777+
const mockClose = jest.spyOn(client, 'close').mockResolvedValue(undefined);
778+
const provider = new GcpKmsRsaPssProvider(client, KMS_CONFIG);
779+
780+
await provider.close();
781+
782+
expect(mockClose).toHaveBeenCalledWith();
783+
});
784+
});

src/lib/gcp/GcpKmsRsaPssProvider.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ export class GcpKmsRsaPssProvider extends KmsRsaPssProvider {
120120
throw new KmsError('Signature verification is unsupported');
121121
}
122122

123+
async close(): Promise<void> {
124+
await this.client.close();
125+
}
126+
123127
private async getGCPProjectId(): Promise<string> {
124128
// GCP client library already caches the project id.
125129
return this.client.getProjectId();

0 commit comments

Comments
 (0)