我需要从Windows上以PKCS#12
格式存储的证书中导出公共和私有RSA密钥。
我可以使用CertOpenStore()
打开证书存储区,然后使用CertFindCertificateInStore()
查找证书并获取CryptAcquireCertificatePrivateKey()
的私钥。
它运作正常。然后我用CryptGetUserKey()
提取用户密钥。它也有用。
但blob类型为CryptExportKey()
的{{1}}失败。
PRIVATEKEYBLOB
CryptSetKeyParam()
和设置权限KP_PERMISSIONS
也会失败。
在这种情况下,如何获得所有RSA密钥对参数?
所有示例都使用CRYPT_EXPORT
来创建和THEN导出密钥,但我需要将现有密钥对导出为简单的二进制形式。
答案 0 :(得分:0)
找到解决方案:如果使用更具体的PFXImportCertStore()
打开PKCS#12文件而不是使用CertOpenStore()
商店提供商的通用CERT_STORE_PROV_PKCS12
,则会接受标记CRYPT_EXPORTABLE
并且密钥可能是使用CryptExportKey()
导出。