如何指向to/access一个证书文件`CertCreateCertificateContext`函数? (wincrypt api)
How to point to/access a cert file `CertCreateCertificateContext` function? (wincrypt api)
windowsprogramming/C++ 有点新。我正在尝试将 .p7b 根证书文件安装到受信任的根证书存储区。我想使用 Windows Wincrypt 库。具体来说,这些是我从旧论坛获得的建议步骤:
- 使用您的证书内容字节调用
CertCreateCertificateContext
为了获得 PCCERT_CONTEXT
- 调用
CertOpenSystemStore
并将 szSubsystemProtocol
设置为 "ROOT"
为了获得HCERTSTORE
- 使用上述
HCERTSTORE
调用 CertAddCertificateContextToStore
和
PCCERT_CONTEXT
。
[这里是] CertCreateCertificateContext 的 api 文档。不确定如何将 pbCertEncoded
指向我的实际证书文件。我应该把它指向路径吗?我必须加载证书吗?类型应该是什么?
来自 Simon Rozman 在 post 中的回答:我们必须使用 CertOpenStore()
而不是
CertCreateCertificateContext()
,它只支持一个证书,而 PKCS #7 文件可以包含多个。
证书存储打开后,您可以使用CertEnumCertificatesInStore()
从存储中检索单个证书的证书上下文。
所以从我最初成功安装 p7b 到根存储的步骤:
为根存储和实际证书本身调用 CertOpenStore()
。这将为您提供两个 HCERTSTORE
句柄。
有一个 while 循环将证书上下文添加到打开的根存储(使用 CertAddCertificateContextToStore()
)只要证书上下文存在(检查使用 CertEnumCertificatesInStore()
打开证书存储)。
windowsprogramming/C++ 有点新。我正在尝试将 .p7b 根证书文件安装到受信任的根证书存储区。我想使用 Windows Wincrypt 库。具体来说,这些是我从旧论坛获得的建议步骤:
- 使用您的证书内容字节调用
CertCreateCertificateContext
为了获得PCCERT_CONTEXT
- 调用
CertOpenSystemStore
并将szSubsystemProtocol
设置为 "ROOT" 为了获得HCERTSTORE
- 使用上述
HCERTSTORE
调用CertAddCertificateContextToStore
和PCCERT_CONTEXT
。
[这里是] CertCreateCertificateContext 的 api 文档。不确定如何将 pbCertEncoded
指向我的实际证书文件。我应该把它指向路径吗?我必须加载证书吗?类型应该是什么?
来自 Simon Rozman 在 post 中的回答:我们必须使用 CertOpenStore()
而不是
CertCreateCertificateContext()
,它只支持一个证书,而 PKCS #7 文件可以包含多个。
证书存储打开后,您可以使用CertEnumCertificatesInStore()
从存储中检索单个证书的证书上下文。
所以从我最初成功安装 p7b 到根存储的步骤:
为根存储和实际证书本身调用
CertOpenStore()
。这将为您提供两个HCERTSTORE
句柄。有一个 while 循环将证书上下文添加到打开的根存储(使用
CertAddCertificateContextToStore()
)只要证书上下文存在(检查使用CertEnumCertificatesInStore()
打开证书存储)。