summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/helpers/generateChallenge.ts10
-rw-r--r--packages/server/src/helpers/toHash.ts25
2 files changed, 6 insertions, 29 deletions
diff --git a/packages/server/src/helpers/generateChallenge.ts b/packages/server/src/helpers/generateChallenge.ts
index b10e3d3..8277674 100644
--- a/packages/server/src/helpers/generateChallenge.ts
+++ b/packages/server/src/helpers/generateChallenge.ts
@@ -1,4 +1,4 @@
-import { webcrypto } from 'node:crypto';
+import { isoCrypto } from './iso';
/**
* Generate a suitably random value to be used as an attestation or assertion challenge
@@ -14,13 +14,7 @@ export function generateChallenge(): Uint8Array {
*/
const challenge = new Uint8Array(32);
- if (globalThis.crypto) {
- // We're in a browser-like runtime, use global Crypto
- globalThis.crypto.getRandomValues(challenge);
- } else {
- // We're in Node, use Node's Crypto
- webcrypto.getRandomValues(challenge);
- }
+ isoCrypto.getRandomValues(challenge);
return challenge;
}
diff --git a/packages/server/src/helpers/toHash.ts b/packages/server/src/helpers/toHash.ts
index 64123df..9295507 100644
--- a/packages/server/src/helpers/toHash.ts
+++ b/packages/server/src/helpers/toHash.ts
@@ -1,31 +1,14 @@
-import { webcrypto } from 'node:crypto';
-
-import { isoUint8Array } from './iso';
+import { isoUint8Array, isoCrypto } from './iso';
/**
- * Returns hash digest of the given data using the given algorithm.
- * @param data Data to hash
- * @return The hash
+ * Returns hash digest of the given data, using the given algorithm when provided
*/
export async function toHash(data: Uint8Array | string, algorithm = 'SHA-256'): Promise<Uint8Array> {
- if (/sha\d{1,3}/i.test(algorithm)) {
- // Convert algorithms like "SHA1", "SHA256", etc... into values like "SHA-1", "SHA-256", etc...
- // that `.digest()` will accept
- algorithm = algorithm.toUpperCase().replace('SHA', 'SHA-');
- }
-
if (typeof data === 'string') {
data = isoUint8Array.fromUTF8String(data);
}
- let hashed: ArrayBuffer
- if (globalThis.crypto) {
- // We're in a browser-like runtime, use global Crypto
- hashed = await globalThis.crypto.subtle.digest(algorithm, data);
- } else {
- // We're in Node, use Node's Crypto
- hashed = await webcrypto.subtle.digest(algorithm, data);
- }
+ const digest = isoCrypto.digest(data, algorithm);
- return new Uint8Array(hashed);
+ return digest;
}