diff options
author | Matthew Miller <matthew@millerti.me> | 2022-11-16 13:38:43 -0800 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2022-11-16 13:39:09 -0800 |
commit | dc5c0307f34bb9136e0d708b1ae9f29ac194eb1d (patch) | |
tree | 2f635f7e9d61b9356915bd0cee617e827a459d7f /packages/server/src | |
parent | 7eac8700c861a10774a24d329730055cecaa062b (diff) |
Define COSECRV as enums
Diffstat (limited to 'packages/server/src')
-rw-r--r-- | packages/server/src/helpers/convertCOSEtoPKCS.ts | 9 | ||||
-rw-r--r-- | packages/server/src/helpers/convertPublicKeyToPEM.ts | 4 | ||||
-rw-r--r-- | packages/server/src/helpers/iso/isoCrypto.ts | 8 |
3 files changed, 14 insertions, 7 deletions
diff --git a/packages/server/src/helpers/convertCOSEtoPKCS.ts b/packages/server/src/helpers/convertCOSEtoPKCS.ts index f897cc8..19e4c4c 100644 --- a/packages/server/src/helpers/convertCOSEtoPKCS.ts +++ b/packages/server/src/helpers/convertCOSEtoPKCS.ts @@ -41,6 +41,13 @@ export enum COSEKTY { RSA = 3, } +export enum COSECRV { + P256 = 1, + P384 = 2, + P521 = 3, + ED25519 = 6, +} + export const COSERSASCHEME: { [key: string]: SigningSchemeHash } = { '-3': 'pss-sha256', '-39': 'pss-sha512', @@ -52,7 +59,7 @@ export const COSERSASCHEME: { [key: string]: SigningSchemeHash } = { }; // See https://w3c.github.io/webauthn/#sctn-alg-identifier -export const COSECRV: { [key: number]: string } = { +export const coseCRV: { [key: number]: string } = { // alg: -7 1: 'p256', // alg: -35 diff --git a/packages/server/src/helpers/convertPublicKeyToPEM.ts b/packages/server/src/helpers/convertPublicKeyToPEM.ts index a41952f..2721e3a 100644 --- a/packages/server/src/helpers/convertPublicKeyToPEM.ts +++ b/packages/server/src/helpers/convertPublicKeyToPEM.ts @@ -1,6 +1,6 @@ import jwkToPem from 'jwk-to-pem'; -import { COSEKEYS, COSEKTY, COSECRV, COSEPublicKey } from './convertCOSEtoPKCS'; +import { COSEKEYS, COSEKTY, coseCRV, COSEPublicKey } from './convertCOSEtoPKCS'; import { isoBase64URL, isoCBOR } from './iso'; export function convertPublicKeyToPEM(publicKey: Uint8Array): string { @@ -38,7 +38,7 @@ export function convertPublicKeyToPEM(publicKey: Uint8Array): string { const ecPEM = jwkToPem({ kty: 'EC', // Specify curve as "P-256" from "p256" - crv: COSECRV[crv as number].replace('p', 'P-'), + crv: coseCRV[crv as number].replace('p', 'P-'), x: isoBase64URL.fromBuffer(x as Uint8Array, 'base64'), y: isoBase64URL.fromBuffer(y as Uint8Array, 'base64'), }); diff --git a/packages/server/src/helpers/iso/isoCrypto.ts b/packages/server/src/helpers/iso/isoCrypto.ts index 4a39d55..d1abba0 100644 --- a/packages/server/src/helpers/iso/isoCrypto.ts +++ b/packages/server/src/helpers/iso/isoCrypto.ts @@ -3,7 +3,7 @@ import { ECDSASigValue } from "@peculiar/asn1-ecc"; import { AsnParser } from '@peculiar/asn1-schema'; import { isoUint8Array, isoBase64URL } from './index'; -import { COSEKEYS, COSEKTY, COSEPublicKey } from '../convertCOSEtoPKCS'; +import { COSECRV, coseCRV, COSEKEYS, COSEKTY, COSEPublicKey } from '../convertCOSEtoPKCS'; /** * Fill up the provided bytes array with random bytes equal to its length. @@ -188,15 +188,15 @@ function shouldRemoveLeadingZero(bytes: Uint8Array): boolean { * Convert a COSE crv ID into a corresponding string value that WebCrypto APIs expect */ function mapCoseCrvToWebCryptoCrv(crv: number): SubtleCryptoCrv { - if (crv === 1) { + if (crv === COSECRV.P256) { return 'P-256'; } - if (crv === 2) { + if (crv === COSECRV.P384) { return 'P-384'; } - if (crv === 3) { + if (crv === COSECRV.P521) { return 'P-521'; } |