signal-unknown-credential.https.html (2559B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Signal unknown credential tests</title> 4 <meta name="timeout" content="long"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/resources/testdriver.js"></script> 8 <script src="/resources/testdriver-vendor.js"></script> 9 <script src=helpers.js></script> 10 11 <body></body> 12 <script> 13 "use strict"; 14 15 const authenticatorOptions = { 16 protocol: "ctap2_1", 17 hasResidentKey: true, 18 isUserVerified: true, 19 hasUserVerification: true, 20 }; 21 22 const userId = Uint8Array.from([1, 2, 3, 4]); 23 24 function createDiscoverableCredential() { 25 return createCredential({ 26 options: { 27 publicKey: { 28 authenticatorSelection: { 29 residentKey: "required", 30 }, 31 user: { 32 id: userId, 33 name: "reimu", 34 displayName: "Reimu Hakurei", 35 } 36 }, 37 }, 38 }); 39 } 40 41 virtualAuthenticatorPromiseTest(async t => { 42 return promise_rejects_dom(t, "SecurityError", PublicKeyCredential.signalUnknownCredential({ 43 rpId: "umbrella-corporation.example.com", 44 credentialId: base64urlEncode([1, 2, 3, 4]), 45 })); 46 }, authenticatorOptions, "signalUnknownCredential fails with SecurityError for invalid RP IDs"); 47 48 virtualAuthenticatorPromiseTest(async t => { 49 return promise_rejects_js(t, TypeError, PublicKeyCredential.signalUnknownCredential({ 50 rpId: window.location.hostname, 51 credentialId: "Not base 64 url", 52 })); 53 }, authenticatorOptions, "signalUnknownCredential fails with TypeError for invalid base64url"); 54 55 virtualAuthenticatorPromiseTest(async t => { 56 const credential = await createDiscoverableCredential(); 57 await assertCredential(credential); 58 await PublicKeyCredential.signalUnknownCredential({ 59 rpId: window.location.hostname, 60 credentialId: base64urlEncode([1, 2, 3, 4]), 61 }); 62 await assertCredential(credential); 63 }, authenticatorOptions, "signalUnknownCredential does not remove a credential that does not match the ID"); 64 65 virtualAuthenticatorPromiseTest(async t => { 66 const credential = await createDiscoverableCredential(); 67 await assertCredential(credential); 68 await PublicKeyCredential.signalUnknownCredential({ 69 rpId: window.location.hostname, 70 credentialId: credential.id, 71 }); 72 return promise_rejects_dom(t, "NotAllowedError", assertCredential(credential)); 73 }, authenticatorOptions, "signalUnknownCredential removes a credential that matches the ID"); 74 </script>