pkcs11.getModuleSlots()

枚举模块的插槽。此函数返回一个数组,其中包含每个插槽的一个条目。每个条目包含插槽的名称,如果插槽包含令牌,则包含令牌信息。

您只能对已安装在 Firefox 中的模块调用此函数。

这是一个异步函数,返回一个 Promise

语法

js
let getting = browser.pkcs11.getModuleSlots(
  name              // string
)

参数

name

string。模块名称。此名称必须与 PKCS #11 manifest 中模块的 name 属性匹配。

返回值

一个 Promise,它将以一个对象数组的形式兑现,该数组包含模块提供访问的每个插槽的一个对象。每个对象有两个属性:

  • name:插槽的名称。
  • token:如果此插槽中存在令牌,则为 Token 对象。如果插槽中不存在令牌,则此属性为 null

Token 对象具有以下属性:

name

string。令牌的名称。

manufacturer

string。令牌制造商的名称。

HWVersion

string。硬件版本,格式为 PKCS #11 版本号(两个 32 位整数用点分隔,例如“1.0”)。

FWVersion

string。固件版本,格式为 PKCS #11 版本号(两个 32 位整数用点分隔,例如“1.0”)。

serial

string。序列号,其格式由令牌规范定义。

isLoggedIn

boolean:如果令牌已登录,则为 true,否则为 false

如果找不到模块或发生其他错误,承诺将被拒绝并显示错误消息。

示例

安装一个模块,然后列出它的插槽以及其中包含的令牌。

js
function onInstalled() {
  return browser.pkcs11.getModuleSlots("my_module");
}

function onGotSlots(slots) {
  for (const slot of slots) {
    console.log(`Slot: ${slot.name}`);
    if (slot.token) {
      console.log(`Contains token: ${slot.token.name}`);
    } else {
      console.log("Is empty");
    }
  }
}

browser.pkcs11.installModule("my_module").then(onInstalled).then(onGotSlots);

浏览器兼容性