summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2020-06-23 22:55:00 -0700
committerMatthew Miller <matthew@millerti.me>2020-06-23 22:55:00 -0700
commit4496371054edbc2709dd0848fcce7aa1e6313242 (patch)
tree7cd7c8c6c2b2abf2d5cedfbbdf244315e078b1a9
parent20dae6884fb7285ec3d776ed0292f57fe953cc2d (diff)
Add endpoint for FIDO assertion option tests
-rw-r--r--example/fido-conformance.js36
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);