簡體   English   中英

我如何將 SecCertificateRef 證書 object 翻譯為 openssl 的 x509 證書 object 在 C++

[英]How can i translate SecCertificateRef cert object to openssl's x509 certificate object in C++

我有一個 SecCertificateRef 證書。 我需要在 C++ 中從中獲取到期日期。 我找到了這個SecCertificateRef:如何獲取證書信息? 但它似乎適用於 swift。

我認為我可以在 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 cert object 翻譯成X509 * 有一次,我有X509 *certificateX509 ,我可以使用 openssl 的X509_get_notAfter api 來獲取到期日期。

在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM