如何在没有PIN提示的情况下通过智能卡读卡器访问PKI证书的私钥?

时间:2015-12-18 17:31:25

标签: c# .net cryptography smartcard pki

我需要访问存储在卡中的PKI证书的私钥。我可以通过智能卡读卡器访问它。每当我尝试使用私钥时,我第一次总是要在PIN提示中输入PIN码。

是否可以以编程方式输入PIN并在没有PIN提示的情况下使用私钥?我需要创建WCF服务,使用PKI证书对输入数据进行签名,然后将其签名给用户。

通过这种方式,我目前尝试使用C#:

使用PKI证书签署数据
var cmsSigner = new CmsSigner(x509certificate2); // certificate fetched from store
var contentInfo = new ContentInfo(dataToSign);
var signedCms = new SignedCms(contentInfo, true);
signedCms.ComputeSignature(cmsSigner, false);

PIN提示始终会在第一次ComputeSignature方法调用时打开。如何通过PIN直接访问私钥,避免通过提示手动输入PIN?

1 个答案:

答案 0 :(得分:1)

归结为两种情况:

  1. 硬件CSP(加密服务提供商)保持Microsoft定义的API并正确实现CspParameters;
  2. 当需要私钥操作时,硬件CSP本身会为PIN生成弹出窗口。
  3. 在第一种情况下,您应该阅读How to: Access Hardware Encryption Devices,然后尝试将a KeyPassword传递给CSP。

    在后一种情况下,它可能等于联系创建CSP的公司并询问可用的选项。幸运的是,此选项通常不再实施。