summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--example/index.ts26
-rw-r--r--packages/server/src/assertion/generateAssertionOptions.ts4
-rw-r--r--packages/server/src/assertion/verifyAssertionResponse.ts4
-rw-r--r--packages/server/src/attestation/generateAttestationOptions.ts4
-rw-r--r--packages/server/src/attestation/verifyAttestationResponse.ts4
-rw-r--r--packages/server/src/index.ts28
6 files changed, 41 insertions, 29 deletions
diff --git a/example/index.ts b/example/index.ts
index 631a0ee..6667fcd 100644
--- a/example/index.ts
+++ b/example/index.ts
@@ -21,12 +21,16 @@ import {
// Login ("Assertion")
generateAssertionOptions,
verifyAssertionResponse,
+ GenerateAttestationOptionsOpts,
+ VerifyAttestationResponseOptions,
+ VerifiedAttestation,
} from '@simplewebauthn/server';
import type {
AttestationCredentialJSON,
AssertionCredentialJSON,
AuthenticatorDevice,
+ PublicKeyCredentialCreationOptionsJSON,
} from '@simplewebauthn/typescript-types';
import { LoggedInUser } from './example-server';
@@ -95,8 +99,7 @@ app.get('/generate-attestation-options', (req, res) => {
username,
devices,
} = user;
-
- const options = generateAttestationOptions({
+ const attesOptions: GenerateAttestationOptionsOpts = {
rpName: 'SimpleWebAuthn Example',
rpID,
userID: loggedInUserId,
@@ -122,7 +125,8 @@ app.get('/generate-attestation-options', (req, res) => {
userVerification: 'preferred',
requireResidentKey: false,
},
- });
+ };
+ const options: PublicKeyCredentialCreationOptionsJSON = generateAttestationOptions(attesOptions);
/**
* The server needs to temporarily remember this value for verification, so don't lose it until
@@ -139,15 +143,15 @@ app.post('/verify-attestation', async (req, res) => {
const user = inMemoryUserDeviceDB[loggedInUserId];
const expectedChallenge = user.currentChallenge;
-
- let verification;
+ const verifyOptions: VerifyAttestationResponseOptions = {
+ credential: body,
+ expectedChallenge: `${expectedChallenge}`,
+ expectedOrigin,
+ expectedRPID: rpID,
+ };
+ let verification: VerifiedAttestation;
try {
- verification = await verifyAttestationResponse({
- credential: body,
- expectedChallenge: `${expectedChallenge}`,
- expectedOrigin,
- expectedRPID: rpID,
- });
+ verification = await verifyAttestationResponse(verifyOptions);
} catch (error) {
console.error(error);
return res.status(400).send({ error: error.message });
diff --git a/packages/server/src/assertion/generateAssertionOptions.ts b/packages/server/src/assertion/generateAssertionOptions.ts
index 2bbef06..35bf13e 100644
--- a/packages/server/src/assertion/generateAssertionOptions.ts
+++ b/packages/server/src/assertion/generateAssertionOptions.ts
@@ -8,7 +8,7 @@ import base64url from 'base64url';
import generateChallenge from '../helpers/generateChallenge';
-export type GenerateAssertionOptions = {
+export type GenerateAssertionOptionsOpts = {
allowCredentials?: PublicKeyCredentialDescriptor[];
challenge?: string | Buffer;
timeout?: number;
@@ -31,7 +31,7 @@ export type GenerateAssertionOptions = {
* @param rpID Valid domain name (after `https://`)
*/
export default function generateAssertionOptions(
- options: GenerateAssertionOptions = {},
+ options: GenerateAssertionOptionsOpts = {},
): PublicKeyCredentialRequestOptionsJSON {
const {
allowCredentials,
diff --git a/packages/server/src/assertion/verifyAssertionResponse.ts b/packages/server/src/assertion/verifyAssertionResponse.ts
index e97a8f3..ca7f92c 100644
--- a/packages/server/src/assertion/verifyAssertionResponse.ts
+++ b/packages/server/src/assertion/verifyAssertionResponse.ts
@@ -12,7 +12,7 @@ import verifySignature from '../helpers/verifySignature';
import parseAuthenticatorData from '../helpers/parseAuthenticatorData';
import isBase64URLString from '../helpers/isBase64URLString';
-export type VerifyAssertionOptions = {
+export type VerifyAssertionResponseOptions = {
credential: AssertionCredentialJSON;
expectedChallenge: string;
expectedOrigin: string | string[];
@@ -36,7 +36,7 @@ export type VerifyAssertionOptions = {
* `generateAssertionOptions()`. Activates FIDO-specific user presence and verification checks.
* Omitting this value defaults verification to a WebAuthn-specific user presence requirement.
*/
-export default function verifyAssertionResponse(options: VerifyAssertionOptions): VerifiedAssertion {
+export default function verifyAssertionResponse(options: VerifyAssertionResponseOptions): VerifiedAssertion {
const {
credential,
expectedChallenge,
diff --git a/packages/server/src/attestation/generateAttestationOptions.ts b/packages/server/src/attestation/generateAttestationOptions.ts
index aa5f437..6faf30c 100644
--- a/packages/server/src/attestation/generateAttestationOptions.ts
+++ b/packages/server/src/attestation/generateAttestationOptions.ts
@@ -11,7 +11,7 @@ import base64url from 'base64url';
import generateChallenge from '../helpers/generateChallenge';
-export type GenerateAttestationOptions = {
+export type GenerateAttestationOptionsOpts = {
rpName: string;
rpID: string;
userID: string;
@@ -94,7 +94,7 @@ const defaultSupportedAlgorithmIDs = supportedCOSEAlgorithmIdentifiers.filter(id
* attestation by this RP. See https://www.iana.org/assignments/cose/cose.xhtml#algorithms
*/
export default function generateAttestationOptions(
- options: GenerateAttestationOptions,
+ options: GenerateAttestationOptionsOpts,
): PublicKeyCredentialCreationOptionsJSON {
const {
rpName,
diff --git a/packages/server/src/attestation/verifyAttestationResponse.ts b/packages/server/src/attestation/verifyAttestationResponse.ts
index ee018af..2c3cb35 100644
--- a/packages/server/src/attestation/verifyAttestationResponse.ts
+++ b/packages/server/src/attestation/verifyAttestationResponse.ts
@@ -20,7 +20,7 @@ import verifyTPM from './verifications/tpm/verifyTPM';
import verifyAndroidKey from './verifications/verifyAndroidKey';
import verifyApple from './verifications/verifyApple';
-export type VerifyAttestationOptions = {
+export type VerifyAttestationResponseOptions = {
credential: AttestationCredentialJSON;
expectedChallenge: string;
expectedOrigin: string | string[];
@@ -45,7 +45,7 @@ export type VerifyAttestationOptions = {
* attestation by this RP. See https://www.iana.org/assignments/cose/cose.xhtml#algorithms
*/
export default async function verifyAttestationResponse(
- options: VerifyAttestationOptions,
+ options: VerifyAttestationResponseOptions,
): Promise<VerifiedAttestation> {
const {
credential,
diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts
index b3c9406..adfa79a 100644
--- a/packages/server/src/index.ts
+++ b/packages/server/src/index.ts
@@ -2,10 +2,10 @@
* @packageDocumentation
* @module @simplewebauthn/server
*/
-import generateAttestationOptions, { GenerateAttestationOptions } from './attestation/generateAttestationOptions';
-import generateAssertionOptions, { GenerateAssertionOptions } from './assertion/generateAssertionOptions';
-import verifyAttestationResponse, { VerifiedAttestation, VerifyAttestationOptions } from './attestation/verifyAttestationResponse';
-import verifyAssertionResponse, { VerifiedAssertion, VerifyAssertionOptions } from './assertion/verifyAssertionResponse';
+import generateAttestationOptions from './attestation/generateAttestationOptions';
+import generateAssertionOptions from './assertion/generateAssertionOptions';
+import verifyAttestationResponse from './attestation/verifyAttestationResponse';
+import verifyAssertionResponse from './assertion/verifyAssertionResponse';
import MetadataService from './metadata/metadataService';
export {
@@ -13,11 +13,19 @@ export {
verifyAttestationResponse,
generateAssertionOptions,
verifyAssertionResponse,
- GenerateAttestationOptions,
- GenerateAssertionOptions,
- VerifyAttestationOptions,
- VerifyAssertionOptions,
- VerifiedAttestation,
- VerifiedAssertion,
MetadataService,
};
+
+import type { GenerateAttestationOptionsOpts } from './attestation/generateAttestationOptions';
+import type { GenerateAssertionOptionsOpts } from './assertion/generateAssertionOptions';
+import type { VerifiedAttestation, VerifyAttestationResponseOptions } from './attestation/verifyAttestationResponse';
+import type { VerifiedAssertion, VerifyAssertionResponseOptions } from './assertion/verifyAssertionResponse';
+
+export type {
+ GenerateAttestationOptionsOpts,
+ GenerateAssertionOptionsOpts,
+ VerifyAttestationResponseOptions,
+ VerifyAssertionResponseOptions,
+ VerifiedAttestation,
+ VerifiedAssertion,
+} \ No newline at end of file