首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PFXImportCertStore-问题- cryptoapi

PFXImportCertStore-问题- cryptoapi
EN

Stack Overflow用户
提问于 2011-06-11 17:52:55
回答 1查看 1.9K关注 0票数 0

我使用PFXImportCertStore导入了第三方CA颁发的PFX证书。在成功导入时,PCERT_KEY_PROV_INFO_PROP_ID默认设置为以下值,并通过相同的调用PFXImportCertStore

为什么AT_SIGNATURE被认为是AT_KEYEXCHANGE键类型而不是AT_KEYEXCHANGE键类型?

  1. 为什么将pwszProvName设置为Microsoft密码提供程序v1.0?

  1. 证书首先是为数字签名而颁发的。但密钥使用字段表明,该证书可以用于数字签名、不可否认、密钥加密、数据加密(f0)。增强的密钥使用指示,客户身份验证和安全电子邮件?CA是否正确颁发了证书?证书的正面显示了以下消息(屏幕截图),这让我怀疑这个证书不是为数字唱歌签发的?我想得对不对?

4.由于这些问题,我无法使用CryptSignMessage签署数据。内部调用无法获取用于签名的私钥的上下文。关于我如何解决这个问题,有什么建议吗?我能够签署一个自我签署的PFX证书,我产生了。您认为我是否可以将私钥导出到新容器,并将其属性设置为AT_SIGNATURE,将csp提供程序类型设置为PROV_RSA_AES,这是因为我需要SHA256。

我正在使用XP sp3。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-12 18:11:21

答1:密钥被自动归类为AT_KEYEXCHANGE,因为它的用法也是加密会话密钥等等(虽然我的应用程序的主要目的是对数据进行数字签名),CA已经定义了密钥使用策略来包含加密,这迫使CryptoAPI将密钥类型映射到AT_KEYEXCHANGE

答2:我假设是这台机器中的默认csp,那么.?请给我更好的解释

答案3:来自Crypto的许多人的回复中,AT_KEYEXCHANGE密钥也可以用来签署数据,只要您的证书的密钥使用允许您进行数字签名。第三方CA发出可用于多种用途的证书似乎是一种常见的做法。因此,第三方CA正确地颁发了证书。

答4:我用同一个第三方颁发的证书使用CryptSignMessage对数据进行了签名。我将PCERT_KEY_PROV_INFO_PROP_ID中的PCERT_KEY_PROV_INFO_PROP_ID更改为PROV_RSA_AES,并为pwsProvName传递NULL。执行此更改的方法是首先使用CertGetCertificateContextProperty获取属性,然后使用CertSetCertificateContextProperty设置您选择的属性。这解决了签字问题。现在我可以和SHA256/RSA1024,AT_EXCHANGE key签名了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6317578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档