tor-browser

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

getcredential-large-blob-not-supported.https.html (3012B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>navigator.credentials.get() largeBlob extension tests with no 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(async function() {
     13  "use strict";
     14 
     15  const credential = createCredential();
     16 
     17  promise_test(async t => {
     18    return promise_rejects_dom(t, "NotSupportedError",
     19      navigator.credentials.get({publicKey: {
     20        challenge: new Uint8Array(),
     21        allowCredentials: [{
     22          id: (await credential).rawId,
     23          type: "public-key",
     24        }],
     25        extensions: {
     26          largeBlob: {
     27            support: "preferred",
     28          },
     29        },
     30      }}));
     31  }, "navigator.credentials.get() with largeBlob.support set");
     32 
     33  promise_test(async t => {
     34    return promise_rejects_dom(t, "NotSupportedError",
     35      navigator.credentials.get({publicKey: {
     36        challenge: new Uint8Array(),
     37        allowCredentials: [{
     38          id: (await credential).rawId,
     39          type: "public-key",
     40        }],
     41        extensions: {
     42          largeBlob: {
     43            read: true,
     44            write: new ArrayBuffer(),
     45          },
     46        },
     47      }}));
     48  }, "navigator.credentials.get() with largeBlob.read and largeBlob.write set");
     49 
     50  promise_test(async t => {
     51    const assertion = await navigator.credentials.get({publicKey: {
     52      challenge: new Uint8Array(),
     53      allowCredentials: [{
     54        id: (await credential).rawId,
     55        type: "public-key",
     56      }],
     57      extensions: {
     58        largeBlob: {
     59          read: true,
     60        },
     61      },
     62    }});
     63    assert_not_own_property(assertion.getClientExtensionResults().largeBlob, "supported");
     64    assert_not_own_property(assertion.getClientExtensionResults().largeBlob, "blob");
     65    assert_not_own_property(assertion.getClientExtensionResults().largeBlob, "written");
     66  }, "navigator.credentials.get() with largeBlob.read set without authenticator support");
     67 
     68  promise_test(async t => {
     69    const assertion = await navigator.credentials.get({publicKey: {
     70      challenge: new Uint8Array(),
     71      allowCredentials: [{
     72        id: (await credential).rawId,
     73        type: "public-key",
     74      }],
     75      extensions: {
     76        largeBlob: {
     77          write: new TextEncoder().encode("Don't call me Shirley"),
     78        },
     79      },
     80    }});
     81    assert_not_own_property(assertion.getClientExtensionResults().largeBlob, "supported");
     82    assert_not_own_property(assertion.getClientExtensionResults().largeBlob, "blob");
     83    assert_false(assertion.getClientExtensionResults().largeBlob.written);
     84  }, "navigator.credentials.get() with largeBlob.write set without authenticator support");
     85 }, {
     86  protocol: "ctap2_1",
     87  hasResidentKey: true,
     88  hasUserVerification: true,
     89  isUserVerified: true,
     90 });
     91 </script>