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 : 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);
            }
 
}
Merci d'avance de vos réponses.