diff options
author | Matthew Miller <matthew@millerti.me> | 2020-06-23 22:55:00 -0700 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2020-06-23 22:55:00 -0700 |
commit | 4496371054edbc2709dd0848fcce7aa1e6313242 (patch) | |
tree | 7cd7c8c6c2b2abf2d5cedfbbdf244315e078b1a9 | |
parent | 20dae6884fb7285ec3d776ed0292f57fe953cc2d (diff) |
Add endpoint for FIDO assertion option tests
-rw-r--r-- | example/fido-conformance.js | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/example/fido-conformance.js b/example/fido-conformance.js index a0d6028..619a01a 100644 --- a/example/fido-conformance.js +++ b/example/fido-conformance.js @@ -2,7 +2,11 @@ const express = require('express'); const { v4: uuidv4 } = require('uuid'); -const { generateAttestationOptions, verifyAttestationResponse } = require('@simplewebauthn/server'); +const { + generateAttestationOptions, + verifyAttestationResponse, + generateAssertionOptions, +} = require('@simplewebauthn/server'); const inMemoryUserDeviceDB = { // [username]: string: { @@ -124,6 +128,36 @@ fidoComplianceRouter.post('/attestation/result', (req, res) => { }); }); +/** + * [FIDO2] Server Tests > GetAssertion Request + */ +fidoComplianceRouter.post('/assertion/options', (req, res) => { + const { body } = req; + const { username, userVerification, extensions } = body; + + loggedInUsername = username; + + let user = inMemoryUserDeviceDB[username]; + + const { devices } = user; + + const challenge = uuidv4(); + user.currentChallenge = challenge; + + const opts = generateAssertionOptions({ + challenge, + extensions, + userVerification, + allowedCredentialIDs: devices.map(dev => dev.credentialID), + }); + + return res.send({ + ...opts, + status: 'ok', + errorMessage: '', + }); +}); + fidoComplianceRouter.all('*', (req, res, next) => { console.log(req.url); console.log(req.method); |