fix: ArrayBuffer type casts for WebAuthn ceremony in TS 5.x

Uint8Array.buffer returns ArrayBufferLike which is incompatible with
PublicKeyCredentialCreationOptions/RequestOptions in strict mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-02-13 07:43:05 -07:00
parent f48a98d520
commit 36584014ae
2 changed files with 4 additions and 4 deletions

View File

@ -64,13 +64,13 @@ function SignInForm() {
const challenge = Uint8Array.from(atob(options.challenge.replace(/-/g, "+").replace(/_/g, "/")), c => c.charCodeAt(0)); const challenge = Uint8Array.from(atob(options.challenge.replace(/-/g, "+").replace(/_/g, "/")), c => c.charCodeAt(0));
const publicKeyOptions: PublicKeyCredentialRequestOptions = { const publicKeyOptions: PublicKeyCredentialRequestOptions = {
challenge, challenge: challenge.buffer as ArrayBuffer,
rpId: options.rpId, rpId: options.rpId,
userVerification: options.userVerification as UserVerificationRequirement, userVerification: options.userVerification as UserVerificationRequirement,
timeout: options.timeout, timeout: options.timeout,
allowCredentials: options.allowCredentials?.map((c: { type: string; id: string; transports?: string[] }) => ({ allowCredentials: options.allowCredentials?.map((c: { type: string; id: string; transports?: string[] }) => ({
type: c.type as PublicKeyCredentialType, type: c.type as PublicKeyCredentialType,
id: Uint8Array.from(atob(c.id.replace(/-/g, "+").replace(/_/g, "/")), ch => ch.charCodeAt(0)), id: Uint8Array.from(atob(c.id.replace(/-/g, "+").replace(/_/g, "/")), ch => ch.charCodeAt(0)).buffer as ArrayBuffer,
transports: c.transports as AuthenticatorTransport[], transports: c.transports as AuthenticatorTransport[],
})), })),
}; };

View File

@ -94,10 +94,10 @@ export default function SignUpPage() {
} }
const publicKeyOptions: PublicKeyCredentialCreationOptions = { const publicKeyOptions: PublicKeyCredentialCreationOptions = {
challenge: fromBase64url(options.challenge), challenge: fromBase64url(options.challenge).buffer as ArrayBuffer,
rp: options.rp, rp: options.rp,
user: { user: {
id: fromBase64url(options.user.id), id: fromBase64url(options.user.id).buffer as ArrayBuffer,
name: options.user.name, name: options.user.name,
displayName: options.user.displayName, displayName: options.user.displayName,
}, },