.net XML-DSIG:NET中的包络签名转换
我正在使用RSA私钥对XML文件进行数字签名 然而,我真正想要的是使用封装签名对xml进行签名。NET是否有本机支持 顺便说一下,这是我的代码:.net XML-DSIG:NET中的包络签名转换,.net,cryptography,xml-dsig,.net,Cryptography,Xml Dsig,我正在使用RSA私钥对XML文件进行数字签名 然而,我真正想要的是使用封装签名对xml进行签名。NET是否有本机支持 顺便说一下,这是我的代码: public static void SignXml(XmlDocument xmlDoc, RSA key) { // Check arguments. if (xmlDoc == null) throw new ArgumentException("xmlDoc"); if (key == null)
public static void SignXml(XmlDocument xmlDoc, RSA key)
{
// Check arguments.
if (xmlDoc == null)
throw new ArgumentException("xmlDoc");
if (key == null)
throw new ArgumentException("Key");
SignedXml xml = new SignedXml(xmlDoc);
xml.SigningKey = key;
Reference reference = new Reference();
reference.Uri = "";
XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(true);
reference.AddTransform(env);
xml.AddReference(reference);
xml.ComputeSignature();
XmlElement element = xml.GetXml();
MessageBox.Show(element.OuterXml);
xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(element, true));
}
如果签名不是已签名数据的子元素,则不需要信封签名转换 因此,只需跳过XmlDsigEnvelopedSignatureTransform并像执行其他操作一样执行签名:
public XmlElement SignXml(XmlDocument xmlDoc, RSA key)
{
SignedXml xml = new SignedXml();
xml.SigningKey = key;
// Add the data to be signed as a sub-element of the Signature-element:
DataObject dataObject = new DataObject();
dataObject.Data = xmlDoc.ChildNodes;
dataObject.Id = "doc";
xml.AddObject(dataObject);
// Add a reference to the signed data:
Reference reference = new Reference();
reference.Uri = "#doc";
xml.AddReference(reference);
// Perform the signature. No transforms are needed.
xml.ComputeSignature();
return xml.GetXml();
}
如果签名不是已签名数据的子元素,则不需要信封签名转换 因此,只需跳过XmlDsigEnvelopedSignatureTransform并像执行其他操作一样执行签名:
public XmlElement SignXml(XmlDocument xmlDoc, RSA key)
{
SignedXml xml = new SignedXml();
xml.SigningKey = key;
// Add the data to be signed as a sub-element of the Signature-element:
DataObject dataObject = new DataObject();
dataObject.Data = xmlDoc.ChildNodes;
dataObject.Id = "doc";
xml.AddObject(dataObject);
// Add a reference to the signed data:
Reference reference = new Reference();
reference.Uri = "#doc";
xml.AddReference(reference);
// Perform the signature. No transforms are needed.
xml.ComputeSignature();
return xml.GetXml();
}
我该怎么做?我已经在上面粘贴了我的代码。你能告诉我怎么做吗?我怎么做?我已经在上面粘贴了我的代码。你能告诉我怎么做吗?