Bonjour à tous,

J'ai besoin pour un projet d'envoyer un document XML avec une signature XML basée sur un certificat de type X509Certificate2.

Je créé donc un objet 'SignedXML' que je remplis avec les champs nécessaires, puis, à la fin, quand je lance la méthode 'ComputeSignature()', mon programme bloque dessus pendant 20s. Le tout fonctionne étant donné que je récupère des informations du WebService en retour, mais pour chaque action utilisateur demandant une récupération d'informations, le temps est beaucoup trop long...

À noter que certaines fois, comme par magie, le traitement est instantané... ... Cela me laisse penser qu'il y a une solution...

Voici un aperçu de 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
 
                public XmlElement getXmlSignature(X509Certificate2  signatureCertificate)
        {
            monSignedXML = new SignedXml(this.assertion);
 
            XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
            assertionReference.AddTransform(env);
 
            XmlDsigExcC14NTransform transform = new XmlDsigExcC14NTransform("ds saml #default xsi");
            assertionReference.AddTransform(transform);
 
            // cle de signature
            monSignedXML.SigningKey = signatureCertificate.PrivateKey;
 
            //methode de canonisation
            monSignedXML.SignedInfo.CanonicalizationMethod = "http://www.w3.org/2001/10/xml-exc-c14n#";
 
            // creation de la balise KeyInfo
            KeyInfo keyInfo = new KeyInfo();
            KeyInfoX509Data x509Data = new KeyInfoX509Data(signatureCertificate);
            keyInfo.AddClause(x509Data);
 
            // on rattache la balise a la signature
            monSignedXML.KeyInfo = keyInfo;
 
            // on calcule la signature
            monSignedXML.ComputeSignature();
 
            return monSignedXML.GetXml();
        }

J'ai beau chercher, je ne trouve pas de raisons.

Merci d'avance à tout développeur éclairé en la matière,

Arnaud DS