|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Object
|
+--chat.SocketUDPaffidabile
|
+--chat.Monitor
Classe che realizza il monitor di output della chat; in questo contesto il termine "monitor" è da indendersi come "video", "area di visualizzazione".
| Field Summary | |
private static boolean |
ACCLUDI_FIRMA_DIGITALE
Parametro di configurazione per usare o meno la crittografia. |
private static boolean |
ADOTTA_CRITTOGRAFIA
Parametro di configurazione per impiegare o meno la firma digitale. |
private java.security.PrivateKey |
c_privata
La chiave crittografica privata dell'utente. |
private java.security.PublicKey |
c_pubblica
La chiave crittografica pubblica dell'utente. |
private java.security.Key |
c_sessione
La chiave segreta di sessione per IDEA. |
private java.security.SecureRandom |
entropia
Un generatore di "casualità". |
static java.lang.String |
FILE_DATABASE
Nome del file ASCII contenente la rubrica delle conoscenze. |
static java.lang.String |
FILE_SWAP
Nome del file di scambio dei messaggi con Console. |
private xjava.security.KeyGenerator |
generatore_c
Il generatore delle chiavi segrete di sessione per IDEA. |
private Crittografia |
idea
Oggetto per applicare l'algoritmo crittografico IDEA ai dati. |
private Database |
interlocutori
Archivio con i Contatto dell'attuale gruppo di discussione. |
private Firma |
md5rsa
Oggetto per generare e verificare le firme digitali. |
private java.lang.String |
nickname
L'identità da adottare durante la chat. |
static int |
PORTA_DEFAULT
Porta UDP di default in assenza di direttive in fase di costruzione. |
private Crittografia |
rsa
Oggetto per applicare l'algoritmo crittografico RSA ai dati. |
private Database |
rubrica
La rubrica con tutte le conoscenze. |
private int |
seq_num
Numero di sequenza dei datagrammi UDP inviati. |
private java.io.BufferedReader |
swap
Un wrapper attorno al file coi messaggi provenienti dalla Console. |
private java.util.Vector |
SYNinviati
Lista degli utenti a cui sono stati iniviati uno o più datagrammi di tipo SYN. |
private Database |
SYNricevuti
Archivio degli utenti che ci hanno inviato un SYN ed ai quali non abbiamo ancora inviato il corrispondente OK. |
| Fields inherited from class chat.SocketUDPaffidabile |
cache,
history,
sock,
TENTATIVI,
TIMEOUT |
| Constructor Summary | |
(package private) |
Monitor()
Costruttore che avvia il Monitor sulla porta UDP
di default PORTA_DEFAULT. |
(package private) |
Monitor(int porta)
Costruttore che avvia il Monitor sulla porta UDP
indicata. |
| Method Summary | |
(package private) int |
agliInterlocutori(byte tipo,
byte[] cosa)
Metodo che invia il messaggio specificato a tutti gli utenti dell'attuale gruppo di discussione. |
(package private) void |
esegui()
Main-loop del programma: legge il contenuto del file di scambio con la Console e processa il comando,
quindi esamina anche il socket affidabile per verificare
i Messaggio ricevuti. |
protected int |
estraiSeqNum(java.net.DatagramPacket d)
Procedura che ricava il numero di sequenza dei datagrammi UDP appenda ricevuti via socket. |
protected int |
inserisciSeqNum(java.net.DatagramPacket d)
Procedura che numera i datagrammi UDP prima di inviarli in rete; utilizza seq_num incrementandolo di una
quantità casuale ogni volta, lo firma se la costante di classe
ACCLUDI_FIRMA_DIGITALE vale true,
infine lo cifra se ADOTTA_CRITTOGRAFIA == true. |
static void |
main(java.lang.String[] args)
L'entry-point del programma. |
(package private) Messaggio |
messaggioFromDatagram(java.net.DatagramPacket d)
Metodo che estrae un Messaggio serializzato da un
DatagramPacket. |
(package private) void |
messaggioToDatagram(Messaggio m,
java.net.DatagramPacket d)
Metodo che serializza un Messaggio riversandone
il contenuto entro un DatagramPacket. |
(package private) void |
processaComando(java.lang.String cmd)
Interpreta un comando letto dal file di scambio swap
con la Console. |
(package private) void |
visualizzaInterlocutori()
Funzione che visualizza sullo standard output i nomi degli interlocutori attuali. |
| Methods inherited from class chat.SocketUDPaffidabile |
allaCache,
chiudi,
disponibili,
flush,
invia,
invia,
ricevi |
| Methods inherited from class java.lang.Object |
|
| Field Detail |
public static final int PORTA_DEFAULT
public static final java.lang.String FILE_SWAP
Console.Consolepublic static final java.lang.String FILE_DATABASE
Databaseprivate static final boolean ACCLUDI_FIRMA_DIGITALE
private static final boolean ADOTTA_CRITTOGRAFIA
private java.io.BufferedReader swap
Console.Consoleprivate Database rubrica
private java.lang.String nickname
private java.security.PublicKey c_pubblica
private java.security.PrivateKey c_privata
private Firma md5rsa
private Crittografia rsa
private xjava.security.KeyGenerator generatore_c
private java.security.Key c_sessione
private Crittografia idea
private java.util.Vector SYNinviati
Protocollo.SYN,
Protocollo.OKprivate Database SYNricevuti
Protocollo.SYN,
Protocollo.OKprivate Database interlocutori
Contatto dell'attuale gruppo di discussione.private java.security.SecureRandom entropia
private int seq_num
| Constructor Detail |
Monitor() throws java.net.SocketException
Monitor sulla porta UDP
di default PORTA_DEFAULT. In caso di differenti
eccezioni termina il programma mediante System.exit(0).PORTA_DEFAULT,
SocketUDPaffidabile,
SocketUDPaffidabile.SocketUDPaffidabile(int)Monitor(int porta) throws java.net.SocketException
Monitor sulla porta UDP
indicata. In caso di differenti eccezioni termina il programma
mediante System.exit(0).porta - la porta UDP da usare per il socket reliable.SocketUDPaffidabile,
SocketUDPaffidabile.SocketUDPaffidabile(int)| Method Detail |
protected int inserisciSeqNum(java.net.DatagramPacket d)
seq_num incrementandolo di una
quantità casuale ogni volta, lo firma se la costante di classe
ACCLUDI_FIRMA_DIGITALE vale true,
infine lo cifra se ADOTTA_CRITTOGRAFIA == true.d - il DatagramPacket da numerare.d.seq_num,
ACCLUDI_FIRMA_DIGITALE,
ADOTTA_CRITTOGRAFIA,
SocketUDPaffidabile.inserisciSeqNum(DatagramPacket)protected int estraiSeqNum(java.net.DatagramPacket d)
DatagramPacket se la costante di classe
ADOTTA_CRITTOGRAFIA vale true,
scegliendo la chiave e l'algoritmo di decifratura sulla base
del mittente del datagramma e sulla lista degli interlocutori.d - il DatagramPacket da manipolare.d.ADOTTA_CRITTOGRAFIA,
interlocutori,
SocketUDPaffidabile.estraiSeqNum(DatagramPacket)
void messaggioToDatagram(Messaggio m,
java.net.DatagramPacket d)
Messaggio riversandone
il contenuto entro un DatagramPacket.m - il messaggio da serializzare.d - il datagramma UDP entro cui scrivere la versione
serializzata di m.MessaggioMessaggio messaggioFromDatagram(java.net.DatagramPacket d)
Messaggio serializzato da un
DatagramPacket. Compie l'azione complementare di
messaggioToDatagram(Messaggio, DatagramPacket).d - il datagramma da cui leggere la versione
serializzata di un Messaggio.d, oppure
null in caso di errore.messaggioToDatagram(Messaggio, DatagramPacket),
Messaggiovoid esegui()
Console e processa il comando,
quindi esamina anche il socket affidabile per verificare
i Messaggio ricevuti.swap,
Console
void processaComando(java.lang.String cmd)
throws java.io.IOException
swap
con la Console. Non termina il programma perché non
riconosce i comandi di uscita.cmd - la linea letta da swap.Consolevoid visualizzaInterlocutori()
interlocutori
int agliInterlocutori(byte tipo,
byte[] cosa)
throws java.io.IOException
tipo - il "tipo" di Messaggio da inviare.cosa - il testo da includere nel Messaggio.Protocollopublic static void main(java.lang.String[] args)
Cryptix ed avvia un'istanza di
Monitor, assegnandole la porta UDP eventualmente
specificata tramite la linea di comando.args - gli argomenti della linea di comando.
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||