如何确定商店中的证书是不是与智能卡相关?

Posted

技术标签:

【中文标题】如何确定商店中的证书是不是与智能卡相关?【英文标题】:How to decide that a certificate in the store is smart card related or not?如何确定商店中的证书是否与智能卡相关? 【发布时间】:2016-04-04 11:32:28 【问题描述】:

我可以枚举插入的智能卡上存在的证书,但是即使没有插入智能卡,如何确定 Windows 证书存储中存在的证书与智能卡相关?

如果没有智能卡,我如何知道来自商店的证书在使用前是否会要求输入 PIN?

【问题讨论】:

【参考方案1】:

如果您有证书和关联的私钥(作为X509Certificate2 对象),您可以检查certificate.PrivateKey.CspKeyContainerInfo.HardwareDevice 属性链(HardwareDevice 属性)。如果属性返回true,则密钥存储在智能卡上,并且很可能(但不是必需的)在您尝试访问密钥时提示 PIN。如果密钥存储在旧版加密服务提供程序 (CSP) 中,这将起作用。

现代卡支持称为密钥存储提供程序 (KSP) 的现代提供程序类型,在 .NET 中的支持很差。这意味着如果密钥存储在硬件 KSP 中,那么(X509Certificate2 对象的)HasPrivateKey 属性将返回True,而PrivateKey 将是null。在这种情况下,您将不得不通过调用 NCrypt 系列中的本机 CryptoAPI 函数来做一些额外的工作。不过,从 .NET 4.6+ 开始,X509Certificate2 类中有几个扩展方法可用于检索提供程序信息:X509Certificate2 Extension Methods。

【讨论】:

以上是关于如何确定商店中的证书是不是与智能卡相关?的主要内容,如果未能解决你的问题,请参考以下文章

Android 操作系统和Smart TV智能系统电视哪个好?Smart TV智能系统用户可以自行下载与安装应用吗?

如何修复智能手机中的证书错误[关闭]

将证书从智能卡复制到计算机

在当前阅读器上的智能卡上查找证书

如何在智能卡读卡器中检查匹配的证书?

AI技术说:人工智能相关概念与发展简史