【发布时间】:2020-11-30 16:00:50
【问题描述】:
我有一个 SecCertificateRef 证书。我需要在 C++ 中从中获取到期日期。我找到了这个SecCertificateRef: How to get the certificate information?,但它似乎可以快速完成。
我认为我可以在 c++ 中做的最接近的等价物是:
CFDataRef data = SecCertificateCopyData(cert);
const unsigned char *certificateDataBytes = (const unsigned char *)data;
X509 *certificateX509 = d2i_X509(NULL, &certificateDataBytes, sizeof(certificateDataBytes));
但这不起作用。
或
我可以的
CFDataRef data = SecCertificateCopyData(cert);
unsigned char* imageBuffer = (unsigned char*) malloc(CFDataGetLength(data));
imageBuffer = static_cast<unsigned char *> (memcpy(imageBuffer, data, CFDataGetLength(data)));
int length = sizeof(imageBuffer);
const unsigned char* i = (const unsigned char*) imageBuffer;
X509 *certificateX509 = d2i_X509(NULL, &i, length);
也不行:(
我如何将 SecCertificateRef 证书对象转换为 X509 * 。曾经,我有X509 *certificateX509,我可以使用openssl 的X509_get_notAfter api 来获取到期日期。
【问题讨论】:
标签: c++ ssl openssl core-foundation secure-transport