通过浏览器访问ePass2003 Auto令牌

时间:2020-05-24 07:48:38

标签: firefox hardware pki pkcs#11 hsm

我的ePass2003 Auto令牌已加载有自签名证书。我将lib **。so文件加载到firefox中,现在firefox可以在令牌中列出证书了。我的要求是访问用于签名,加密和解密的密钥库,即用于对其进行加密操作的公钥和私钥。我可以要求进行上述加密操作的javascript API指南。

1 个答案:

答案 0 :(得分:1)

披露:我为CISPL工作

要访问ePass2003或任何智能卡或加密USB令牌,您需要使用浏览器扩展。据我所知,浏览器可能使用来自加密设备的密钥进行TLS握手。我公司提供了这样的扩展名 Signer.Digital Browser Extension ChromeFirefox

Windows Host可以从https://signer.digital/downloads/Signer.Digital.Browser.Extension.Setup.msi下载

在Windows上,我们不需要PKCS#11,但我们使用Windows CSP。因此,必须在Windows客户端设备上安装USB令牌驱动程序,才能从Web浏览器工作。 lib **。so文件不适用于Windows,但适用于Linux。

Linux主机使用此.so文件和PKCS#11来完成任务,但这对ePass2003用户而言是透明的,并且主机应用程序会对此进行处理。

我的要求是访问用于签名,加密和解密的密钥库,即用于对其进行加密操作的公钥和私钥。我可以要求进行上述加密操作的javascript API指南。

我正在列出javascript API(Signer.Digital版本1.6.3)提供:

  1. 选择证书:。这将打开弹出窗口以选择证书。可以提供certThumbPrint参数来静默选择证书。

SignerDigital.getSelectedCertificate(certThumbPrint = "")

  1. 签名哈希:

SignerDigital.signHash = function(hash, certAlgorithm, certThumbPrint = "")

  1. 签名身份验证/数据:计算数据的哈希值,然后签名哈希。

SignerDigital.signAuthToken = function(authtoken, certAlgorithm, certThumbPrint = "") certAlgorithm具有必须使用的算法。例如:“ SHA256”或“ SHA-256”

  1. Sign PDF-返回PKCS7签名容器

SignerDigital.signPdfHash = function(hash, certThumbPrint, certAlgorithm)

  1. 签名XML:

SignerDigital.signXML = function(xmlDoc, xmlSignParms, certThumbPrint)

  1. RSA加密:(使用用户的私钥)

SignerDigital.encryptB64Data = function(b64Data, useOAEPPadding, certThumbPrint = "")

示例:

var strToEnc = "Clear Text String to Encrypt.";
var strB64Data = btoa(strToEnc);
console.log("Base64 String of Clear Text String: " + strB64Data);

//Do not provide last parm - certThumbPrint to open dialog to select certificate.
SignerDigital.encryptB64Data(strB64Data, false, "224D7F695ABF0E22EA8D314497F5B56AEFA96FFE") //false for PKCS1 padding, true for OAEP padding
  .then(
    function(EncryptedB64String) { //Success returns xmlSign
      console.log("Encrypted Base64 String: " + EncryptedB64String);
      console.log("Encrypted String: " + atob(EncryptedB64String));
    },
    function(ErrMsg) {
      console.log(ErrMsg);
    }
  )

  1. RSA解密:(使用用户的私钥)

SignerDigital.decryptB64Data = function(b64Data, useOAEPPadding, certThumbPrint = "")

示例:

console.log("Encrypted B64 string from server: " + EncB64String);
SignerDigital.decryptB64Data(EncB64String, false, "224D7F695ABF0E22EA8D314497F5B56AEFA96FFE")
  .then(
    function(DecryptedB64String) { //Success returns xmlSign
      console.log("Decrypted Base64 String: " + DecryptedB64String);
      console.log("Decrypted String: " + atob(DecryptedB64String));
    },
    function(ErrMsg) {
      console.log(ErrMsg);
    }
  )
},
error: function(msg) {
  console.debug(msg);
}

  1. 签署IT / eTDS回报:(签署印度所得税/ eTDS回报-与signHash方法相同,但其他可选参数:PAN)

SignerDigital.signITHash = function(hash, PAN, certThumbPrint = "")

传递PAN空白以打开“选择证书”对话框。如果PAN为非空,并且存在PAN的证书,则将以静默方式选择证书。

  1. 签署CMS:(签署印度GST退货)

SignerDigital.signGstHash = function(hash, certThumbPrint = "")

  1. 签署IceGate数据:(签署IceGate-印度海关数据-Json,文本,XML)

SignerDigital.signIceGate = function(b64Data, certThumbPrint = "")

PDF签名和基于数字签名的身份验证的工作可以在https://web.signer.digital/进行测试

相关问题