0

Windows 编程/C++ 有点新。我正在尝试将 .p7b 根证书文件安装到受信任的根证书存储中。我想使用 Windows Wincrypt 库。具体来说,这些是我从旧论坛获得的建议步骤:

  1. 使用您的证书内容字节调用CertCreateCertificateContext以获得PCCERT_CONTEXT
  2. 调用CertOpenSystemStore设置szSubsystemProtocol为“ROOT”以获得HCERTSTORE
  3. CertAddCertificateContextToStore使用上述HCERTSTORE和 调用PCCERT_CONTEXT

[这里是] CertCreateCertificateContext的 api 文档。不知道如何只指向pbCertEncoded我的实际证书文件。我应该把它指向路径吗?我必须加载证书吗?类型应该是什么?

4

1 回答 1

1

来自 Simon Rozman 在这篇文章中的回答:我们必须使用CertOpenStore()而不是 CertCreateCertificateContext(),它只支持一个证书,而 PKCS #7 文件可以包含很多。

证书存储打开后,您可以使用CertEnumCertificatesInStore()从存储中检索单个证书的证书上下文。

因此,从我最初的步骤中成功将 p7b 安装到根存储中:

  1. 调用CertOpenStore()根存储和实际证书本身。这会给你两个HCERTSTORE手柄。

  2. CertAddCertificateContextToStore()有一个 while 循环,只要证书上下文存在(CertEnumCertificatesInStore()在打开的证书存储上检查 using) ,就会将证书上下文添加到打开的根存储区(使用)。

于 2020-05-07T20:23:31.670 回答