[英]How can i translate SecCertificateRef cert object to openssl's x509 certificate object in C++
i've a SecCertificateRef cert.我有一个 SecCertificateRef 证书。 I need to get Expiry date from it in C++.
我需要在 C++ 中从中获取到期日期。 I've found this SecCertificateRef: How to get the certificate information?
我找到了这个SecCertificateRef:如何获取证书信息? but it seems like it does it for swift.
但它似乎适用于 swift。
Closest equivalent I thought I can do in c++ is:我认为我可以在 c++ 中做的最接近的等价物是:
CFDataRef data = SecCertificateCopyData(cert);
const unsigned char *certificateDataBytes = (const unsigned char *)data;
X509 *certificateX509 = d2i_X509(NULL, &certificateDataBytes, sizeof(certificateDataBytes));
but this does not work.但这不起作用。
OR或者
I can do我可以
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);
doesn't work either:(也不起作用:(
How can i translate SecCertificateRef
cert object to X509 *
.我如何将
SecCertificateRef
cert object 翻译成X509 *
。 once, I've X509 *certificateX509
, i can use openssl's X509_get_notAfter
api to get expiry date.有一次,我有
X509 *certificateX509
,我可以使用 openssl 的X509_get_notAfter
api 来获取到期日期。
in C++ you can get byte pointer from Apple's API and pass it d2i_X509,在 C++ 中,您可以从 Apple 的 API 获取字节指针并将其传递给 d2i_X509,
CFDataRef data = SecCertificateCopyData(cert);
auto dataBufferPointer = CFDataGetBytePtr(data);
X509 *certificateX509 = d2i_X509(NULL, &dataBufferPointer, CFDataGetLength(data));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.