Firefox 插件 PKCS#11 API
Firefox Addon PKCS#11 API
我想通过 Firefox Addon 访问当前连接的密码模块。
我发现一些界面看起来我可以访问模块、插槽和令牌 (1 → 2 → 3 → 4) 但我如何访问存储在此类令牌上的证书的 public 密钥?
是否有这样的 API 插件可用?
nsIX509CertDB.idl 提供了访问所有存储证书的方法,因此也提供了通过加密模块访问的证书。使用 tokenName 属性 过滤证书应该可行。
这是枚举所有证书的片段:
var certDB = chrome.Cc["@mozilla.org/security/x509certdb;1"].getService(chrome.Ci.nsIX509CertDB);
var certs = certDB.getCerts();
var enumerator = certs.getEnumerator();
var s = "";
while (enumerator.hasMoreElements()) {
var cert = enumerator.getNext().QueryInterface(chrome.Ci.nsIX509Cert);
if (cert.tokenName.equals("Your-token-name"))
s += cert.tokenName + " # ";
}
令牌的名称可以通过模块名称找到:nsIPKCS11ModuleDB.listModules() → nsIPKCS11Module.listSlots() → nsIPKCS11Slot.getToken() → nsIPK11Token.tokenName
我想通过 Firefox Addon 访问当前连接的密码模块。
我发现一些界面看起来我可以访问模块、插槽和令牌 (1 → 2 → 3 → 4) 但我如何访问存储在此类令牌上的证书的 public 密钥?
是否有这样的 API 插件可用?
nsIX509CertDB.idl 提供了访问所有存储证书的方法,因此也提供了通过加密模块访问的证书。使用 tokenName 属性 过滤证书应该可行。
这是枚举所有证书的片段:
var certDB = chrome.Cc["@mozilla.org/security/x509certdb;1"].getService(chrome.Ci.nsIX509CertDB);
var certs = certDB.getCerts();
var enumerator = certs.getEnumerator();
var s = "";
while (enumerator.hasMoreElements()) {
var cert = enumerator.getNext().QueryInterface(chrome.Ci.nsIX509Cert);
if (cert.tokenName.equals("Your-token-name"))
s += cert.tokenName + " # ";
}
令牌的名称可以通过模块名称找到:nsIPKCS11ModuleDB.listModules() → nsIPKCS11Module.listSlots() → nsIPKCS11Slot.getToken() → nsIPK11Token.tokenName