summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.ts20
-rw-r--r--packages/server/src/helpers/iso/isoCrypto/structs.ts1
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';