- From: Emil Lundberg via GitHub <sysbot+gh@w3.org>
- Date: Fri, 10 Feb 2023 15:35:36 +0000
- To: public-webauthn@w3.org
emlun has just created a new issue for https://github.com/w3c/webauthn: == PRF inputs should be BufferSource instead of ArrayBuffer == Throughout the WebAuthn API we use `BufferSource` for binary input parameters (e.g., [`PublicKeyCredentialCreationOptions.challenge`](https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-challenge), [`PublicKeyCredentialUserEntity.id`](https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-id)) and `ArrayBuffer` for binary return values (e.g., [`PublicKeyCredential.rawId`](https://w3c.github.io/webauthn/#dom-publickeycredential-rawid), [`AuthenticatorAttestationResponse.attestationObject`](https://w3c.github.io/webauthn/#dom-authenticatorattestationresponse-attestationobject)). However the `prf` extension uses `ArrayBuffer` for both input parameters and output return values. This means that this code example: ```javascript var credid = null; navigator.credentials.create({ publicKey: { challenge: new Uint8Array([1, 2, 3, 4]), pubKeyCredParams: [{type: 'public-key', alg: -7}], rp: { name: 'Test' }, user: { id: new Uint8Array([5, 6, 7, 8]), name: 'test', displayName: 'Test' }, extensions: { prf: { eval: { first: new Uint8Array([1, 2, 3, 4]), }, }, }, }, }).then(cred => { console.log(cred); console.log(cred.getClientExtensionResults()); credid = cred.rawId; }) ``` generates the following error in Chrome Canary (112.0.5580.0): ``` VM1538:2 Uncaught (in promise) TypeError: Failed to execute 'create' on 'CredentialsContainer': Failed to read the 'publicKey' property from 'CredentialCreationOptions': Failed to read the 'extensions' property from 'PublicKeyCredentialCreationOptions': Failed to read the 'prf' property from 'AuthenticationExtensionsClientInputs': Failed to read the 'eval' property from 'AuthenticationExtensionsPRFInputs': Failed to read the 'first' property from 'AuthenticationExtensionsPRFValues': Failed to convert value to 'ArrayBuffer'. at <anonymous>:2:23 ``` This can be worked around using `new Uint8Array(...).buffer`, but is not in line with how the rest of the API works. ## Proposed Change - Split [`AuthenticationExtensionsPRFValues`](https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfvalues) into two versions: one for input and one for output. - Change `ArrayBuffer` to `BufferSource` in the one used in client extension inputs. Please view or discuss this issue at https://github.com/w3c/webauthn/issues/1851 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Friday, 10 February 2023 15:35:38 UTC