tor-browser

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

createcredential-prf.https.html (2229B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>navigator.credentials.create() prf extension tests with authenticator support</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 <body></body>
     11 <script>
     12 standardSetup(function() {
     13  "use strict";
     14 
     15  promise_test(async t => {
     16    const credential = await createCredential({
     17      options: {
     18        publicKey: {
     19          extensions: {
     20            prf: {},
     21          },
     22        },
     23      },
     24    });
     25    assert_true(credential.getClientExtensionResults().prf.enabled);
     26  }, "navigator.credentials.create() with prf requested");
     27 
     28  promise_test(async t => {
     29    const promise = createCredential({
     30      options: {
     31        publicKey: {
     32          extensions: {
     33            prf: {evalByCredential: {"Zm9v": {first: new Uint8Array([1,2,3,4]).buffer}}},
     34          },
     35        },
     36      },
     37    });
     38    return promise_rejects_dom(t, "NotSupportedError", promise);
     39  }, "navigator.credentials.create() with nonsensical evalByCredential");
     40 
     41  promise_test(async t => {
     42    // Evaluating the PRF at creation time is not supported by security keys
     43    // because it cannot be expressed with the CTAP2 hmac-secret extension,
     44    // but it is defined at the WebAuthn level.
     45 
     46    const credential = await createCredential({
     47      options: {
     48        publicKey: {
     49          extensions: {
     50            prf: {eval: {first: new Uint8Array([1,2,3,4]).buffer}},
     51          },
     52        },
     53      },
     54    });
     55    assert_true(credential.getClientExtensionResults().prf.enabled,
     56                "prf.enabled");
     57    assert_true('results' in credential.getClientExtensionResults().prf,
     58                "has results");
     59    assert_true('first' in credential.getClientExtensionResults().prf.results,
     60                "has results.first");
     61    assert_equals(
     62        credential.getClientExtensionResults().prf.results.first.byteLength, 32,
     63        "correct length output");
     64  }, "navigator.credentials.create() with eval");
     65 }, {
     66  protocol: "ctap2_1",
     67  extensions: ["prf"],
     68 });
     69 </script>