diff options
author | Matthew Miller <matthew@millerti.me> | 2024-01-19 22:23:03 -0800 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2024-01-19 22:23:03 -0800 |
commit | df343ea81a620228383f87bc3cf03bccf5ff0bb9 (patch) | |
tree | 0550abd0f5215383f95bee433e5c5233d89757e6 | |
parent | 2f4d01b6a1831bfeb22befe220995a2c4f01c905 (diff) |
Treat custom challenge strings as UTF-8 strings
-rw-r--r-- | packages/server/src/registration/generateRegistrationOptions.test.ts | 15 | ||||
-rw-r--r-- | packages/server/src/registration/generateRegistrationOptions.ts | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/packages/server/src/registration/generateRegistrationOptions.test.ts b/packages/server/src/registration/generateRegistrationOptions.test.ts index 3b7f62b..fded674 100644 --- a/packages/server/src/registration/generateRegistrationOptions.test.ts +++ b/packages/server/src/registration/generateRegistrationOptions.test.ts @@ -192,6 +192,21 @@ Deno.test('should generate a challenge if one is not provided', async () => { mockGenerateChallenge.restore(); }); +Deno.test('should treat string challenges as UTF-8 strings', async () => { + const options = await generateRegistrationOptions({ + rpID: 'not.real', + rpName: 'SimpleWebAuthn', + userID: '1234', + userName: 'usernameHere', + challenge: 'こんにちは', + }); + + assertEquals( + options.challenge, + '44GT44KT44Gr44Gh44Gv', + ); +}); + Deno.test('should use custom supported algorithm IDs as-is when provided', async () => { const options = await generateRegistrationOptions({ rpID: 'not.real', diff --git a/packages/server/src/registration/generateRegistrationOptions.ts b/packages/server/src/registration/generateRegistrationOptions.ts index 54bdaa5..c894abb 100644 --- a/packages/server/src/registration/generateRegistrationOptions.ts +++ b/packages/server/src/registration/generateRegistrationOptions.ts @@ -157,7 +157,7 @@ export async function generateRegistrationOptions( */ let _challenge = challenge; if (typeof _challenge === 'string') { - _challenge = isoUint8Array.fromASCIIString(_challenge); + _challenge = isoUint8Array.fromUTF8String(_challenge); } return { |