UNPKG

@microsoft/useragent-sdk

Version:

SDK for building decentralized identity wallets and enterprise agents.

49 lines 3.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ const KeyStoreInMemory_1 = require("../../../src/crypto/keyStore/KeyStoreInMemory"); const SubtleCryptoNode_1 = require("../../../src/crypto/plugin/SubtleCryptoNode"); const SubtleCryptoExtension_1 = require("../../../src/crypto/plugin/SubtleCryptoExtension"); const src_1 = require("../../../src"); const CryptoFactoryNode_1 = require("../../../src/crypto/plugin/CryptoFactoryNode"); const KeyContainer_1 = require("../../../src/crypto/keys/KeyContainer"); describe('SubtleCryptoExtension', () => { it('should sign a reference message', async () => { const alg = { name: 'ECDSA', namedCurve: 'P-256K', hash: { name: 'SHA-256' } }; }); it('should sign a message', async () => { const keyStore = new KeyStoreInMemory_1.default(); const factory = new CryptoFactoryNode_1.default(keyStore, SubtleCryptoNode_1.default.getSubtleCrypto()); const subtle = new SubtleCryptoExtension_1.default(factory); const alg = { name: 'ECDSA', namedCurve: 'P-256K', hash: { name: 'SHA-256' }, format: 'DER' }; const jwk = new src_1.EcPrivateKey({ "kid": "#signing", "kty": "EC", "use": "sig", "alg": "ES256K", "crv": "P-256K", "x": "7RlJnsuYQuSNdpRAFwejCXZqsAccW_QKWw4dPmABBVA", "y": "nf0vn9ib6ObyLm4WaDWUe8g3gkEwo2jVbthS7R4MsaU", "d": "2PtA4bb6fXprFLfjIJsi5Cer8YAdEDVDomYNYK9ppkU" }); await keyStore.save('key', new KeyContainer_1.default(jwk)); const payload = Buffer.from('test'); let signature = await subtle.signByKeyStore(alg, 'key', payload); expect(signature.byteLength).toBeGreaterThan(65); const publicKey = (await keyStore.get('key', true)).getKey(); let result = await subtle.verifyByJwk(alg, publicKey, signature, payload); expect(result).toBeTruthy(); // without DER delete alg.format; signature = await subtle.signByKeyStore(alg, 'key', payload); expect(signature.byteLength).toBeLessThanOrEqual(64); result = await subtle.verifyByJwk(alg, publicKey, signature, payload); expect(result).toBeTruthy(); }); it('should generate an RSA key via the plugin', async () => { const keyStore = new KeyStoreInMemory_1.default(); const factory = new CryptoFactoryNode_1.default(keyStore, SubtleCryptoNode_1.default.getSubtleCrypto()); const generator = factory.getKeyEncrypter('RSA-OAEP'); const alg = { name: 'RSA-OAEP', hash: 'SHA-256', modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]) }; const key = await generator.generateKey(alg, true, ['encrypt', 'decrypt']); let jwk = new src_1.RsaPrivateKey(await generator.exportKey('jwk', key.privateKey)); expect(jwk.d).toBeDefined(); expect(jwk.p).toBeDefined(); expect(jwk.q).toBeDefined(); }); }); //# sourceMappingURL=SubtleCryptoExtension.spec.js.map