Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};
XPCOMUtils.defineLazyServiceGetter(
lazy,
"webauthnService",
"@mozilla.org/webauthn/service;1",
"nsIWebAuthnService"
);
/** @namespace */
export const webauthn = {};
/**
* Add a virtual authenticator.
*
* @param {string} protocol one of "ctap1/u2f", "ctap2", "ctap2_1"
* @param {string} transport one of "usb", "nfc", "ble", "smart-card",
* "hybrid", "internal"
* @param {boolean} hasResidentKey
* @param {boolean} hasUserVerification
* @param {boolean} isUserConsenting
* @param {boolean} isUserVerified
* @returns {id} the id of the added authenticator
*/
webauthn.addVirtualAuthenticator = function (
protocol,
transport,
hasResidentKey,
hasUserVerification,
isUserConsenting,
isUserVerified
) {
return lazy.webauthnService.addVirtualAuthenticator(
protocol,
transport,
hasResidentKey,
hasUserVerification,
isUserConsenting,
isUserVerified
);
};
/**
* Removes a virtual authenticator.
*
* @param {id} authenticatorId the id of the virtual authenticator
*/
webauthn.removeVirtualAuthenticator = function (authenticatorId) {
lazy.webauthnService.removeVirtualAuthenticator(authenticatorId);
};
/**
* Adds a credential to a previously-added virtual authenticator.
*
* @param {id} authenticatorId the id of the virtual authenticator
* @param {string} credentialId a probabilistically-unique byte sequence
* identifying a public key credential source and its
* authentication assertions (encoded using Base64url
* Encoding).
* @param {boolean} isResidentCredential if set to true, a client-side
* discoverable credential is created. If set to false, a
* server-side credential is created instead.
* @param {string} rpId The Relying Party ID the credential is scoped to.
* @param {string} privateKey An asymmetric key package containing a single
* private key per RFC5958, encoded using Base64url Encoding.
* @param {string} userHandle The userHandle associated to the credential
* encoded using Base64url Encoding.
* @param {number} signCount The initial value for a signature counter
* associated to the public key credential source.
*/
webauthn.addCredential = function (
authenticatorId,
credentialId,
isResidentCredential,
rpId,
privateKey,
userHandle,
signCount
) {
lazy.webauthnService.addCredential(
authenticatorId,
credentialId,
isResidentCredential,
rpId,
privateKey,
userHandle,
signCount
);
};
/**
* Gets all credentials from a virtual authenticator.
*
* @param {id} authenticatorId the id of the virtual authenticator
* @returns {object} the credentials on the authenticator
*/
webauthn.getCredentials = function (authenticatorId) {
return lazy.webauthnService.getCredentials(authenticatorId);
};
/**
* Removes a credential from a virtual authenticator.
*
* @param {id} authenticatorId the id of the virtual authenticator
* @param {string} credentialId the id of the credential
*/
webauthn.removeCredential = function (authenticatorId, credentialId) {
lazy.webauthnService.removeCredential(authenticatorId, credentialId);
};
/**
* Removes all credentials from a virtual authenticator.
*
* @param {id} authenticatorId the id of the virtual authenticator
*/
webauthn.removeAllCredentials = function (authenticatorId) {
lazy.webauthnService.removeAllCredentials(authenticatorId);
};
/**
* Sets the "isUserVerified" bit on a virtual authenticator.
*
* @param {id} authenticatorId the id of the virtual authenticator
* @param {bool} isUserVerified the value to set the "isUserVerified" bit to
*/
webauthn.setUserVerified = function (authenticatorId, isUserVerified) {
lazy.webauthnService.setUserVerified(authenticatorId, isUserVerified);
};