对windows编程/C++有点陌生。我正在尝试将.p7b根证书文件安装到受信任的根证书存储。我想使用Windows Wincrypt库。具体来说,这些是我从一个旧论坛上得到的建议步骤:
- 使用证书内容字节调用
CertCreateCertificateContext
以便获得CCD_ 2 - 在
szSubsystemProtocol
设置为"ROOT"的情况下调用CertOpenSystemStore
以获得HCERTSTORE
- 使用上述
HCERTSTORE
调用CertAddCertificateContextToStore
PCCERT_CONTEXT
[这里是]CertCreateCertificateContext的api文档。不知道如何将pbCertEncoded
指向我的实际证书文件。我应该把它指向小路吗?我必须加载证书吗?类型应该是什么?
根据Simon Rozman在这篇文章中的回答:我们必须使用CertOpenStore()
而不是CertCreateCertificateContext()
,它只支持一个证书,而PKCS#7文件可以包含多个证书。
打开证书存储后,可以使用CertEnumCertificatesInStore()
从存储中检索各个证书的证书上下文。
因此,从我最初成功将p7b安装到根存储的步骤来看:
-
为根存储和实际证书本身调用
CertOpenStore()
。这将为您提供两个HCERTSTORE
句柄。 -
只要证书上下文存在,就使用while循环将证书上下文添加到打开的根存储中(使用
CertAddCertificateContextToStore()
((在打开的证书存储中使用CertEnumCertificatesInStore()
进行检查(。