tor-browser

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

webauthn.sys.mjs (4176B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
      6 
      7 const lazy = {};
      8 
      9 XPCOMUtils.defineLazyServiceGetter(
     10  lazy,
     11  "webauthnService",
     12  "@mozilla.org/webauthn/service;1",
     13  Ci.nsIWebAuthnService
     14 );
     15 
     16 /** @namespace */
     17 export const webauthn = {};
     18 
     19 /**
     20 * Add a virtual authenticator.
     21 *
     22 * @param {string} protocol one of "ctap1/u2f", "ctap2", "ctap2_1"
     23 * @param {string} transport one of "usb", "nfc", "ble", "smart-card",
     24 *                 "hybrid", "internal"
     25 * @param {boolean} hasResidentKey
     26 * @param {boolean} hasUserVerification
     27 * @param {boolean} isUserConsenting
     28 * @param {boolean} isUserVerified
     29 * @returns {id} the id of the added authenticator
     30 */
     31 webauthn.addVirtualAuthenticator = function (
     32  protocol,
     33  transport,
     34  hasResidentKey,
     35  hasUserVerification,
     36  isUserConsenting,
     37  isUserVerified
     38 ) {
     39  return lazy.webauthnService.addVirtualAuthenticator(
     40    protocol,
     41    transport,
     42    hasResidentKey,
     43    hasUserVerification,
     44    isUserConsenting,
     45    isUserVerified
     46  );
     47 };
     48 
     49 /**
     50 * Removes a virtual authenticator.
     51 *
     52 * @param {id} authenticatorId the id of the virtual authenticator
     53 */
     54 webauthn.removeVirtualAuthenticator = function (authenticatorId) {
     55  lazy.webauthnService.removeVirtualAuthenticator(authenticatorId);
     56 };
     57 
     58 /**
     59 * Adds a credential to a previously-added virtual authenticator.
     60 *
     61 * @param {string} authenticatorId the id of the virtual authenticator
     62 * @param {string} credentialId a probabilistically-unique byte sequence
     63 *                 identifying a public key credential source and its
     64 *                 authentication assertions (encoded using Base64url
     65 *                 Encoding).
     66 * @param {boolean} isResidentCredential if set to true, a client-side
     67 *                  discoverable credential is created. If set to false, a
     68 *                  server-side credential is created instead.
     69 * @param {string} rpId The Relying Party ID the credential is scoped to.
     70 * @param {string} privateKey An asymmetric key package containing a single
     71 *                 private key per RFC5958, encoded using Base64url Encoding.
     72 * @param {string} userHandle The userHandle associated to the credential
     73 *                 encoded using Base64url Encoding.
     74 * @param {number} signCount The initial value for a signature counter
     75 *                 associated to the public key credential source.
     76 */
     77 webauthn.addCredential = function (
     78  authenticatorId,
     79  credentialId,
     80  isResidentCredential,
     81  rpId,
     82  privateKey,
     83  userHandle,
     84  signCount
     85 ) {
     86  lazy.webauthnService.addCredential(
     87    authenticatorId,
     88    credentialId,
     89    isResidentCredential,
     90    rpId,
     91    privateKey,
     92    userHandle,
     93    signCount
     94  );
     95 };
     96 
     97 /**
     98 * Gets all credentials from a virtual authenticator.
     99 *
    100 * @param {string} authenticatorId the id of the virtual authenticator
    101 * @returns {object} the credentials on the authenticator
    102 */
    103 webauthn.getCredentials = function (authenticatorId) {
    104  return lazy.webauthnService.getCredentials(authenticatorId);
    105 };
    106 
    107 /**
    108 * Removes a credential from a virtual authenticator.
    109 *
    110 * @param {string} authenticatorId the id of the virtual authenticator
    111 * @param {string} credentialId the id of the credential
    112 */
    113 webauthn.removeCredential = function (authenticatorId, credentialId) {
    114  lazy.webauthnService.removeCredential(authenticatorId, credentialId);
    115 };
    116 
    117 /**
    118 * Removes all credentials from a virtual authenticator.
    119 *
    120 * @param {string} authenticatorId the id of the virtual authenticator
    121 */
    122 webauthn.removeAllCredentials = function (authenticatorId) {
    123  lazy.webauthnService.removeAllCredentials(authenticatorId);
    124 };
    125 
    126 /**
    127 * Sets the "isUserVerified" bit on a virtual authenticator.
    128 *
    129 * @param {string} authenticatorId the id of the virtual authenticator
    130 * @param {bool} isUserVerified the value to set the "isUserVerified" bit to
    131 */
    132 webauthn.setUserVerified = function (authenticatorId, isUserVerified) {
    133  lazy.webauthnService.setUserVerified(authenticatorId, isUserVerified);
    134 };