是否有任何OpenSSL函数可以将PKCS7文件转换为PEM

时间:2010-01-07 19:30:39

标签: c++ openssl pkcs#7

是否有任何openssl api函数可以将PKCS7文件转换为PEM。我能够使用PKCS12_parse()函数将PKCS12文件转换为PEM,该函数在给定密码的情况下返回密钥和证书。 pkcs7没有类似的功能。

我的pkcs7输入只有二进制格式的证书。我可以使用命令

进行转换
openssl pkcs7 -inform DER -in input.p7b -printcerts -text

如何在C程序中执行此操作?我可以把它读成像这样的PKCS7结构

 FILE* fp;
 if (!(fp = fopen("ca.p7b", "rb"))) { 
  fprintf(stderr, "Error reading input pkcs7 file\n" ); 
  exit(1); 
 } 
 PKCS7 *p7; 
 p7 = d2i_PKCS7_fp(cafp, NULL);

1 个答案:

答案 0 :(得分:1)

经过一些谷歌搜索后,我能够做到这一点。

if(p7->d.sign->cert != NULL){
    PEM_write_X509(fp, sk_X509_value(p7->d.sign->cert, 0)); 
}

其中p7是指向pkcs7结构的指针,fp是指向PEM文件的文件指针