Partager via


Analyse du code des classes d'utilitaires (Exemple CNG)

Le fichier Utilities.cs dans l'exemple de communication sécurisée CNG (Cryptography Next Generation) fournit des indicateurs de contrôle au niveau de l'application et des méthodes utilisés par les projets Alice, Bobet Mallory.Ces indicateurs et ces méthodes sont traités dans les sections suivantes :

  • Indicateurs Version, fVerbose et fMallory

  • Méthode de chargeur automatique

  • Méthode InitConsole

  • Méthode SplashScreen

  • Méthodes ReadALine et ReadAChar

  • Méthode InitializeOptions

  • Méthodes d'affichage

Pour une vue d'ensemble de l'exemple, consultez Communication sécurisée Cryptography Next Generation (CNG), exemple.

Indicateurs Version, fVerbose et fMallory

  • Version : valeur entière qui détermine quel modèle de sécurité est présenté, comme défini dans le tableau suivant.

    Version

    Modèle de sécurité

    1

    Aucun chiffrement (messages texte en clair).

    2

    Messages chiffrés.

    3

    Signatures numériques non sécurisées utilisées avec des clés de chiffrement et des messages chiffrés.

    4

    Signatures numériques sécurisées utilisées avec des clés de chiffrement et des messages chiffrés.

    5

    Arrêt du programme en cas d'erreurs de sécurité.

  • fVerbose : valeur booléenne qui contrôle l'affichage de la sortie.La valeur true affiche tous les messages au format ASCII chiffré.La valeur false affiche les messages au format ASCII uniquement.

  • fMallory : valeur booléenne qui contrôle si le projet Mallory est activé.La valeur true exécute l'exemple avec Mallory.La valeur false exécute l'exemple sans l'interception de Mallory.Vous pouvez utiliser cet indicateur pour une analyse avant-après d'une attaque de l'intercepteur.

Méthode de chargeur automatique

static bool Autoloader()

Cette méthode charge Bob.exe et Mallory.exe.Elle est appelée par Alice au début de la méthode Main.

Le chargeur automatique détecte si Alice a été chargé comme application autonome ou par Visual Studio.Pour ce faire, il appelle la méthode Process.GetProcessesByName(String) afin d'obtenir un composant Process associé au processus Alice.exe.

  • Si le chargeur automatique obtient un composant Process, Alice est une application autonome.Alice démarre Bob.exe et Mallory.exe en appelant la méthode Process.Start(String) pour Bob et Mallory.Une exception est levée si Bob.exe ou Mallory.exe est introuvable.

  • Si le chargeur automatique n'obtient pas de composant Process, cela indique que Alice.exe a été chargé par Visual Studio.Dans ce cas, vous devez exécuter manuellement Bob.exe et Mallory.exe en les chargeant avec deux instances distinctes du débogueur Visual Studio.

Pour plus d'informations sur le chargeur, consultez Comment : créer et exécuter l'exemple CNG.

Méthode InitConsole

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

Cette méthode accepte une chaîne et deux entiers.La chaîne est utilisée pour donner un titre à la fenêtre de console.Les entiers représentent les coordonnées en pixels par défaut qui permettent de déterminer la position du coin supérieur gauche de la fenêtre de console sur l'écran.

Chaque fenêtre est positionnée d'après les coordonnées par défaut.La fenêtre d'Alice est située dans le coin supérieur gauche de l'écranet celle de Bob dans le coin supérieur droit.La fenêtre de Mallory est située sous les fenêtres d'Alice et de Bob.

Deux déclarations d'appel de code non managé donnent accès aux fonctions Win32 non managées MoveWindow (en anglais) et GetConsoleWindow (en anglais), qui procèdent au positionnement réel.

Méthode SplashScreen

static void SplashScreen()

Cette méthode efface la console et fournit des titres pour les fenêtres Alice, Bob et Mallory.

Méthodes ReadALine et ReadAChar

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

Ces méthodes utilitaires fonctionnent conjointement pour encapsuler des appels à la méthode Console.ReadLine.

ReadALine accepte une valeur booléenne.Si la valeur est true, ReadALine est retourné lorsque l'utilisateur appuie sur la touche ENTRÉE.Si la valeur est false, ReadALine est retourné uniquement si l'utilisateur tape au moins un caractère, puis appuie sur la touche ENTRÉE.

ReadAChar accepte une chaîne de caractères et est retourné lorsque l'utilisateur entre l'un des caractères dans la chaîne.

Méthode InitializeOptions

static string InitializeOptions()

Cette méthode propose un menu permettant de définir les indicateurs Version, fVerbose et fMallory décrits précédemment dans cette rubrique.En outre, l'utilisateur peut sélectionner la valeur « x » pour fermer l'application.

Méthodes d'affichage

Le fichier Utilities.cs fournit deux méthodes Display :

  • static void Display(string s)

    Cette méthode passe sa chaîne et le paramètre MyColor actuel à la deuxième surcharge de méthode Display.

  • static void Display(string DisplayString, int color)

    Cette méthode encapsule des appels à la méthode Console.WriteLine et fournit une sortie codée par couleur.L'utilisation de couleurs simplifie le suivi du propriétaire de chaque message.Par exemple, les messages d'Alice sont affichés en vert dans les trois fenêtres.Le tableau suivant répertorie les couleurs utilisées dans l'exemple et leurs significations.

ID

Couleur

Utilisation

0

Rouge

Messages d'erreur de sécurité.

1

Jaune

Menu Options et messages d'application.

2

Blanc

Messages de Bob.

3

Cyan

Entrée d'utilisateur

4

Vert

Messages d'Alice.

5

Violet

Messages de Mallory.

6

Jaune

Invite de redémarrage de l'application.

7

Gris

Données de message chiffré.

Voir aussi

Référence

Console

ConsoleColor

Concepts

Communication sécurisée Cryptography Next Generation (CNG), exemple

Code source d'Utilities.cs (Exemple CNG)

Vue d'ensemble du code source (Exemple CNG)

Autres ressources

Marshaling de données à l'aide de l'appel de code managé