【问题标题】:Unable to parse through the .pfx file using PKCS12_parse?无法使用 PKCS12_parse 解析 .pfx 文件?
【发布时间】:2016-02-03 05:57:55
【问题描述】:

使用所需证书创建的内存存储从系统存储移动到内存存储并将该存储保存到文件。

可以使用函数获取移动的证书

CertFindCertificateInStore() 从创建的内存存储成功。

使用函数成功导出内存存储

bResult = PFXExportCertStoreEx(
                                        hMemoryStore,
                                        &pPFX,
                                        wszPassword,
                                        NULL,
                                        EXPORT_PRIVATE_KEYS | 
                                        REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY | 
                                        REPORT_NO_PRIVATE_KEY );

 BIO* input = BIO_new_mem_buf((void*)pPFX.pbData, pPFX.cbData);
            p12 = d2i_PKCS12_bio(input, NULL);
            if(NULL == p12)
            {
                hResult = GetLastError();
                __leave;
            } // if

iResult = PKCS12_parse(p12, "mqroot", &pkey, &cert, NULL);
            if ( !iResult )
            {
                hResult = GetLastError();
                __leave;
            } // if

这里解析证书时返回1,但pkey和cert参数为NULL。 将私钥和证书设为 NULL 的原因可能是什么。

【问题讨论】:

  • 您是否事先初始化了EVP_PKEY **pkeyX509 **cert 参数? EVP_PKEY_newX509_new ?
  • 使用 EVP_PKEY_new 和 X509_new 初始化 EVP_PKEY *pkey 和 X509 *cert 后,它返回 pkey 和 cert 的 NULL 值。

标签: openssl cryptography


【解决方案1】:

您可能需要添加“OpenSSL_add_all_algorithms();”到你的代码。这将初始化 PKCS12_parse 所需的一些算法。如本文所述,https://www.openssl.org/docs/man1.1.0/crypto/OpenSSL_add_all_algorithms.html

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2016-08-10
    • 2010-09-25
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多