summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2024-01-19 22:23:03 -0800
committerMatthew Miller <matthew@millerti.me>2024-01-19 22:23:03 -0800
commitdf343ea81a620228383f87bc3cf03bccf5ff0bb9 (patch)
tree0550abd0f5215383f95bee433e5c5233d89757e6
parent2f4d01b6a1831bfeb22befe220995a2c4f01c905 (diff)
Treat custom challenge strings as UTF-8 strings
-rw-r--r--packages/server/src/registration/generateRegistrationOptions.test.ts15
-rw-r--r--packages/server/src/registration/generateRegistrationOptions.ts2
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 {