summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src/helpers/iso/isoCrypto/digest.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src/helpers/iso/isoCrypto/digest.ts')
-rw-r--r--packages/server/src/helpers/iso/isoCrypto/digest.ts18
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/server/src/helpers/iso/isoCrypto/digest.ts b/packages/server/src/helpers/iso/isoCrypto/digest.ts
new file mode 100644
index 0000000..05260a3
--- /dev/null
+++ b/packages/server/src/helpers/iso/isoCrypto/digest.ts
@@ -0,0 +1,18 @@
+import WebCrypto from '@simplewebauthn/iso-webcrypto';
+
+import { COSEALG } from '../../cose';
+import { mapCoseAlgToWebCryptoAlg } from './mapCoseAlgToWebCryptoAlg';
+
+/**
+ * Generate a digest of the provided data.
+ *
+ * @param data The data to generate a digest of
+ * @param algorithm A COSE algorithm ID that maps to a desired SHA algorithm
+ */
+export async function digest(data: Uint8Array, algorithm: COSEALG): Promise<Uint8Array> {
+ const subtleAlgorithm = mapCoseAlgToWebCryptoAlg(algorithm);
+
+ const hashed = await WebCrypto.subtle.digest(subtleAlgorithm, data);
+
+ return new Uint8Array(hashed);
+}