通过循环来签署单个XML文件的大约100个块时,我从服务器收到错误:
"The value of the 'Algorithm' attribute does not equal its fixed value."
所以服务器期待:
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
而不是:
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
研究我发现解决方案是添加rigth函数:
string signatureRSAMethod = @"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
signer.SignedInfo.SignatureMethod = signatureRSAMethod;
然后是apear的例外:
SignatureDescription could not be created for the signature algorithm supplied
再次解决方案是添加代码行:
CryptoConfig.AddAlgorithm( typeof(RSAPKCS1SHA256SignatureDescription), signatureRSAMethod);
最后,该文件被烧毁并发送了,但不幸的是,第二次尝试时,私钥已从我的证书中消失,到目前为止丢失了3张,其中两张是读卡器和一张令牌卡。无论如何,我怀疑某些东西违反了一些使私钥消失的安全规则。我是以错误的方式使用它吗?
答案 0 :(得分:0)
我已经发现我只需要添加CryptoConfig,所以我从循环中取下面的行并将其放在表单上显示它解决了我的问题。
CryptoConfig.AddAlgorithm(typeof(RSAPKCS1SHA256SignatureDescription),signatureRSAMethod);