我需要访问存储在卡中的 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?
最佳答案
归结为两种情况:
- 硬件 CSP(加密服务提供商)遵守 Microsoft 定义的 API 并正确实现 CspParameters;
- 当需要私钥操作时,硬件 CSP 本身会为 PIN 生成一个弹出窗口。
在第一种情况下,您应该阅读 How to: Access Hardware Encryption Devices然后尝试通过 a KeyPassword
给 CSP。
在后一种情况下,可能需要联系创建 CSP 的公司并询问哪些选项可用。幸运的是,此选项通常不再实现。
关于c# - 如何在没有 PIN 提示的情况下通过智能卡读卡器访问 PKI 证书的私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360966/