summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2022-11-16 13:38:43 -0800
committerMatthew Miller <matthew@millerti.me>2022-11-16 13:39:09 -0800
commitdc5c0307f34bb9136e0d708b1ae9f29ac194eb1d (patch)
tree2f635f7e9d61b9356915bd0cee617e827a459d7f /packages/server/src
parent7eac8700c861a10774a24d329730055cecaa062b (diff)
Define COSECRV as enums
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/helpers/convertCOSEtoPKCS.ts9
-rw-r--r--packages/server/src/helpers/convertPublicKeyToPEM.ts4
-rw-r--r--packages/server/src/helpers/iso/isoCrypto.ts8
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';
}