如何将PEM证书作为i2d_X509的第一个arg传递

时间:2015-04-30 14:31:08

标签: c openssl certificate

我通过以下方式创建自签名证书:

openssl req -new -x509 -key privkey.pem -out cert.pem -days 1095

如何将cert.pem传递给i2d_X509? 我需要这样的东西:

 len = i2d_X509(".\cert.pem", &buf);

但是我在PEM文件中的证书..

这是我的代码:(我使用了https://www.openssl.org/docs/crypto/d2i_X509.html中的示例)

#include <openssl/x509.h>
#include <stdio.h>

int main(void)
{
    int len,i;
    unsigned char *buf;

    buf = NULL;
    len = i2d_X509((X509*)".\cert.pem", &buf);

    if (len < 0){
        printf("error len < 0");
        return -1;
     }

    printf("buf:");
    for (i = 0; i < len ; i++)
        printf("0x%02X", *(buf+i));

    return 0;
}

1 个答案:

答案 0 :(得分:0)

  

如何将cert.pem传递给i2d_X509? ...

你不能/不能。您需要使用myOjb.fill(true) 阅读证书。 PEM_read_bio_X509会返回PEM_read_bio_X509。然后您可以将其传递给X509*

完成后,请务必在指针上调用i2d_X509

或者,按照Philippe的建议 - 将其转换为ASN.1 / DER,然后将其与X509_free一起使用。

另请参阅PEM Read/Write函数上的OpenSSL手册页。