Openssl 无法使用PKCS12_parse通过.pfx文件进行分析?

Openssl 无法使用PKCS12_parse通过.pfx文件进行分析?,openssl,cryptography,Openssl,Cryptography,创建了内存存储区,所需证书从系统存储区移动到内存存储区,并将该存储区保存到文件中 可以使用该函数获取移动的证书 CertFindCertificateInStore()已成功从创建的内存存储中删除 使用函数成功导出内存存储 bResult = PFXExportCertStoreEx( hMemoryStore, &pPFX,

创建了内存存储区,所需证书从系统存储区移动到内存存储区,并将该存储区保存到文件中

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

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。
获取私钥和证书为空的原因是什么。

您可能需要在代码中添加“OpenSSL\u add\u all\u algorithms();”。这将初始化PKCS12_解析所需的一些算法。如本文所述

您可能需要在代码中添加“OpenSSL\u add\u all\u algorithms();”。这将初始化PKCS12_解析所需的一些算法。如本文所述

您是否预先初始化了
EVP\u PKEY**PKEY
X509**cert
参数?使用
EVP_PKEY_new
X509_new
?在使用EVP_PKEY_new和X509_new初始化EVP_PKEY*PKEY和X509*cert后,它将返回PKEY和cert的空值。您是否事先初始化了
EVP_PKEY**PKEY
X509**cert
参数?使用
EVP_PKEY_new
X509_new
?在使用EVP_PKEY_new和X509_new初始化EVP_PKEY*PKEY和X509*cert后,将返回PKEY和cert的空值。