我可以枚举插入的智能卡上存在的证书,但是即使没有插入智能卡,如何确定windows证书存储中存在的证书与智能卡相关?
当没有智能卡时,我如何知道来自商店的证书在使用之前是否会要求提供PIN?
发布于 2016-04-05 03:18:29
如果您有证书和相关的私钥(作为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。
https://stackoverflow.com/questions/36401451
复制相似问题