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