XmlDsigEnvelopedSignatureTransformを使用 して、RSA 秘密鍵を使用して XML ファイルにデジタル署名しています。
ただし、本当に必要なのは、「エンベロープ」署名を使用して xml に署名することです。.NET はそれをネイティブでサポートしていますか?
ちなみに、私のコードは次のとおりです。
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));
}