summaryrefslogtreecommitdiffstats
path: root/remote/marionette/webauthn.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'remote/marionette/webauthn.sys.mjs')
-rw-r--r--remote/marionette/webauthn.sys.mjs134
1 files changed, 134 insertions, 0 deletions
diff --git a/remote/marionette/webauthn.sys.mjs b/remote/marionette/webauthn.sys.mjs
new file mode 100644
index 0000000000..c52bf6cb5c
--- /dev/null
+++ b/remote/marionette/webauthn.sys.mjs
@@ -0,0 +1,134 @@
+/* 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);
+};