CryptExportKey:如何从PKCS#12商店导出私钥?

时间:2012-11-17 20:26:56

标签: winapi cryptoapi

我需要从Windows上以PKCS#12格式存储的证书中导出公共和私有RSA密钥。

我可以使用CertOpenStore()打开证书存储区,然后使用CertFindCertificateInStore()查找证书并获取CryptAcquireCertificatePrivateKey()的私钥。

它运作正常。然后我用CryptGetUserKey()提取用户密钥。它也有用。

但blob类型为CryptExportKey()的{​​{1}}失败。 PRIVATEKEYBLOB CryptSetKeyParam()和设置权限KP_PERMISSIONS也会失败。

在这种情况下,如何获得所有RSA密钥对参数?

所有示例都使用CRYPT_EXPORT来创建和THEN导出密钥,但我需要将现有密钥对导出为简单的二进制形式。

1 个答案:

答案 0 :(得分:0)

找到解决方案:如果使用更具体的PFXImportCertStore()打开PKCS#12文件而不是使用CertOpenStore()商店提供商的通用CERT_STORE_PROV_PKCS12,则会接受标记CRYPT_EXPORTABLE并且密钥可能是使用CryptExportKey()导出。