Cryptography - XML digital signature Reference URI = "#xpointer(//*@
Bonjour,
J'ai besoin de générer et de vérifier une signature XML. Normalement c'est faisable à l'aide de la classe SignedXml.
Mais lorsque j'essais de signer l'element identifié par le URI suivant URI="#xpointer(//*[@authenticate='true'])", j'obtiens une exception "Malformed Reference Element" levée par la fonction signedXml.ComputeSignature()
Ci après mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public void SignXml (string FileName, RSA Key)
{
// Create a new XML document.
XmlDocument doc = new XmlDocument();
// Load the passed XML file using its name.
doc.Load(new XmlTextReader(FileName));
// Create a SignedXml object.
SignedXml signedXml = new SignedXml(doc);
// Add the key to the SignedXml document.
signedXml.SigningKey = Key;
// Create a reference to be signed.
Reference reference = new Reference();
reference.Uri = "#xpointer(//*[@authenticate='true'])";
XmlDsigC14NTransform trans = new XmlDsigC14NTransform();
reference.AddTransform(trans);
signedXml.AddReference(reference);
// Compute the signature.
signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();
doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, true));
if (doc.FirstChild is XmlDeclaration)
{
doc.RemoveChild(doc.FirstChild);
}
} |
Merci d'avance de vos réponses.