summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/deps.ts2
-rw-r--r--packages/server/src/registration/generateRegistrationOptions.test.ts5
-rw-r--r--packages/server/src/registration/generateRegistrationOptions.ts23
3 files changed, 20 insertions, 10 deletions
diff --git a/packages/server/src/deps.ts b/packages/server/src/deps.ts
index 3acef11..53b6247 100644
--- a/packages/server/src/deps.ts
+++ b/packages/server/src/deps.ts
@@ -5,12 +5,12 @@ export type {
AuthenticationResponseJSON,
AuthenticatorDevice,
AuthenticatorSelectionCriteria,
+ AuthenticatorTransportFuture,
Base64URLString,
COSEAlgorithmIdentifier,
CredentialDeviceType,
Crypto,
PublicKeyCredentialCreationOptionsJSON,
- PublicKeyCredentialDescriptorFuture,
PublicKeyCredentialParameters,
PublicKeyCredentialRequestOptionsJSON,
RegistrationResponseJSON,
diff --git a/packages/server/src/registration/generateRegistrationOptions.test.ts b/packages/server/src/registration/generateRegistrationOptions.test.ts
index fded674..6704d23 100644
--- a/packages/server/src/registration/generateRegistrationOptions.test.ts
+++ b/packages/server/src/registration/generateRegistrationOptions.test.ts
@@ -67,8 +67,7 @@ Deno.test('should map excluded credential IDs if specified', async () => {
userName: 'usernameHere',
excludeCredentials: [
{
- id: isoUint8Array.fromASCIIString('someIDhere'),
- type: 'public-key',
+ id: 'someIDhere',
transports: ['usb', 'ble', 'nfc', 'internal'],
},
],
@@ -78,7 +77,7 @@ Deno.test('should map excluded credential IDs if specified', async () => {
options.excludeCredentials,
[
{
- id: 'c29tZUlEaGVyZQ',
+ id: 'someIDhere',
type: 'public-key',
transports: ['usb', 'ble', 'nfc', 'internal'],
},
diff --git a/packages/server/src/registration/generateRegistrationOptions.ts b/packages/server/src/registration/generateRegistrationOptions.ts
index c894abb..2504751 100644
--- a/packages/server/src/registration/generateRegistrationOptions.ts
+++ b/packages/server/src/registration/generateRegistrationOptions.ts
@@ -2,9 +2,10 @@ import type {
AttestationConveyancePreference,
AuthenticationExtensionsClientInputs,
AuthenticatorSelectionCriteria,
+ AuthenticatorTransportFuture,
+ Base64URLString,
COSEAlgorithmIdentifier,
PublicKeyCredentialCreationOptionsJSON,
- PublicKeyCredentialDescriptorFuture,
PublicKeyCredentialParameters,
} from '../deps.ts';
import { generateChallenge } from '../helpers/generateChallenge.ts';
@@ -19,7 +20,10 @@ export type GenerateRegistrationOptionsOpts = {
userDisplayName?: string;
timeout?: number;
attestationType?: AttestationConveyancePreference;
- excludeCredentials?: PublicKeyCredentialDescriptorFuture[];
+ excludeCredentials?: {
+ id: Base64URLString;
+ transports?: AuthenticatorTransportFuture[];
+ }[];
authenticatorSelection?: AuthenticatorSelectionCriteria;
extensions?: AuthenticationExtensionsClientInputs;
supportedAlgorithmIDs?: COSEAlgorithmIdentifier[];
@@ -174,10 +178,17 @@ export async function generateRegistrationOptions(
pubKeyCredParams,
timeout,
attestation: attestationType,
- excludeCredentials: excludeCredentials.map((cred) => ({
- ...cred,
- id: isoBase64URL.fromBuffer(cred.id as Uint8Array),
- })),
+ excludeCredentials: excludeCredentials.map((cred) => {
+ if (!isoBase64URL.isBase64URL(cred.id)) {
+ throw new Error(`excludeCredential id "${cred.id}" is not a valid base64url string`);
+ }
+
+ return {
+ ...cred,
+ id: isoBase64URL.trimPadding(cred.id),
+ type: 'public-key',
+ };
+ }),
authenticatorSelection,
extensions: {
...extensions,