首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在智能卡上可用的数字证书

仅在智能卡上可用的数字证书
EN

Stack Overflow用户
提问于 2013-05-15 16:13:27
回答 1查看 1.7K关注 0票数 1

我必须找出智能卡中是否有特定的证书。为此,我首先使用CryptAcquireContext获取HCRYPTPROV (CSP句柄),然后使用它打开系统存储(OpenSystemStore),然后枚举证书。

它在Windows上运行得很好。在Windows 7上,由于存储在商店中的陈旧/旧证书,它会产生问题。Windows从智能卡存储/复制其存储区中的证书。这意味着如果我在智能卡上有两个证书,Cert1和Cert2,并且我已经使用智能卡登录到窗口。然后Windows将这些证书存储在它的商店中,我们可以通过访问IE->Internet选项->Contents>证书来看到这些证书。然后,如果我从智能卡中删除Cert2,那么Cert2也会显示在Windows中,这个东西破坏了我的代码。

因此,我需要枚举仅在智能卡上可用的证书,而不是在Windows商店中。

EN

回答 1

Stack Overflow用户

发布于 2013-05-21 21:28:23

假设您获取的HCRYPTPROV用于智能卡,则使用CryptGetProvParamPP_USER_CERTSTORE参数:

获取智能卡的用户证书存储。此证书存储区包含存储在智能卡上的所有用户证书。

例如:

代码语言:javascript
复制
HCERTSTORE hCertStore = NULL;
DWORD size = sizeof(hCertStore);
CryptGetProvParam(hProv, PP_USER_CERTSTORE, (PBYTE)&hCertStore, &size, 0);

然后,可以像系统存储一样,从HCERTSTORE枚举智能卡的证书。

MSDN页面声明"Windows :不支持此参数“。但是它在XP上使用最新的Service很好。

CNG等效为具有NCryptGetProperty参数的NCRYPT_USER_CERTSTORE_PROPERTY

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16570083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档