tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

webauthn-subframe.sub.html (1973B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>WebAuthn test subframe</title>
      4 <script src=../helpers.js></script>
      5 <script src="/resources/testdriver.js"></script>
      6 <script src="/resources/testdriver-vendor.js"></script>
      7 
      8 <script>
      9    "use strict";
     10 
     11    function reportResult(outcome, errorObj) {
     12        window.top.postMessage({ "type": "result", "result": outcome, "error": errorObj }, "*");
     13    }
     14 
     15    async function createCredentialAndReportResult(addUserActivation) {
     16        if (addUserActivation) {
     17            await test_driver.bless("create credential");
     18        }
     19        try {
     20            await createCredential();
     21            reportResult("success");
     22        } catch (e) {
     23            reportResult("failure", e);
     24        }
     25    }
     26 
     27    async function getCredentialAndReportResult(addUserActivation) {
     28        if (addUserActivation) {
     29            await test_driver.bless("create credential");
     30        }
     31        try {
     32            await navigator.credentials.get({
     33                publicKey: {
     34                    challenge: new Uint8Array(),
     35                    allowCredentials: [{
     36                        id: (await createCredential()).rawId,
     37                        type: "public-key",
     38                        userVerification: "discouraged",
     39                    }],
     40                }
     41            });
     42            reportResult("success");
     43        } catch (e) {
     44            reportResult("failure", e);
     45        }
     46    }
     47 
     48    window.addEventListener("message", e => {
     49        if (e.data.type == "create-credential") {
     50            createCredentialAndReportResult(e.data.addUserActivation);
     51            return;
     52        }
     53        if (e.data.type == "get-credential") {
     54            getCredentialAndReportResult(e.data.addUserActivation);
     55            return;
     56        }
     57        throw new Error(`Unrecognized message, e.data.type: ${e.data.type}`);
     58    });
     59 
     60    test_driver.set_test_context(window.top);
     61    window.top.postMessage({ "type": "subframe-loaded" }, "*");
     62 </script>