pkcs11

The pkcs11 API enables an extension to enumerate PKCS #11 security modules and to make them accessible to the browser as sources of keys and certificates.

To use this API you need to have the "pkcs11" permission.

Using the Firefox Preferences Dialog to Install PKCS #11 Modules

Perform the following steps:

  1. Save the PKCS #11 module to a permanent location on your local computer

  2. Select Tools > Options or select the Firefox menu and then Options

  3. Once the Options page opens, select Privacy & Security

  4. Scroll down to the bottom of the page and under Certificates click or tap on Security Devices...

  5. Click or tap the Load button

  6. Enter a name for the security module, such as "My Client Database"

    Be careful about using international characters as there is currently a bug in Firefox where international characters may cause problems.

  7. Choose Browse... to find the location of the PKCS #11 module on your local computer, and then click or tap OK to confirm.

Provisioning PKCS #11 modules

Note: Starting with Firefox 58, extensions can use the pkcs11 API to enumerate PKCS #11 modules and make them accessible to the browser as sources of keys and certificates.

There are two environmental prerequisites for using this API:

  • One or more PKCS #11 modules must be installed on the user's computer
  • For each installed PKCS #11 module, there must be a native manifest file that enables the browser to locate the module.

Most probably, the user or device administrator would install the PKCS #11 module, and its installer would install the native manifest file at the same time.

However, the module and manifest can't be installed as part of the extension's own installation process.

For details about the manifest file's contents and location, see Native manifests.

Functions

pkcs11.getModuleSlots()
For each slot in a module, get its name and whether it contains a token.
pkcs11.installModule()
Installs the named PKCS #11 module.
pkcs11.isModuleInstalled()
Checks whether the named PKCS #11 module is installed.
pkcs11.uninstallModule()
Uninstalls the named PKCS #11 module.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxOperaFirefox for Android
getModuleSlots
Non-standard
Chrome No support NoEdge No support NoFirefox Full support 58Opera No support NoFirefox Android No support No
installModule
Non-standard
Chrome No support NoEdge No support NoFirefox Full support 58Opera No support NoFirefox Android No support No
isModuleInstalled
Non-standard
Chrome No support NoEdge No support NoFirefox Full support 58Opera No support NoFirefox Android No support No
uninstallModule
Non-standard
Chrome No support NoEdge No support NoFirefox Full support 58Opera No support NoFirefox Android No support No

Legend

Full support  
Full support
No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.