String fileName = "signed_file.xml";
String filecopy = "signed_file_copy.xml";
File.Copy(fileName, filecopy, true);
/* Remove the digital signature */
XDocument doc1 = XDocument.Load(filecopy);
XElement signElement = doc1.Descendants("Signature").FirstOrDefault<XElement>();
signElement.Remove();
signed_file_copy.xml に署名タグが含まれていても、signElement は null です。何が起こっているのかを理解するのに助けが必要です。
XML のシグネチャ タグ構造は次のようになります。
<Config>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm=xxxxxxxxx />
<Reference URI="">
<Transforms>
<Transform Algorithm=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz />
</Transforms>
<DigestMethod Algorithm=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy />
<DigestValue> xxxxxxxxxxx </DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</SignatureValue>
</Signature>
</Config>