【发布时间】:2014-03-26 10:44:19
【问题描述】:
我正在尝试使用 System.Security.Cryptography(目标框架 .NET 4.5)创建 xml 数字签名,到目前为止,我设法使用以下方案创建和验证签名: RSA PKCS#1 v1.5 和 SHA-256:http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
但是,我无法使用以下方案: ‘使用 SHA-256 没有参数的 RSASSA-PSS’ [RFC6931]: http://www.w3.org/2007/05/xmldsig-more#sha256-rsa-MGF1
显示的错误很明显“无法为提供的签名算法创建签名描述。”
对于“RSA PKCS#1 v1.5 和 SHA-256”,我添加了以下公共类作为其签名:
public class RSAPKCS1SHA256SignatureDescription : SignatureDescription
{
public RSAPKCS1SHA256SignatureDescription()
{
base.KeyAlgorithm = "System.Security.Cryptography.RSACryptoServiceProvider";
base.DigestAlgorithm = "System.Security.Cryptography.SHA256Managed";
base.FormatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureFormatter";
base.DeformatterAlgorithm = "System.Security.Cryptography.RSAPKCS1SignatureDeformatter";
}
public override AsymmetricSignatureDeformatter CreateDeformatter(AsymmetricAlgorithm key)
{
AsymmetricSignatureDeformatter asymmetricSignatureDeformatter = (AsymmetricSignatureDeformatter)
CryptoConfig.CreateFromName(base.DeformatterAlgorithm);
asymmetricSignatureDeformatter.SetKey(key);
asymmetricSignatureDeformatter.SetHashAlgorithm("SHA256");
return asymmetricSignatureDeformatter;
}
}
但是,我不知道 .Net 4.5 是否支持“不带参数的 SHA-256 的 RSASSA-PSS”,如果支持,如何设置其签名定义。
如果有人有类似的经历并能提供一些帮助,我将非常感激。
【问题讨论】:
标签: c# .net digital-signature xml-signature signedxml