Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox 通过浏览器访问ePass2003自动令牌_Firefox_Hardware_Pki_Pkcs#11_Hsm - Fatal编程技术网

Firefox 通过浏览器访问ePass2003自动令牌

Firefox 通过浏览器访问ePass2003自动令牌,firefox,hardware,pki,pkcs#11,hsm,Firefox,Hardware,Pki,Pkcs#11,Hsm,我已将ePass2003自动令牌加载到自签名证书中。我得到了lib**.so文件以加载到firefox中,现在firefox可以在令牌中列出证书。我的要求是访问用于签名、加密和解密的密钥库,即用于加密操作的公钥和私钥。我可以请求有关javascript API的指导,以便执行上述加密操作。披露:我为CISPL工作 要访问ePass2003或任何智能卡或加密USB令牌,您需要使用浏览器扩展。据我所知,浏览器可能会使用加密设备的密钥进行TLS握手。我公司提供这样的扩展签名。数字浏览器扩展。及 Win

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

披露:我为CISPL工作

要访问ePass2003或任何智能卡或加密USB令牌,您需要使用浏览器扩展。据我所知,浏览器可能会使用加密设备的密钥进行TLS握手。我公司提供这样的扩展签名。数字浏览器扩展。及

Windows主机可以从以下位置下载:

在windows上,我们不需要PKCS#11,但我们使用windows CSP。因此,必须在Windows客户端设备上安装USB令牌驱动程序,才能在web浏览器上运行。所以这个文件不是针对Windows的,而是针对Linux的

Linux主机使用这个.so文件和PKCS#11来完成任务,但这对ePass2003用户是透明的,主机应用程序负责这一点

我的要求是访问用于签名、加密和解密的密钥库,即用于加密操作的公钥和私钥。请允许我请求有关javascript API的指导,以便执行上述加密操作

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

  • 选择证书:这将打开弹出窗口选择证书。可以提供certThumbPrint参数以静默选择证书
  • SignerDigital.getSelectedCertificate(certThumbPrint=“”,showExpired=false,keyUsageFilter=128)

    keyUsageFilter值应符合System.Security.Cryptography.X509Certificates.X509KeyUsageFlags枚举,并且可以添加(求和)多个值

  • 签名哈希:
  • SignerDigital.signHash=函数(散列,certAlgorithm,certThumbPrint=“”)

  • 对Authtoken/Data进行签名:计算数据的哈希值,然后对哈希值进行签名
  • SignerDigital.signAuthToken=函数(authtoken,certAlgorithm,certThumbPrint=“”,showExpired=false)

    certAlgorithm是一个需要使用的算法。例如:“SHA256”或“SHA-256”

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

  • -返回PKCS7签名容器
  • SignerDigital.signPdfHash=函数(散列、certThumbPrint、certAlgorithm)

  • 为XML签名:
  • SignerDigital.signXML=function(xmlDoc、xmlSignParms、certThumbPrint)

  • RSA加密:(使用用户的私钥)
  • SignerDigital.encryptB64Data=函数(b64Data,UseAeppadding,certThumbPrint=“”,showExpired=false,keyUsageFilter=32)

    例如:

    var strotenc=“要加密的明文字符串。”;
    var strB64Data=btoa(strotenc);
    log(“明文字符串的Base64字符串:“+strB64Data”);
    //不要提供最后一个parm-certThumbPrint来打开选择证书的对话框。
    SignerDigital.encryptB64Data(strB64Data,false,“224D7F695ABF0E22EA8D314497F5B56AEFA96FFE”)//对于PKCS1填充为false,对于OAEP填充为true
    .那么(
    函数(EncryptedB64String){//成功返回xmlSign
    log(“加密的Base64字符串:“+EncryptedB64String”);
    log(“加密字符串:+atob(EncryptedB64String));
    },
    函数(ErrMsg){
    console.log(ErrMsg);
    }
    
    )
    感谢您以最清晰、最完整的方式回答问题。我现在能够根据上面给出的脚本使用令牌中的公钥加密文本。由于上述问题,我的项目暂停了,多亏了你,它现在有轮子了。我已经测试了上面的脚本,如果有人想在小的实现中使用它,请ping我。再次感谢。您好@BharatVasant。您能为.net core提供这个吗?是的。我们有.NET核心库和现成的应用程序。您不需要浏览器来访问硬件密钥;本地应用程序在这方面做得非常好(事实上,您的扩展证明了这一点;它使用本地应用程序作为“本地消息传递”服务器来破坏浏览器沙箱)。用户不需要采取行动来确保他们下载的内容安全;默认情况下,它应该是-需要是-安全的。不过,我很高兴听到你在进步。还考虑禁用对密钥的透明访问,至少对于给定站点的密钥的首次访问,尤其是不要使用公开数据(CURT指纹)来识别用于透明访问的秘密密钥。这听起来是一个巨大的改进!我去看看。