| // META: script=/resources/WebIDLParser.js |
| // META: script=/resources/idlharness.js |
| // META: script=helpers.js |
| |
| // https://w3c.github.io/webauthn/ |
| |
| 'use strict'; |
| |
| promise_test(() => { |
| const execute_test = () => idl_test( |
| ['webauthn'], |
| ['credential-management'], |
| idlArray => { |
| idlArray.add_untested_idls("[Exposed=(Window,Worker)] interface ArrayBuffer {};"); |
| idlArray.add_objects({ |
| WebAuthentication: ['navigator.authentication'], |
| PublicKeyCredential: ['cred'], |
| AuthenticatorAssertionResponse: ['assertionResponse'] |
| }); |
| } |
| ); |
| |
| let challengeBytes = new Uint8Array(16); |
| window.crypto.getRandomValues(challengeBytes); |
| |
| return createCredential({ |
| options: { |
| publicKey: { |
| timeout: 3000, |
| user: { |
| id: new Uint8Array(16), |
| }, |
| } |
| } |
| }) |
| .then(cred => { |
| self.cred = cred; |
| return navigator.credentials.get({ |
| publicKey: { |
| timeout: 3000, |
| allowCredentials: [{ |
| id: cred.rawId, |
| transports: ["usb", "nfc", "ble"], |
| type: "public-key" |
| }], |
| challenge: challengeBytes, |
| } |
| }); |
| }) |
| .then(assertion => { |
| self.assertionResponse = assertion.response; |
| }) |
| .then(execute_test) |
| .catch(reason => { |
| execute_test(); |
| return Promise.reject(reason); |
| }); |
| }); |