Controllare la firma digitale di un documento XML

di Cristian Civera, in UserScript, ASP.NET, C#,

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.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi