【发布时间】:2014-11-26 09:01:39
【问题描述】:
谁能告诉我如何使用 openssl API 将 .crt 文件转换为 .pem 文件? 我试过这样:
FILE *fl = fopen(cert_filestr, "r");
fseek(fl, 0, SEEK_END);
long len = ftell(fl);
char *ret = malloc(len);
fseek(fl, 0, SEEK_SET);
fread(ret, 1, len, fl);
fclose(fl);
BIO* input = BIO_new_mem_buf((void*)ret, sizeof(ret));
x509 = d2i_X509_bio(input, NULL);
FILE* fd = fopen(certificateFile, "w+");
BIO* output = BIO_new_fp(fd, BIO_NOCLOSE);
X509_print_ex(output, x509, XN_FLAG_COMPAT, X509_FLAG_COMPAT);
fclose(fd);
但这不起作用,x509 始终为 NULL。
【问题讨论】:
-
一个主要问题是在指针上使用
sizeof会得到指针的大小,而不是指针指向的大小。 -
另外,在 C 语言中,您不必将指针转换为
void*,所有指针都可以隐式转换为(和从)void*。 -
哦,不,'char **size = malloc(sizeof(fl));'是否有可能获得合适的尺寸?
-
len的大小,就是你需要传递给BIO_new_mem_buf的大小。 -
好的,谢谢!修好了!但问题仍然存在..