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

XSL/XSLT/XPATH XML Discussion :

Signature d'un fichier XML et ajout préfixe


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Invité
    Invité(e)
    Par défaut Signature d'un fichier XML et ajout préfixe
    Bonjour,

    J'ai besoin de signer un document, j'ai trouvé ce tuto assez intéressant sur la signature d'un fichier xml, mais la signature est apposée sur tout le document, or moi, je dois l'apposée à un endroit bien précis.
    Le document que je dois signe est accessible via ce lien, la signature se trouve à l'adresse suivante:
    Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent
    Je fais cela en VB.NET
    Merci
    Dernière modification par Invité ; 13/06/2014 à 12h25.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Et donc, qu'est-ce que tu as pour l'instant, et en quoi ça ne fait pas encore le but expliqué ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    En faisant ainsi, ma signature se trouve à la fin de mon document:

    Mon code vb:
    Code VB : 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
        Dim f_adresse As String = System.AppDomain.CurrentDomain.BaseDirectory
            Dim f_temp As String = f_adresse & "TEMP\"
            Dim f_fichier As String = "20381235051-01-FF11-04.xml"
            Dim f_certificat As String = f_adresse & "aG9CcVpHVndCWTd3WlVOVw==.p12"
            Dim f_pwd As String = "xxxxxxxxxxxxx"
     
            Dim xmlFile As String = f_temp & f_fichier
     
            Dim MonCertificat As X509Certificate2 = New X509Certificate2(f_certificat, f_pwd)
     
            Dim xmlDoc As XmlDocument = New XmlDocument()
            xmlDoc.PreserveWhitespace = True
            xmlDoc.Load(xmlFile)
     
            'Maintenant nous allons créer un objet SignedXml portant sur le document XML que l'on veut signer.
            Dim signedXml As SignedXml = New SignedXml(xmlDoc)
     
            'On renseigne la clé à utiliser pour signer en indiquant la clé privée de notre certificat.
            signedXml.SigningKey = MonCertificat.PrivateKey
     
            'Puis on ajoute ensuite les informations du certificat afin de pouvoir vérifier la signature.
            'Dans notre exemple, les informations du certificat seront sous la forme de balises X509Data 
            Dim KeyInfo As KeyInfo = New KeyInfo()
     
            'On crée un objet Reference qui permet de préciser les informations à signer. 
            'Pour signer l'ensemble du document on utilise une chaîne vide comme référence.
            Dim Reference As Reference = New Reference()
            Reference.Uri = ""
     
            'On va maintenant ajouter une transformation pour indiquer qu'il s'agit d'une signature enveloppée. 
            'Cette étape est très importante car cela permet de ne pas tenir compte des éléments Signature déjà 
            'présents pour le calcul de l'empreinte.
            Reference.AddTransform(New XmlDsigEnvelopedSignatureTransform())
     
            'On ajoute la référence à l'objet SignedXml.
            signedXml.AddReference(Reference)
     
            Dim X509Chain As X509Chain = New X509Chain()
            X509Chain.Build(MonCertificat)
     
            Dim local_element As X509ChainElement = X509Chain.ChainElements(0)
            Dim x509Data As KeyInfoX509Data = New KeyInfoX509Data(local_element.Certificate)
            Dim subjectName As String = local_element.Certificate.Subject
     
            x509Data.AddSubjectName(subjectName)
            KeyInfo.AddClause(x509Data)
     
            signedXml.KeyInfo = KeyInfo
            signedXml.ComputeSignature()
     
            'On calcule la signature et on récupère le XML associé.  
            Dim signature As XmlElement = signedXml.GetXml()
     
            'On ajoute à la fin du document XML la signature générée puis on sauvegarde le document ainsi modifié.
            For Each node As XmlNode In signature.SelectNodes("descendant-or-self::*[namespace-uri()='http://www.w3.org/2000/09/xmldsig#']")
                node.Prefix = "ds"
                If node.LocalName = "Signature" Then
                    Dim newAttribute As XmlAttribute = xmlDoc.CreateAttribute("Id")
                    newAttribute.Value = "SignatureSP"
                    node.Attributes.Append(newAttribute)
                    'node.InsertAfter(node, node.LastChild)
                End If
                ' MsgBox(node.LocalName)
            Next node
     
            xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(signature, True))
            xmlDoc.Save(xmlFile)
    Dernière modification par Invité ; 13/06/2014 à 12h34.

Discussions similaires

  1. [XSLT 1.0] Recopier un fichier XML en ajoutant un attribut sur une balise
    Par Michalak dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 07/08/2014, 07h07
  2. Vérifier la signature d'un fichier XML
    Par Invité dans le forum VB.NET
    Réponses: 0
    Dernier message: 01/07/2014, 10h45
  3. écrire un fichier xml et ajout
    Par robert_trudel dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/06/2006, 14h23
  4. [JDOM] Ajout élément dans fichier XML
    Par delinot dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 18/07/2005, 11h10
  5. ajouter dans un fichier xml
    Par hamma2 dans le forum APIs
    Réponses: 4
    Dernier message: 29/09/2003, 12h57

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