【发布时间】:2013-05-15 16:13:27
【问题描述】:
我必须找出智能卡中是否有给定的证书。为此,我首先使用 CryptAcquireContext 获取 HCRYPTPROV(CSP 句柄),然后使用它打开系统存储(OpenSystemStore),然后枚举证书。
它在 Windows XP 上完美运行。在 Windows 7 上,由于存储在存储中的过时/旧证书而出现问题。 Windows 从智能卡存储/复制其存储中的证书。这意味着如果我在智能卡上有两个证书 Cert1 和 Cert2,并且我已经使用智能卡登录到 Windows。然后 Windows 将这些证书存储在其存储中,我们可以通过转到 IE->Internet 选项->内容->证书来查看。然后,如果我从智能卡中删除 Cert2,那么 Cert2 也会显示在 Windows 应用商店中,这会破坏我的代码。
所以我需要枚举仅在智能卡上可用而不在 Windows 商店中可用的证书。
【问题讨论】:
-
已经有一段时间没有对 Windows 进行编程了,但通常智能卡上的证书会附带一个私钥来进行实际的签名或解密。你能不能尝试访问或使用私钥,看看会发生什么?
-
感谢 owlstead。它对我有用。我已经使用 CryptAcquireCertificatePrivateKey API 来检查给定证书的相应私钥。如果在智能卡上可用,它将成功返回
-
很高兴能为您 Mohammed 提供帮助。
标签: certificate smartcard