我使用CertCreateSelfSignCertificate
函数生成了自签名证书。这产生一个PCCERT_CONTEXT。CryptoApi:导出没有私钥的证书?
我怎样才能导出存储在PCCERT_CONTEXT变量,只有公钥证书?我想这样做,将它发送给网络中的其他方,这样它们就能够使用公钥对消息进行加密。
我认为这是一个直接的选择,但它没有。
我使用CertCreateSelfSignCertificate
函数生成了自签名证书。这产生一个PCCERT_CONTEXT。CryptoApi:导出没有私钥的证书?
我怎样才能导出存储在PCCERT_CONTEXT变量,只有公钥证书?我想这样做,将它发送给网络中的其他方,这样它们就能够使用公钥对消息进行加密。
我认为这是一个直接的选择,但它没有。
样子你会需要先put将证书导入证书存储区,然后使用PFXExportCertStoreEx传球0(即不设置EXPORT_PRIVATE_KEYS)dwFlags中导出。
P.S.在处理加密库时,没有什么比较直接的,无论是CryptAPI,JSSE,OpenSSL ......它总是一场噩梦。
不需要pfx。
证书存在于结构CERT_CONTEXT内:只保存由构件指向的缓冲区的内容pbCertEncoded并且其长度为所述构件cbCertEncoded的值。
而且,从该证书的公共密钥是在CERT_CONTEXT结构直接存在:pCertInfo-> SubjectPublicKeyInfo进行。例如,您可以使用CryptImportPublicKeyInfo,可以导入,然后调用CryptEncrypt对数据进行加密。
了这两个选项,你都需要什么来开始加密的消息。当然,私钥必须是安全的,才能解密加密的数据。
谢谢。在某种程度上,该功能可能会做我想要的。尽管如此,将整个商店导出为pfx时,我只想导出具有相应公钥的单个证书,但看起来并不干净,不太好。还有另外一条路要走。 – Erik
好吧,这个想法是,无论如何你肯定会在某些商店中保存这个证书 - 否则你将失去私钥。因此,一旦它在商店中,您可以从中导出证书。您不需要将整个商店导出为pfx。 –