diff options
Diffstat (limited to 'packages/server/src')
-rw-r--r-- | packages/server/src/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.ts | 20 | ||||
-rw-r--r-- | packages/server/src/helpers/iso/isoCrypto/structs.ts | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/packages/server/src/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.ts b/packages/server/src/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.ts new file mode 100644 index 0000000..e27e7c1 --- /dev/null +++ b/packages/server/src/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.ts @@ -0,0 +1,20 @@ +import { COSEALG } from "../../cose"; +import { SubtleCryptoKeyAlgName } from "./structs"; + + +/** + * Convert a COSE alg ID into a corresponding key algorithm string value that WebCrypto APIs expect + */ +export function mapCoseAlgToWebCryptoKeyAlgName(alg: COSEALG): SubtleCryptoKeyAlgName { + if ([COSEALG.EdDSA].indexOf(alg) >= 0) { + return 'Ed25519'; + } else if ([COSEALG.ES256, COSEALG.ES384, COSEALG.ES512, COSEALG.ES256K].indexOf(alg) >= 0) { + return 'ECDSA'; + } else if ([COSEALG.RS256, COSEALG.RS384, COSEALG.RS512].indexOf(alg) >= 0) { + return 'RSASSA-PKCS1-v1_5' + } else if ([COSEALG.PS256, COSEALG.PS384, COSEALG.PS512].indexOf(alg) >= 0) { + return 'RSA-PSS'; + } + + throw new Error(`Unexpected COSE alg value of ${alg}`); +} diff --git a/packages/server/src/helpers/iso/isoCrypto/structs.ts b/packages/server/src/helpers/iso/isoCrypto/structs.ts index 0816ac3..3a2bce5 100644 --- a/packages/server/src/helpers/iso/isoCrypto/structs.ts +++ b/packages/server/src/helpers/iso/isoCrypto/structs.ts @@ -1,2 +1,3 @@ export type SubtleCryptoAlg = "SHA-1" | "SHA-256" | "SHA-384" | "SHA-512"; export type SubtleCryptoCrv = "P-256" | "P-384" | "P-521" | "Ed25519"; +export type SubtleCryptoKeyAlgName = 'ECDSA' | 'Ed25519' | 'RSASSA-PKCS1-v1_5' | 'RSA-PSS'; |