使用私钥创建新证书

时间:2015-03-11 15:16:47

标签: x509certificate2

我正在尝试使用证书库中的证书来签署SAML请求。这就是我想要做的。 (cert是证书商店的证书)

RSACryptoServiceProvider tempRsaProvider = cert.PrivateKey as RSACryptoServiceProvider;
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
byte[] privateKeyBlob = tempRsaProvider.ExportCspBlob(true);
rsaProvider.ImportCspBlob(privateKeyBlob);
SAMLMessageSignature.Generate(authnRequest, rsaProvider, cert, null, "http://www.w3.org/2001/04/xmlenc#sha256", "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");

当我尝试在行中导出tempRsaProvider.ExportCspBlob(true)时出错。证书的可导出属性为false(即,导入证书时未启用可导出标志)。

当我通过启用可导出功能删除并导入相同证书时,此方法有效。

这是我的问题: 有没有办法使用现有证书的私钥生成RSACryptoServiceProvider对象(通过创建新的临时证书?),以便在证书最初安装为不可导出时用于签名?

我还没有通过代码找到任何有意义的信息。任何参考/建议都会有很大帮助。提前谢谢。

0 个答案:

没有答案