chat
Class Firma

java.lang.Object
  |
  +--chat.Firma

public class Firma
extends java.lang.Object

Classe di utilità che semplifica l'uso della firma digitale all'interno dei programmi Java.

E' sufficiente creare un'istanza di questa classe specificando l'algoritmo crittografico desiderato, dopodiché firma(...) e firmaOk(...) possono essere invocati in qualsiasi successione ed un qualunque numero di volte per applicare l'operazione voluta ai dati specificati di volta in volta.

Questa classe è idonea anche agli ambiti multi-threading.

Version:
1.0
Author:
Marco Cimatti

Field Summary
private  java.lang.String algoritmo
          L'algoritmo del java.security.Signature da impiegare.
 
Constructor Summary
Firma(java.lang.String algoritmo)
          Unico costruttore della classe.
 
Method Summary
 byte[] firma(byte[] messaggio, int offset, int lun, java.security.PrivateKey chiave)
          Creazione della firma di un messaggio.
 byte[] firma(byte[] messaggio, java.security.PrivateKey chiave)
          Semplice wrapper che equivale a: firma(messaggio, 0, messaggio.length, chiave);
 boolean firmaOk(byte[] messaggio, byte[] firma, java.security.PublicKey chiave)
          Semplice wrapper che equivale a: firmaOk(messaggio, 0, messaggio.length, firma, chiave);
 boolean firmaOk(byte[] messaggio, int offset, int lun, byte[] firma, java.security.PublicKey chiave)
          Test di validità della firma di un messaggio.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

algoritmo

private java.lang.String algoritmo
L'algoritmo del java.security.Signature da impiegare.
Constructor Detail

Firma

public Firma(java.lang.String algoritmo)
      throws java.security.NoSuchAlgorithmException
Unico costruttore della classe.
Parameters:
algoritmo - il tipo di Signature da adottare internamente.
Throws:
java.security.NoSuchAlgorithmException - se l'algoritmo specificato non è supportato.
See Also:
algoritmo
Method Detail

firma

public byte[] firma(byte[] messaggio,
                    java.security.PrivateKey chiave)
Semplice wrapper che equivale a:

firma(messaggio, 0, messaggio.length, chiave);

See Also:
firma(byte[], int, int, java.security.PrivateKey)

firma

public byte[] firma(byte[] messaggio,
                    int offset,
                    int lun,
                    java.security.PrivateKey chiave)
Creazione della firma di un messaggio.
Parameters:
messaggio - il testo da firmare.
offset - l'offset del primo byte utile nel vettore messaggio.
lun - la lunghezza del testo da firmare, considerato da messaggio[offset] (compreso) in poi.
chiave - la chiave privata con cui firmare.
Returns:
la firma ottenuta dal (blocco appartenente a) messaggio; null in caso di InvalidKeyException oppure SignatureException interne.
Throws:
java.lang.RuntimeException - se internamente viene generata una NoSuchAlgorithmException.
See Also:
firmaOk(byte[], byte[], java.security.PublicKey), firmaOk(byte[], int, int, byte[], java.security.PublicKey)

firmaOk

public boolean firmaOk(byte[] messaggio,
                       byte[] firma,
                       java.security.PublicKey chiave)
Semplice wrapper che equivale a:

firmaOk(messaggio, 0, messaggio.length, firma, chiave);

See Also:
firmaOk(byte[], int, int, byte[], java.security.PublicKey)

firmaOk

public boolean firmaOk(byte[] messaggio,
                       int offset,
                       int lun,
                       byte[] firma,
                       java.security.PublicKey chiave)
Test di validità della firma di un messaggio.
Parameters:
messaggio - il testo da cui è stata ottenuta la firma.
offset - l'offset del primo byte utile nel vettore messaggio.
lun - la lunghezza del testo firmato, considerato da messaggio[offset] (compreso) in poi.
firma - la firma associata al (blocco del) messaggio.
chiave - la chiave pubblica con cui verifica la firma.
Returns:
true se la firma è valida, false altrimenti oppure in caso di InvalidKeyException o SignatureException interne.
Throws:
java.lang.RuntimeException - se internamente viene generata una NoSuchAlgorithmException.
See Also:
firmaOk(byte[], byte[], java.security.PublicKey)