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 :
Merci d'avance de vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Partager