我通过以下方式创建自签名证书:
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;
}
答案 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手册页。