#600 - Controllare la firma digitale di un documento XML

Nello script #594 abbiamo visto come firmare un documento XML (o più oggetti XML) secondo le specifiche del W3C. In questo script vedremo come verificare che la firma sia corretta. Useremo sempre la classe SignedXml che è in grado, dato il documento firmato, di ricostruire le informazioni sull?algoritmo utilizzato, la chiave pubblica da utilizzare e il digest calcolato. Anche qui è importante indicare che le chiavi sono da memorizzare sulla macchina poiché ASP,NET non dispone di un profile dove memorizzarle:

// Carico il documento xml

    XmlDocument doc = new XmlDocument();
    doc.Load(xmlFile.PostedFile.InputStream);
   
    bool v = false;
   
    // Creo l'oggetto per firmare

    SignedXml xs = new SignedXml();
   
    // Indico che gli algoritmi RSA devono memorizzare

    // le chiavi sulla macchina

    RSACryptoServiceProvider.UseMachineKeyStore = true;

    // Carico il documento in modo che carichi da solo

    // la KeyInfo e le Reference e le modalità di firma

    xs.LoadXml(doc.DocumentElement);
    // Verifico la firma

      v = xs.CheckSignature();

    // Mando in output l'xml risultante

    Response.Write((v)?"Documento valido":"Documento non valido");

Questo meccanismo di firma e controllo verrà utilizzato nelle future specifiche di WS-Security volte a rendere sicuri i WebService che come sapete, si basano su dialoghi in XML.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC