// META: timeout=long // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js // META: script=helpers.js // https://w3c.github.io/webauthn/ 'use strict'; idl_test( ['webauthn'], ['credential-management'], async idlArray => { idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface ArrayBuffer {};"); idlArray.add_objects({ PublicKeyCredential: ['cred', 'assertion'], AuthenticatorAttestationResponse: ['cred.response'], AuthenticatorAssertionResponse: ['assertion.response'] }); const challengeBytes = new Uint8Array(16); window.crypto.getRandomValues(challengeBytes); self.cred = await Promise.race([ new Promise((_, reject) => window.setTimeout(() => { reject('Timed out waiting for user to touch security key') }, 3000)), createCredential({ options: { publicKey: { timeout: 3000, user: { id: new Uint8Array(16), }, } } }), ]); self.assertion = await navigator.credentials.get({ publicKey: { timeout: 3000, allowCredentials: [{ id: cred.rawId, transports: ["usb", "nfc", "ble"], type: "public-key" }], challenge: challengeBytes, } }); } );