21 lines
665 B
JavaScript
21 lines
665 B
JavaScript
import fs from "fs-extra";
|
|
|
|
const { ENABLE_FIDO2 } = process.env;
|
|
|
|
export default async (req, res) => {
|
|
if (!ENABLE_FIDO2) return res.status(403).send("FIDO2 disabled");
|
|
const assertionOptions = await req.app.locals.f2l.assertionOptions();
|
|
req.app.locals.assertionOptions = assertionOptions;
|
|
return res.send({
|
|
...assertionOptions,
|
|
allowCredentials: fs
|
|
.readdirSync("registered")
|
|
.filter((e) => e.match(/\.pem$/))
|
|
.map((e) => ({
|
|
type: "public-key",
|
|
id: Buffer.from(e.replace(".pem", ""), "base64url").toString("base64"),
|
|
})),
|
|
challenge: Buffer.from(assertionOptions.challenge).toString("base64"),
|
|
});
|
|
};
|