diff options
author | Matthew Miller <matthew@millerti.me> | 2022-11-11 22:05:45 -0800 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2022-11-11 22:05:45 -0800 |
commit | 8879fe5cd842a1c5bf79b0a4c72fbc3c8fa5ef3e (patch) | |
tree | 4efbecbe49484f66d63cae3d2d2e16131dad4654 /packages/server/src | |
parent | 0d660aff42827a410fa3a80772810b0b3e535b88 (diff) |
Attempt to make generateChallenge isomorphic
Diffstat (limited to 'packages/server/src')
-rw-r--r-- | packages/server/src/helpers/generateChallenge.ts | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/packages/server/src/helpers/generateChallenge.ts b/packages/server/src/helpers/generateChallenge.ts index 3813385..b10e3d3 100644 --- a/packages/server/src/helpers/generateChallenge.ts +++ b/packages/server/src/helpers/generateChallenge.ts @@ -1,3 +1,5 @@ +import { webcrypto } from 'node:crypto'; + /** * Generate a suitably random value to be used as an attestation or assertion challenge */ @@ -11,7 +13,14 @@ export function generateChallenge(): Uint8Array { * Just in case, let's double it */ const challenge = new Uint8Array(32); - globalThis.crypto.getRandomValues(challenge); + + 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); + } return challenge; } |