@microsoft/useragent-sdk
Version:
SDK for building decentralized identity wallets and enterprise agents.
42 lines (37 loc) • 2.19 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import CryptoFactory from '../../../src/crypto/plugin/CryptoFactory';
import KeyStoreInMemory from '../../../src/crypto/keyStore/KeyStoreInMemory';
import { SubtleCryptoNode } from '../../../src';
import { SubtleCrypto } from 'webcrypto-core';
import { SubtleCryptoElliptic } from '@microsoft/useragent-plugin-secp256k1';
import CryptoFactoryNode from '../../../src/crypto/plugin/CryptoFactoryNode';
describe('CryptoFactory', () => {
it('should create a crypto suite',() => {
const keyStore = new KeyStoreInMemory();
const factory = new CryptoFactory(keyStore, SubtleCryptoNode.getSubtleCrypto());
expect(factory).toBeDefined();
const keyEncrypter = factory.getKeyEncrypter('*');
expect(keyEncrypter).toBeDefined();
const macSigner = factory.getMessageAuthenticationCodeSigners('*');
expect(macSigner).toBeDefined();
const messageDigest = factory.getMessageDigest('*');
expect(messageDigest).toBeDefined();
const messageSigner = factory.getMessageSigner('*');
expect(messageSigner).toBeDefined();
const sharedKeyEncrypter = factory.getSharedKeyEncrypter('*');
expect(sharedKeyEncrypter).toBeDefined();
const symmetricEncrypter = factory.getSymmetricEncrypter('*');
expect(symmetricEncrypter).toBeDefined();
})
it('should plugin a new algorithm into crypto suite',() => {
const keyStore = new KeyStoreInMemory();
const factory = new CryptoFactoryNode(keyStore, SubtleCryptoNode.getSubtleCrypto());
const messageSigner = factory.getMessageSigner('ed25519');
expect(messageSigner instanceof SubtleCryptoElliptic).toBeTruthy();
expect((<any>messageSigner).providers.algorithms.includes('EDDSA')).toBeTruthy();
expect((<any>messageSigner).providers.algorithms.includes('ECDSA')).toBeTruthy();
})
});