通过浏览器访问ePass2003 Auto token

Accessing ePass2003 Auto token through browser

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

披露:我为 CISPL 工作

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

Windows主机可以从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 用户是透明的,主机应用程序会处理这个。

My requirement is to access the keystore for signing, encryption and decryption i.e public and private key for cryptographic operation on them. May i request guidance on javascript API for doing above cryptographic operation.

我列出 javascript API(Signer.Digital 版本 1.8.0)提供以下承诺:

  1. Select 证书: 这将打开 window 到 select 证书的弹出窗口。 certThumbPrint 参数可以静默提供给 select 证书。

SignerDigital.getSelectedCertificate(certThumbPrint = "", showExpired = false, keyUsageFilter = 128)

keyUsageFilter 值将按照 System.Security.Cryptography.X509Certificates.X509KeyUsageFlags 枚举,并且可以添加(求和)多个值。

  1. 符号哈希:

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

  1. 签署Authtoken/数据:计算数据的哈希值,然后签署哈希值。

SignerDigital.signAuthToken(authtoken, certAlgorithm, certThumbPrint = "", showExpired = false)

certAlgorithm 有要使用的算法。例如:“SHA256”或“SHA-256”

showExpired 标志可以在此处使用,以允许用户仅使用过期证书登录并仅提供对用户可以上传其新证书的区域的访问。

  1. Sign PDF: - Returns PKCS7 签名容器

SignerDigital.signPdfHash(hash, certThumbPrint, certAlgorithm)

可以在 https://web.signer.digital/

测试 PDF 签名和基于数字签名的身份验证的工作
  1. 签名XML:

SignerDigital.signXML(xmlDoc, xmlSignParms, certThumbPrint)

xmlSignParms 参数范围更广,我们在努力的基础上提供集成支持。

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

SignerDigital.encryptB64Data(b64Data, useOAEPPadding, certThumbPrint = "", showExpired = false, keyUsageFilter = 32)

示例:

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(b64Data, useOAEPPadding, certThumbPrint = "", showExpired = false, keyUsageFilter = 32)

示例:

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. Sign IT/eTDS Return: (Sign Indian Income Tax/eTDS Return - 与 signHash 方法相同,除了额外的可选参数:PAN)

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

将 PAN 传递空白以打开 Select 证书对话框。如果 PAN 不为空,并且 PAN 的证书存在,将静默 select certerficate.

  1. 签署 CMS:(数字签署印度 GST Return)

SignerDigital.signHashCms(hash, certAlgorithm, certIncludeOptions = 2, certThumbPrint = "")

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

SignerDigital.signIceGate(b64Data, certThumbPrint = "")

2021 年 7 月 添加以下 API 供认证机构使用(CA 需要注册 Signer.Digital 浏览器扩展)

  1. 检测连接的智能卡:(自动检测连接的智能卡或 USB 令牌)

SignerDigital.getPCSCReaders(onlyConnected = true) //列出PCSC Reader,如果要列出所有可用的reader,请将参数设置为false

  1. 生成 CSR:(用于智能卡或 USB 令牌中的证书注册)

SignerDigital.genCSR(PKCS11Lib, certSubject, certIssuer, keyBits = 2048, hasgAlgorithm = "SHA256", forceUserPinChangeIfDefault = false)

  1. 导入/下载证书(将用户证书和信任证书链导入智能卡或USB令牌)

SignerDigital.importCer(PKCS11Lib, b64Payload, certIssuer)

有关自动智能卡检测genCSRimportCer的代码示例,请参阅

2021 年 6 月更新

Signer.Digital 浏览器扩展主机版本 1.7.0 现在提供更好的用户控制,通过向用户询问试图访问 certificates/keys 的允许来源(网站)来增强安全性。此版本还具有自动更新功能,以便用户在通过用户帐户控制对话框批准更新后自动获得任何安全性updates/enhancements。