I'm using the XmlDsigEnvelopedSignatureTransform to digitally sign an XML file using an RSA private key.
However, what I really want is to sign the xml using an "enveloping" signature. Does .NET have native support for that?
By the way, here's my code:
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));
}