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

标签 c++ openssl pkcs#7

是否有任何 openssl api 函数可以将 PKCS7 文件转换为 PEM。我能够使用 PKCS12_parse() 函数将 PKCS12 文件转换为 PEM,该函数在给定密码的情况下返回 key 和证书。 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);

最佳答案

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

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

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

关于c++ - 是否有任何 OpenSSL 函数可以将 PKCS7 文件转换为 PEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023046/

相关文章:

c++ - 是否有一个公认的概念名称涵盖关联容器和无序关联容器?

cryptography - openssl/crypto 中定义的 SHA256_Update() 在哪里?

sockets - 在 OpenSSL 上使用带有 UDP 套接字的 DTLS 时,如何正确处理连接和 SSL session ?

Java 不添加 PKCS5 填充

php - 警告 : openssl_pkcs7_sign() [function. openssl-pkcs7-sign] : error getting private key in C:\xampp\htdocs\this\tcpdf\tcpdf. php on line 8366

c# - 使用 C# 从 p7+p8 文件获取 PEM

C++ 服务器应用程序

c++ - 如何确定 C++ 中的按键

c++ - * token 之前的预期初始化程序

ssl - 如果我想限制对特定服务器组的 SSL/DTLS 访问,只比较 Base64/pem 文件有什么问题?