Condividi tramite


Analisi del codice delle classi di utilità (esempio CNG)

Aggiornamento: Luglio 2008

Il file Utilities.cs nell'esempio di comunicazione protetta tramite Cryptography Next Generation (CNG) fornisce flag e metodi di controllo a livello di applicazione che vengono utilizzati dai progetti Alice, Bob e Mallory. Nelle sezioni seguenti vengono descritti questi flag e metodi:

  • Flag Version, fVerbose e fMallory

  • Metodo Autoloader

  • Metodo InitConsole

  • Metodo SplashScreen

  • Metodi ReadALine e ReadAChar

  • Metodo InitializeOptions

  • Metodo Display

Per una panoramica dell'esempio, vedere Esempio di comunicazione protetta tramite Cryptography Next Generation (CNG)

Flag Version, fVerbose e fMallory

  • Version: valore intero che determina il modello di sicurezza illustrato, come definito nella tabella seguente.

    Versione

    Modello di sicurezza

    1

    Nessuna crittografia (messaggi di testo normale).

    2

    Messaggi crittografati.

    3

    Firme digitali non protette utilizzate con chiavi di crittografia e messaggi crittografati.

    4

    Firme digitali protette utilizzate con chiavi di crittografia e messaggi crittografati.

    5

    Chiusura del programma in caso di errori di sicurezza.

  • fVerbose: valore booleano che controlla l'output visualizzato. Il valore true visualizza tutti i messaggi in formato ASCII e crittografato. Il valore false visualizza tutti i messaggi solo in formato ASCII.

  • fMallory: valore booleano che controlla se il progetto Mallory è attivato. Il valore true esegue l'esempio con Mallory. Il valore false esegue l'esempio senza l'intercettazione di Mallory. È possibile utilizzare questo flag per un'analisi della situazione prima e dopo un attacco di tipo man-in-the-middle.

Metodo Autoloader

static bool Autoloader()

Questo metodo carica Bob.exe e Mallory.exe. Viene chiamato da Alice all'inizio del proprio metodo Main.

L'autoloader rileva se Alice è stata caricata come applicazione autonoma o tramite Visual Studio. A tale scopo, chiama il metodo Process.GetProcessesByName(String) per ottenere un componente Process associato al processo Alice.exe. 

  • Se l'autoloader ottiene un componente Process, Alice è un'applicazione autonoma. Alice avvia Bob.exe e Mallory.exe chiamando il metodo Process.Start(String) per Bob e Mallory. Se non è possibile trovare Bob.exe o Mallory.exe, verrà generata un'eccezione.

  • Se l'autoloader non ottiene un componente Process, significa che Alice.exe è stato caricato da Visual Studio. In questo caso, è necessario eseguire manualmente Bob.exe e Mallory.exe caricandoli con due istanze distinte del debbugger di Visual Studio.

Per ulteriori informazioni sull'autoloader, vedere Procedura: compilare ed eseguire l'esempio CNG.

Metodo InitConsole

static void InitConsole(string name, int left, int top)

Questo metodo accetta una stringa e due numeri interi. La stringa viene utilizzata per il titolo della finestra della console. I numeri interi rappresentano le coordinate predefinite sinistra e superiore, in pixel, per il posizionamento della finestra della console sullo schermo.

Ogni finestra viene posizionata in base alle coordinate predefinite. La finestra di Alice viene posizionata nell'angolo superiore sinistro dello schermo, la finestra di Bob nell'angolo superiore destro e la finestra Mallory sotto le finestre di Alice e Bob.

Due dichiarazioni pInvoke forniscono l'accesso alle funzioni Win32 non gestite MoveWindow e GetConsoleWindow, che eseguono il posizionamento effettivo.

Metodo SplashScreen

static void SplashScreen()

Questo metodo cancella la console e fornisce i titoli per le finestre Alice, Bob e Mallory.

Metodi ReadALine e ReadAChar

static string ReadALine(bool fBlankOkay)
static string ReadAChar(string options)

Questi piccoli metodi di utilità eseguono insieme il wrapping delle chiamate Console.ReadLine.

ReadALine accetta un valore booleano. Se il valore è true, ReadALine viene restituito se l'utente preme INVIO. Se il valore è false, ReadALine viene restituito solo quando l'utente digita almeno un carattere e quindi preme INVIO.

ReadAChar accetta una stringa di caratteri e viene restituito quando l'utente immette uno dei caratteri della stringa.

Metodo InitializeOptions

static string InitializeOptions()

Questo metodo rende disponibile un menu per l'impostazione dei flag Version, fVerbose e fMallory descritti in precedenza in questo argomento. Inoltre, l'utente può selezionare il valore "x" per chiudere l'applicazione.

Metodo Display

Il file Utilities.cs fornisce due metodi Display:

  • static void Display(string s)

    Questo metodo passa la stringa e il parametro MyColor corrente all'overload del secondo metodo Display.

  • static void Display(string DisplayString, int color)

    Questo metodo esegue il wrapping delle chiamate Console.WriteLine e fornisce output con colori diversi. L'utilizzo di colori consente di tenere traccia più facilmente dell'autore di ogni messaggio. Ad esempio, i messaggi di Alice vengono visualizzati in verde in tutte e tre le finestre. Nella tabella seguente vengono elencati i colori utilizzati nell'esempio e i relativi significati.

ID

Colore

Utilizzo

0

Rosso

Messaggi di errore di sicurezza.

1

Giallo

Messaggi del menu delle opzioni e delle applicazioni.

2

Bianco

Messaggi di Bob

3

Ciano

Input dell'utente.

4

Verde

Messaggi di Alice.

5

Viola

Messaggi di Mallory.

6

Giallo

Prompt di riavvio dell'applicazione.

7

Grigio

Dati dei messaggi crittografati.

Vedere anche

Concetti

Esempio di comunicazione protetta tramite Cryptography Next Generation (CNG)

Codice sorgente di Utilities.cs (esempio CNG)

Cenni preliminari sul codice sorgente (esempio CNG)

Riferimenti

Console

ConsoleColor

Altre risorse

Marshalling dei dati con richiamo piattaforma

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2008

Argomento aggiunto.

Miglioramento delle informazioni.