mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1018 B
28 lines
1018 B
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports._generateChallengeInternals = void 0;
|
|
exports.generateChallenge = generateChallenge;
|
|
const index_js_1 = require("./iso/index.js");
|
|
/**
|
|
* Generate a suitably random value to be used as an attestation or assertion challenge
|
|
*/
|
|
async function generateChallenge() {
|
|
/**
|
|
* WebAuthn spec says that 16 bytes is a good minimum:
|
|
*
|
|
* "In order to prevent replay attacks, the challenges MUST contain enough entropy to make
|
|
* guessing them infeasible. Challenges SHOULD therefore be at least 16 bytes long."
|
|
*
|
|
* Just in case, let's double it
|
|
*/
|
|
const challenge = new Uint8Array(32);
|
|
await index_js_1.isoCrypto.getRandomValues(challenge);
|
|
return exports._generateChallengeInternals.stubThis(challenge);
|
|
}
|
|
/**
|
|
* Make it possible to stub the return value during testing
|
|
* @ignore Don't include this in docs output
|
|
*/
|
|
exports._generateChallengeInternals = {
|
|
stubThis: (value) => value,
|
|
};
|
|
|