如何使用wincrypt.h在c ++中检查x509证书的吊销状态?

问题描述 投票:0回答:1

我正在尝试使用wincrypt.h在C ++程序中检查X509证书的吊销状态。可悲的是,我找不到一个全面的例子。在c#中,代码如下:

X509Certificate2 certificate = new X509Certificate2();
//Create X509Certificate2 object from .cer file.
byte[] rawData = ReadFile(@"C:\Users\z002m76a\Desktop\cert.pem");
certificate.Import(rawData);

X509Chain ch = new X509Chain();
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
ch.Build(certificate);

Console.WriteLine("Chain revocation flag: {0}", ch.ChainPolicy.RevocationFlag);
c++ x509 wincrypt
1个回答
0
投票

在C ++中,您使用CertGetCertificateChain函数。与调用结果一起,该函数返回指向CERT_CHAIN_CONTEXT的指针(通过ppChainContext成员)。此CERT_CHAIN_CONTEXT结构存储一个指向CERT_SIMPLE_CHAIN结构(rgpChain成员)的指针,该指针表示链元素的数组(这是.NET中的X509Chain.ChainElements所表示的)。本质上,您需要检查rgpChain中的第一个元素,它是指向CERT_SIMPLE_CHAIN结构的指针。并检查TrustStatus成员的吊销状态标志(两个标志)。

© www.soinside.com 2019 - 2024. All rights reserved.