summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/helpers/convertPublicKeyToPEM.test.ts82
-rw-r--r--packages/server/src/helpers/convertPublicKeyToPEM.ts69
2 files changed, 0 insertions, 151 deletions
diff --git a/packages/server/src/helpers/convertPublicKeyToPEM.test.ts b/packages/server/src/helpers/convertPublicKeyToPEM.test.ts
deleted file mode 100644
index efeaf3f..0000000
--- a/packages/server/src/helpers/convertPublicKeyToPEM.test.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import { COSEKEYS } from './convertCOSEtoPKCS';
-import { convertPublicKeyToPEM } from './convertPublicKeyToPEM';
-import { isoCBOR, isoUint8Array } from './iso';
-
-test('should return pem - EC2', () => {
- const mockEC2Key = new Map<number, number | Uint8Array>();
-
- const x = isoUint8Array.fromHex('821f4c9978ed99c1c57aca1fa9667a8aec52740620a0f56f7c9aa9bf5f35f25a');
- const y = isoUint8Array.fromHex('dc10d91ec36f2946f955bc863ea70015fe051ae3e12765f2db5e68583c3fd637');
- mockEC2Key.set(COSEKEYS.kty, 2);
- mockEC2Key.set(COSEKEYS.alg, -7);
- mockEC2Key.set(COSEKEYS.crv, 1);
- mockEC2Key.set(COSEKEYS.x, x);
- mockEC2Key.set(COSEKEYS.y, y);
-
- const pubKeyCBOR = isoCBOR.encode(mockEC2Key);
-
- const actual = convertPublicKeyToPEM(pubKeyCBOR);
- expect(actual).toEqual(`-----BEGIN PUBLIC KEY-----
-MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgh9MmXjtmcHFesofqWZ6iuxSdAYg\noPVvfJqpv1818lrcENkew28pRvlVvIY+pwAV/gUa4+EnZfLbXmhYPD/WNw==
------END PUBLIC KEY-----
-`);
-});
-
-test('should return pem - RSA', () => {
- const mockRSAKey = new Map<number, number | Buffer>();
-
- const n = Buffer.from(
- '0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw',
- 'base64',
- );
- const e = Buffer.from('AQAB', 'base64');
- mockRSAKey.set(COSEKEYS.kty, 3);
- mockRSAKey.set(COSEKEYS.alg, -7);
- mockRSAKey.set(COSEKEYS.crv, 1);
- mockRSAKey.set(COSEKEYS.n, n);
- mockRSAKey.set(COSEKEYS.e, e);
-
- const pubKeyCBOR = isoCBOR.encode(mockRSAKey);
-
- const actual = convertPublicKeyToPEM(pubKeyCBOR);
- expect(actual).toEqual(`-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0vx7agoebGcQSuuPiLJX
-ZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tS
-oc/BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ/2W+5JsGY4Hc5n9yBXArwl93lqt
-7/RN5w6Cf0h4QyQ5v+65YGjQR0/FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0
-zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt+bFTWhAI4vMQFh6WeZu0f
-M4lFd2NcRwr3XPksINHaQ+G/xBniIqbw0Ls1jF44+csFCur+kEgU8awapJzKnqDK
-gwIDAQAB
------END PUBLIC KEY-----
-`);
-});
-
-test('should return pem when input is base64URLString', () => {
- const mockCOSEKey = new Map<number, number | Buffer>();
-
- mockCOSEKey.set(COSEKEYS.kty, 0);
- mockCOSEKey.set(COSEKEYS.alg, -7);
-
- const pubKeyCBOR = isoCBOR.encode(mockCOSEKey);
-
- try {
- convertPublicKeyToPEM(pubKeyCBOR);
- } catch (err) {
- expect((err as Error).message).toEqual('Public key was missing kty');
- }
-});
-
-test('should raise error when kty is OKP (1)', () => {
- const mockOKPKey = new Map<number, number | Buffer>();
-
- mockOKPKey.set(COSEKEYS.kty, 1);
- mockOKPKey.set(COSEKEYS.alg, -7);
-
- const pubKeyCBOR = isoCBOR.encode(mockOKPKey);
-
- try {
- convertPublicKeyToPEM(pubKeyCBOR);
- } catch (err) {
- expect((err as Error).message).toEqual('Could not convert public key type 1 to PEM');
- }
-});
diff --git a/packages/server/src/helpers/convertPublicKeyToPEM.ts b/packages/server/src/helpers/convertPublicKeyToPEM.ts
deleted file mode 100644
index 2aa685d..0000000
--- a/packages/server/src/helpers/convertPublicKeyToPEM.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import jwkToPem from 'jwk-to-pem';
-
-import { COSEKEYS, coseCRV, COSEPublicKey, isCOSEPublicKeyEC2, isCOSEPublicKeyRSA } from './convertCOSEtoPKCS';
-import { isoBase64URL, isoCBOR } from './iso';
-
-export function convertPublicKeyToPEM(publicKey: Uint8Array): string {
- let cosePublicKey;
- try {
- cosePublicKey = isoCBOR.decodeFirst<COSEPublicKey>(publicKey);
- } catch (err) {
- const _err = err as Error;
- throw new Error(`Error decoding public key while converting to PEM: ${_err.message}`);
- }
-
- const kty = cosePublicKey.get(COSEKEYS.kty);
-
- if (!kty) {
- throw new Error('Public key was missing kty');
- }
-
- if (isCOSEPublicKeyEC2(cosePublicKey)) {
- const crv = cosePublicKey.get(COSEKEYS.crv);
- const x = cosePublicKey.get(COSEKEYS.x);
- const y = cosePublicKey.get(COSEKEYS.y);
-
- if (!crv) {
- throw new Error('Public key was missing crv (EC2)');
- }
-
- if (!x) {
- throw new Error('Public key was missing x (EC2)');
- }
-
- if (!y) {
- throw new Error('Public key was missing y (EC2)');
- }
-
- const ecPEM = jwkToPem({
- kty: 'EC',
- // Specify curve as "P-256" from "p256"
- crv: coseCRV[crv as number].replace('p', 'P-'),
- x: isoBase64URL.fromBuffer(x, 'base64'),
- y: isoBase64URL.fromBuffer(y, 'base64'),
- });
-
- return ecPEM;
- } else if (isCOSEPublicKeyRSA(cosePublicKey)) {
- const n = cosePublicKey.get(COSEKEYS.n);
- const e = cosePublicKey.get(COSEKEYS.e);
-
- if (!n) {
- throw new Error('Public key was missing n (RSA)');
- }
-
- if (!e) {
- throw new Error('Public key was missing e (RSA)');
- }
-
- const rsaPEM = jwkToPem({
- kty: 'RSA',
- n: isoBase64URL.fromBuffer(n, 'base64'),
- e: isoBase64URL.fromBuffer(e, 'base64'),
- });
-
- return rsaPEM;
- }
-
- throw new Error(`Could not convert public key type ${kty} to PEM`);
-}