【发布时间】: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 **pkey和X509 **cert参数?EVP_PKEY_new和X509_new? -
使用 EVP_PKEY_new 和 X509_new 初始化 EVP_PKEY *pkey 和 X509 *cert 后,它返回 pkey 和 cert 的 NULL 值。
标签: openssl cryptography