IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Signature electronique d'un fichier XML


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut Signature electronique d'un fichier XML
    Bonjour,

    je suis actuellement en train de travailler sur de la signature xml. Ma fonction de signature fonctionne correctement sur mon environnement de développement mais pas sur mon environnement de test.

    En effet j'arrive à vérifier le document signé que je produits sur mon environnement de dev contrairement au document signé que je produits sur mon environnement de test.

    Environnement de dev : WIN XP - JDK 1.5.0.10

    Environnement test : Linux RED HAT AS4 32 bits - JDK 1.5.0.10

    J'ai constaté que pour 1 même document de départ, la valeur de ma signature était différente suivant si je signais sur mon environnement de dev ou de test. Au contraire mon digest est identique.

    Je ne comprend vraiment pas ce qu'il se passe. La différence d'OS peut-il expliquer que la signature ne fonctionne plus? Pouvez vous m'aider à trouver le problème?

    merci

    voici le code que j'utilise :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    public String signer(String fluxASignerString) throws ServiceTechniqueException {
            LOGGER.debug("entree dans la methode");
    		try {
    			/** La plupart des objets créés correspondent à des élements XML de la signature */
     
    			// création d'une factory pour créer des signatures basées sur le méchanisme DOM et avec le système d'algo DSIG
    	    	XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance(
    	    			ConstantesMetierBackProdDocs.TYPE_MECHANISME_GESTION_XML,
    	    			(Provider) ConstantesMetierBackProdDocs.TYPE_ORGANISATION_SIGNATURE_XML.clone());
     
    	    	Reference reference = signatureFactory.newReference("", signatureFactory.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(signatureFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null, null);
     
    	        LOGGER.debug("creation du signedInfo avec les methodes de traitement");
    	    	// regroupement des "vrais" algos et des algo pour affichage dans le XML
    	    	SignedInfo signedInfo = signatureFactory.newSignedInfo(signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null), signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(reference));
     
    	        LOGGER.debug("creation du document builder");
    	    	// lecture du XML et récupération du premier élement
    	    	DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    	    	documentBuilderFactory.setNamespaceAware(true);
     
    	        LOGGER.debug("parsing du contenu du fichier et convertion en DOM");
    	    	Document document = documentBuilderFactory.newDocumentBuilder().parse(new InputSource(new StringReader(fluxASignerString)));
     
    	        LOGGER.debug("creation des eventuelles balises manquantes pour insérer la signature");
    			signatureHelper.creerBalisesSignature(document);
     
    	        LOGGER.debug("recuperation de la cle privée");
    	    	// récupération de la clé privée
    	    	Key key = signatureHelper.getPrivateKey(ConstantesMetierBackProdDocs.PATH_PRIVATE_KEY);
     
    	    	// définition du contexte de signature avec la clé privée et l'élement à signer
    	    	DOMSignContext signContext = new DOMSignContext(key, document.getDocumentElement());
    	    	//signContext.setURIDereferencer(XMLSignatureFactory.getInstance().getURIDereferencer());
     
    	    	// création de la factory basé sur la méthode DOM avec l'algo DSIG
    	    	KeyInfoFactory keyFactory = KeyInfoFactory.getInstance(
    	    			ConstantesMetierBackProdDocs.TYPE_MECHANISME_GESTION_XML,
    	    			(Provider) ConstantesMetierBackProdDocs.TYPE_ORGANISATION_SIGNATURE_XML.clone());
     
    	        LOGGER.debug("recuperation du certificat");
    	    	// Récupération du certificat
    	    	X509Certificate certificate = signatureHelper.getCertificate(ConstantesMetierBackProdDocs.PATH_CERTIFICAT);
     
    	        LOGGER.debug("creation du keyinfo");
    	    	// futur élement du keyinfo
    	    	KeyInfo keyInfo = signatureHelper.getKeyInfo(certificate, keyFactory);
     
    	    	// création de la signature
    	    	XMLSignature signature = signatureFactory.newXMLSignature(signedInfo, keyInfo);
     
    	        LOGGER.debug("SIGNATURE");
    	    	// signature du contexte
    	    	signature.sign(signContext);
     
    	        LOGGER.debug("deplacement de la signature");
     
    	    	// on extrait le noeud de signature car il n'est pas placé au bon endroit
    	    	Element signatureElement = signatureHelper.enleverSignatureElement(document);
     
    	    	// on ajoute le noeud de signature au bon endroit
    	    	signatureHelper.ajouterSignatureElement(document, signatureElement);
     
    	        LOGGER.debug("convertion du document OBJET => String");
    	    	String fluxSigneString = signatureHelper.getStringPourDocument(document);
     
    	    	LOGGER.debug("sortie de la methode");
     
    	    	return fluxSigneString;
    		} catch (NoSuchAlgorithmException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		} catch (InvalidAlgorithmParameterException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		} catch (IOException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		} catch (SAXException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		} catch (ParserConfigurationException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		} catch (XMLSignatureException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		} catch (MarshalException e) {
    			LOGGER.error(e.getMessage(), e);
    			throw new ServiceTechniqueException(e.getMessage(), e);
    		}
        }
    J'ai joints l'exemple de 2 fichiers signé à partir du même fichier de départ où l'on constate bien que le signatureValue est bien différent
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Ton problème est lié au système.

    Linux termine les lignes par LF et Windows par CRLF. Si tu ouvres tes fichiers dans Notepad++, en cliquant sur Affichage ---> Afficher tous les caractères, tu peux voir les sauts de lignes, les espaces et les tabs.

    C'est un problème récurrent au niveau de la signature électroniques de fichiers interprétés comme du texte. La solution standard consiste à effectuer une "canonisation" de ton fichier texte, généralement sur une base de compatibilité Windows, ce qui signifie que si tu es sous Linux, ton programme doit insérer un CR avant chaque LF avant de le signer. Et là tu auras des signatures identiques quelque soit le système.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord merci pour ta réponse.

    Sinon la seule différence étant le système je m'en doutais.
    Mais ce que je ne comprend pas c'est qu'il me semblait que grâce à cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null)
    j'utilisais une canonisation.
    Y a t-il un moyen pour que ma signature fonctionne à la fois sur un système linux et windows?

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Je ne connais pas l'API que tu utilises pour signer tes XMLs. J'utilise BouncyCastle qui détecte toute seule la plateforme et "canonize" ou pas toute seule en conséquence.

    Tu devrais regarder dans la doc de ton API ce que fait exactement la canonicalization que tu utilises. Dans ton cas pour avoir une signature identique à partir d'une plateforme linux ou windows, j'en suis certain, il suffit juste d'avoir les mêmes séparateurs de fin de ligne (CRLF). C'est la seule chose que tu as à faire.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    J'utilise javax.xml.crypto qui est intégré au JDK.

    Si j'ai bien regardé je ne vois que 4 possibilité pour la canonicalization:
    -EXCLUSIVE ("http://www.w3.org/2001/10/xml-exc-c14n#")
    -EXCLUSIVE_WITH_COMMENTS("http://www.w3.org/2001/10/xml-exc-c14n#WithComments")
    -INCLUSIVE ("http://www.w3.org/TR/2001/REC-xml-c14n-20010315")
    -INCLUSIVE_WITH_COMMENTS ("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments")

    Mais je ne vois pas ce que ça change pour les séparateurs de fin de ligne.

    De plus j'ai du mal à comprendre pourquoi lorsque je signe un document sur un environnement linux et que j'effectue ensuite la vérification toujours sur le même environnement, la vérification échoue.

    Et qu'au contraire si je signe un document sur windows, ma vérification fonctionne quelque soit l'os.....

  6. #6
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par dormouse Voir le message
    J'utilise javax.xml.crypto qui est intégré au JDK.

    Si j'ai bien regardé je ne vois que 4 possibilité pour la canonicalization:
    -EXCLUSIVE ("http://www.w3.org/2001/10/xml-exc-c14n#")
    -EXCLUSIVE_WITH_COMMENTS("http://www.w3.org/2001/10/xml-exc-c14n#WithComments")
    -INCLUSIVE ("http://www.w3.org/TR/2001/REC-xml-c14n-20010315")
    -INCLUSIVE_WITH_COMMENTS ("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments")

    Mais je ne vois pas ce que ça change pour les séparateurs de fin de ligne.
    Ce n'est visiblement pas la même chose. Ce dont je parle moi est valable pour n'importe quel fichier texte hashé (puisqu'une signature n'est qu'un hash chiffré avec la clef privée du signataire.).

    La canonicalization que tu paramètres dans ton API doit être spécifique à ton API pour des raisons que j'ignore car je n'ai encore jamais eu à utiliser cette API.

    Citation Envoyé par dormouse Voir le message
    De plus j'ai du mal à comprendre pourquoi lorsque je signe un document sur un environnement linux et que j'effectue ensuite la vérification toujours sur le même environnement, la vérification échoue.

    Et qu'au contraire si je signe un document sur windows, ma vérification fonctionne quelque soit l'os.....
    Je sais pas quoi te dire. Ton document comporte-t-il des caractères accentués ? L'encodage utilisé est-il définit par le système ou bien par le parser ?

    Je vais avoir du mal à t'aider plus avant ne connaissant pas les packages utilisés.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    En fait je fais de la signature spécifique xml avec la norme xmldsig. Cette API me permettait de bien le faire (du moins apparemment que sur windows )

    Sinon mon document ne comporte aucun accent.

    En tout cas merci pour ton aide même si je n'ai toujours pas la solution. Je vais continuer à chercher et si je trouve je mettrais la solution ça pourra peut être servir à quelqu'un d'autres

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    Bon j'ai avancé un tout petit peu.

    J'ai un fichier non signé de départ.

    Je le signe sur un premier poste sous windows. La vérification du fichier xml signé fonctionne.

    Je le signe depuis un autre poste sous windows. La vérification du fichier xml fonctionne. Par contre la valeur du signatureValue est différente. Le digest est lui identique au 2 documents.

    Je le signe depuis un poste linux. La vérification échoue. J'ai une signatureValue encore différente. Le digest est lui toujours égal.

    Conclusion : On voit que la signatureValue peut être différente pour un même document signé avec le même certificat et que le fichier signé soit toujours valide. Mais que dès que je passe sur un environnement linux impossible de vérifier la signature....

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    Juste une idée, c'est peut être pas sa, mais est ce que la clé privée derrière "ConstantesMetierBackProdDocs.PATH_PRIVATE_KEY" sous linux est bien la bonne?

    Je verrais bien un petit souci de copié-collé de la clé.

  10. #10
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Je reste convaincu que tu as un problème avec les délimiteurs de fin de ligne. Les 2 fichiers XML que tu as posté sont différents. Ils n'ont pas le même délimiteurs donc la signature ne peut pas correspondre.

    Ça se voit très bien avec Notepad++.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  11. #11
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    jr
    benh,je ss entrain de réaliser un module de signature électronique..ya t'il qlq'un qui peux m'expliquer l'erreur affichée:
    (merci d'avance)

    java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_FUNCTION_FAILED
    at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:547)
    at java.security.Signature$Delegate.engineSign(Signature.java:1160)
    at java.security.Signature.sign(Signature.java:553)
    at org.bouncycastle.cms.CMSSignedDataGenerator$SignerInf.toSignerInfo(Unknown Source)
    at org.bouncycastle.cms.CMSSignedDataGenerator.generate(Unknown Source)
    at org.bouncycastle.cms.CMSSignedDataGenerator.generate(Unknown Source)
    at org.bouncycastle.cms.CMSSignedDataGenerator.generate(Unknown Source)
    at applet_sign.pkcs11.sign_pkcs7(pkcs11.java:333)
    at applet_sign.sign_applet.jButton1ActionPerformed(sign_applet.java:94)
    at applet_sign.sign_applet.access$100(sign_applet.java:18)
    at applet_sign.sign_applet$2.actionPerformed(sign_applet.java:51)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:702)
    at java.awt.EventQueue$4.run(EventQueue.java:700)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
    Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_FUNCTION_FAILED
    at sun.security.pkcs11.wrapper.PKCS11.C_SignFinal(Native Method)
    at sun.security.pkcs11.wrapper.PKCS11$SynchronizedPKCS11.C_SignFinal(PKCS11.java:1632)
    at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:509)
    ... 45 more

Discussions similaires

  1. [XPATH 1.0] Signature d'un fichier XML et ajout préfixe
    Par Invité dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/06/2014, 10h52
  2. Signature de fichier xml
    Par Invité dans le forum VB.NET
    Réponses: 20
    Dernier message: 05/03/2014, 11h20
  3. Problème (Exception) lors de la vérification de signature sur fichier XML
    Par khwira dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 14/07/2012, 23h56
  4. [System.Security.Cryptography.Xml] Signature de fichiers XML
    Par melleb dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 15/04/2008, 10h04
  5. Signature de fichiers xml
    Par melleb dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 15/04/2008, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo