Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118

    Firma di un XML

    (linguaggio .net preferibile C# o VB)

    salve,
    ho la necessità di firmare (x509) un file XML. Con codice e strumenti che conosco riesco ad ottenere
    nella firma i seguenti elementi:

    <Signature>
    <SignedInfo>
    <KeyInfo>
    <Object>
    ...
    ...etc.

    ma la mia necessità è quella di ottenere invece:

    <ds:Signature>
    <ds:SignedInfo>
    <ds:KeyInfo>
    <ds:Object>
    ...
    ...etc.
    Grazie per ogni suggeimento.
    D.T.K.L.A.M.F.

  2. #2
    Non so come hai fatto per fare l'xml ma sicuramente sarà qualcosa di simile quindi prova così:
    codice:
    Dim ds As New Data.DataSet
    
    ds.DataSetName = "NewDataSet"
    ds.Tables.Add("Table")
    
    ds.Tables("Table").Columns.Add("ds:Signature")
    ds.Tables("Table").Columns.Add("ds:SignedInfo")
    ds.Tables("Table").Columns.Add("ds:KeyInfo")
    ds.Tables("Table").Columns.Add("ds:Object")

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    ciao,
    forse non mi sono spiegato bene.

    Ho necessità di firmase con un certificato un file XML (file qualsiasi)

    Con i strumenti "classici" di firma riesco ad ottenere gli oggetti elencati:
    <Signature>
    <SignedInfo>
    <KeyInfo>
    <Object>
    etc..
    che sono gli oggetti che fanno parte della firma NON del file XML da firmare.

    Detto ciò ho la necessita di inserire i prefix per un NameSpace "DS" (che in questo caso NON significa dataset)

    e quindi come risultato dovrei avere una firma composta con:
    <ds:Signature>
    <ds:SignedInfo>
    <ds:KeyInfo>
    <ds:Object>
    etc..


    Per essere un po più dettagliato ecco uno stralcio di codice:

    XmlDocument doc = new XmlDocument();
    doc.PreserveWhitespace = false;
    doc.Load(new XmlTextReader("mio file xmlo"));
    SignedXml signedXml = new SignedXml(doc);
    Reference reference = new Reference();
    reference.Uri = "";
    XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
    reference.AddTransform(env);
    signedXml.AddReference(reference);
    KeyInfo keyInfo = new KeyInfo();
    X509Certificate MSCert = X509Certificate.CreateFromCertFile("certificato");
    keyInfo.AddClause(new KeyInfoX509Data(MSCert));
    signedXml.KeyInfo= keyInfo;
    signedXml.SigningKey = MSCert.PrivateKey;
    signedXml.ComputeSignature();

    Bene questo codice firma ma nel primo modo.
    Aggiungee dopo il prefix non è possibile perché la firma non verrebbe riconosciuta.
    (giocando con funzioni di modifica stringa etc....)

    Grazie
    D.T.K.L.A.M.F.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.