tor-browser

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

createcredential-large-blob-not-supported.https.html (2796B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>navigator.credentials.create() 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(function() {
     13  "use strict";
     14 
     15  new CreateCredentialsTest("options.publicKey.extensions", {
     16    largeBlob: {
     17      write: new ArrayBuffer(),
     18    },
     19  }).runTest("navigator.credentials.create() with largeBlob.write set", "NotSupportedError");
     20 
     21  new CreateCredentialsTest("options.publicKey.extensions", {
     22    largeBlob: {
     23      read: true,
     24    },
     25  }).runTest("navigator.credentials.create() with largeBlob.read set", "NotSupportedError");
     26 
     27  promise_test(async t => {
     28    const credential = await createCredential({
     29      options: {
     30        publicKey: {
     31          authenticatorSelection: {
     32            requireResidentKey: true,
     33          },
     34          extensions: {
     35            largeBlob: {
     36              support: "preferred",
     37            },
     38          },
     39        },
     40      },
     41    });
     42    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
     43    assert_false(credential.getClientExtensionResults().largeBlob.supported);
     44    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
     45    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
     46  }, "navigator.credentials.create() with largeBlob.support set to preferred and not supported by authenticator");
     47 
     48  promise_test(async t => {
     49    const credential = await createCredential({
     50      options: {
     51        publicKey: {
     52          authenticatorSelection: {
     53            requireResidentKey: true,
     54          },
     55          extensions: {
     56            largeBlob: {},
     57          },
     58        },
     59      },
     60    });
     61    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
     62    assert_false(credential.getClientExtensionResults().largeBlob.supported);
     63    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
     64    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
     65  }, "navigator.credentials.create() with largeBlob.support not set and not supported by authenticator");
     66 
     67  new CreateCredentialsTest("options.publicKey.extensions", {
     68    largeBlob: {
     69      support: "required"
     70    },
     71  }).runTest("navigator.credentials.create() with largeBlob.support set to required and not supported by authenticator", "NotAllowedError");
     72 }, {
     73  protocol: "ctap2_1",
     74  hasResidentKey: true,
     75  hasUserVerification: true,
     76  isUserVerified: true,
     77 });
     78 </script>