|
||||||||
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
.Console
public static final java.lang.String FILE_DATABASE
Database
private static final boolean ACCLUDI_FIRMA_DIGITALE
private static final boolean ADOTTA_CRITTOGRAFIA
private java.io.BufferedReader swap
Console
.Console
private 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.OK
private Database SYNricevuti
Protocollo.SYN
,
Protocollo.OK
private 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
.Messaggio
Messaggio 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)
,
Messaggio
void 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
.Console
void 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
.Protocollo
public 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 |