Home    | Software    | Articoli    | Tips'n Tricks    | Contattaci    | Supportaci  
Home arrow Tips'n Tricks arrow PKI arrow PKI - Verifica di marcatura temporale con BouncyCastle

PKI - Verifica di marcatura temporale con BouncyCastle

Durante gli ultimi anni ho lavorato su diversi progetti di PKI, e nel continuo processo di selezione delle librerie da utilizzare la scelta è spesso caduta su iaik(commerciali). Ma le ultime versioni di BouncyCastle hanno drasticamente modificato il panorama ed ora queste ultime rappresentano la mia prima scelta. Uno dei punti che mi hanno attirato su BouncyCastle è il buon supporto per la marcatura temporale. In passato ho utilizzato una versione 'patchata' di openssl per la generazione/verifica di marcaturte temporali, con ovvi problemi di portabilità. Ora ho convertito tutte le procedure per l'utilizzo della libreria tsp di bouncycastle e mi trovo piuttosto bene. Qui di seguito una semplice classe per mostrare la semplicità di verifica di una risposta di marcatura:
 import java.io.FileInputStream;
import java.math.BigInteger;

import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.cms.CMSSignedDataGenerator;
import org.bouncycastle.cms.SignerId;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.tsp.TimeStampRequest;
import org.bouncycastle.tsp.TimeStampResponse;
import org.bouncycastle.tsp.TimeStampToken;
import org.bouncycastle.tsp.TimeStampTokenInfo;
import org.bouncycastle.tsp.TSPException;


public class TS{
public static void main(String args[]){
TS ts=new TS();
ts.go();
}
public void go(){
try{
FileInputStream inreq=new FileInputStream("tsq"); // request
FileInputStream inresp=new FileInputStream("tsr");// response
TimeStampRequest req = new TimeStampRequest (inreq);
TimeStampResponse resp = new TimeStampResponse (inresp);
resp.validate (req); // if it fails a TSPException is raised
System.out.println ("TimeStamp verified.");
TimeStampToken tsToken = resp.getTimeStampToken();
TimeStampTokenInfo tsInfo= tsToken.getTimeStampInfo();
SignerId signer_id = tsToken.getSID();
BigInteger cert_serial_number = signer_id.getSerialNumber();
System.out.println ("Generation time " + tsInfo.getGenTime());
System.out.println ("Signer ID serial "+signer_id.getSerialNumber());
System.out.println ("Signer ID issuer "+signer_id.getIssuerAsString());
} catch(TSPException tsex){
System.out.println(tsex.getMessage());
} catch(Exception ex){
ex.printStackTrace();
}

}

}

PrimoAutore 

Approfitto dell'occasione per fare un pò di pubblicità assolutamente esplicita. In Digitaltrust  abbiamo appena rilasciato  Primoautore , un servizio per la marcatura temporale di opere digitali inedite(musiche, testi, immagini, software etc.). Sul sito è possibile ottenere per le proprie opere una marcatura temporale rilasciata da un certificatore accreditato CNIPA . Questa marcatura ha per la legislazione italiana validità di opponibilità verso terzi come prova del possesso dell'opera ad una data certa, quindi è utilizzabile ad esempio nei casi di presunto plagio. Il servizio è un'opzione alternativa al deposito SIAE , e si aggiunge ad altri classici metodi di protezione quali lo spedirsi l'opera con raccomandata con ricevuta di ritorno o il far certificare l'opera da un notaio.

 

  Articles RSS feed

Articoli pił recenti
Software pił recenti
   
designed by allmambo.com