diff options
Diffstat (limited to 'remote/marionette/webauthn.sys.mjs')
-rw-r--r-- | remote/marionette/webauthn.sys.mjs | 134 |
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); +}; |