Analýza kódu obslužných tříd (příklad Kryptografické služby nové generace (CNG))

Soubor Utilities.cs v příkladu zabezpečené komunikace Kryptografické služby nové generace (CNG) poskytuje řídicí příznaky a metody pro celou aplikaci, které jsou používány projekty Alice, Bob a Mallory. Tyto příznaky a metody jsou popsány v následujících částech:

  • Příznaky Version, fVerbose a fMallory

  • Metoda Autoloader

  • Metoda InitConsole

  • Metoda SplashScreen

  • Metody ReadALine a ReadAChar

  • Metoda InitializeOptions

  • Metody Display

Přehled příkladu naleznete v tématu Příklad zabezpečené komunikace Kryptografické služby nové generace (CNG).

Příznaky Version, fVerbose a fMallory

  • Version: Je celočíselná hodnota určující, který model zabezpečení je demonstrován, jak je definováno v následující tabulce.

    Verze

    Model zabezpečení

    1

    Bez šifrování (zprávy v prostém textu).

    2

    Šifrované zprávy.

    3

    Nezabezpečené digitální podpisy použité s kryptografickými klíči a šifrovanými zprávami.

    4

    Zabezpečené digitální podpisy použité s kryptografickými klíči a šifrovanými zprávami.

    5

    Ukončení programu po chybách zabezpečení.

  • fVerbose: Logická hodnota, která řídí zobrazování výstupu. Hodnota true zobrazuje všechny zprávy v šifrovaném a ASCII formátu. Hodnota false zobrazuje zprávy pouze v ASCII formátu.

  • fMallory: Logická hodnota, která řídí, zda je povolen projekt Mallory. Hodnota true spustí příklad s Mallory. Hodnota false spustí příklad bez odposlouchávání, které provádí Mallory. Můžete použít tento příznak k pohodlné před a po analýze útoku prostředníka.

Metoda Autoloader

static bool Autoloader()

Tato metoda načte Bob.exe a Mallory.exe. Je volána Alicí na začátku její metody Main.

Automatický zavaděč zjistí, zda Alice byla načtena jako samostatná aplikace nebo pomocí sady Visual Studio. Toto provede voláním metody Process.GetProcessesByName(String) pro získání komponenty Process, která je asociována s procesem Alice.exe.

  • Pokud automatický zavaděč získá komponentu Process, tak Alice je samostatná aplikace. Alice spustí Bob.exe a Mallory.exe zavoláním metody Process.Start(String) na Boba a Mallory. Pokud nelze najít Bob.exe nebo Mallory.exe, je vyvolána výjimka.

  • Pokud automatický zavaděč nezíská komponentu Process, znamená to, že Alice.exe byla načtena pomocí sady Visual Studio. V takovém případě musíte Bob.exe a Mallory.exe spustit ručně pomocí jejich načtení se dvěma samostatnými instancemi ladícího programu sady Visual Studio.

Další informace týkající se automatického zavaděče naleznete v tématu Postupy: Sestavení a spuštění příkladu Kryptografické služby nové generace (CNG).

Metoda InitConsole

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

Tato metoda přijímá řetězec a dva celá čísla. Řetězec se používá pro titulek okna konzole. Celá čísla představují výchozí levou a horní souřadnici v pixelech, použitou pro umístění okna konzole na obrazovce.

Každé okno je umístěno podle výchozích souřadnic. Okno od Alice je umístěno v levém horním rohu obrazovky. Okno od Boba je umístěno v pravém horním rohu obrazovky. Okno náležící aplikaci Mallory je umístěno pod okny Alice a Boba.

Dvě deklarace volání nespravovaného kódu poskytují přístup k nespravovaným Win32 funkcím MoveWindow a GetConsoleWindow, které provádějí skutečné umístění.

Metoda SplashScreen

static void SplashScreen()

Tato metoda vymaže konzoli a poskytuje titulky pro okna od Alice, Boba a Mallory.

Metody ReadALine a ReadAChar

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

Tyto malé podpůrné metody pracují společně, aby obalily volání Console.ReadLine.

ReadALine přijímá hodnotu typu Boolean. Pokud je hodnota true, vrátí ReadALine, pokud uživatel stiskne klávesu Enter. Pokud je hodnota false, ReadALine nebude vrácena, dokud uživatel nezadá minimálně jeden znak a potom stiskne klávesu Enter.

ReadAChar přijímá řetězec znaků a skončí, když uživatel zadá jeden ze znaků v řetězci.

Metoda InitializeOptions

static string InitializeOptions()

Tato metoda představuje menu pro nastavení příznaků Version, fVerbose a fMallory popsaných dříve v tomto tématu. Kromě toho může uživatel zvolit hodnotu x pro zavření aplikace.

Metody Display

Soubor Utilities.cs obsahuje dvě metody Display:

  • static void Display(string s)

    Tato metoda předává její řetězec a aktuální parametr MyColor přetížení druhé metody Display.

  • static void Display(string DisplayString, int color)

    Tato metoda obtéká volání Console.WriteLine a poskytuje barevně kódovaný výstup. Použití barev usnadňuje sledování majitele každé zprávy. Například zprávy od Alice jsou zobrazeny zeleně ve všech třech oknech. Následující tabulka obsahuje seznam barev použitých v příkladu včetně jejich významu.

ID

Barva

Pomocí

0

Červená

Zprávy chyb zabezpečení.

1

Žlutá

Menu možnosti a zprávy aplikace.

2

Bílá

Zprávy od Boba.

3

Azurová

Uživatelský vstup.

4

Zelená

Zprávy od Alice.

5

Nachová

Zprávy od aplikace Mallory.

6

Žlutá

Výzva k restartování aplikace.

7

Šedá

Data zašifrované zprávy.

Viz také

Odkaz

Console

ConsoleColor

Koncepty

Příklad zabezpečené komunikace Kryptografické služby nové generace (CNG)

Zdrojový kód Utilities.cs (příklad Kryptografické služby nové generace (CNG))

Přehled zdrojového kódu (příklad Kryptografické služby nové generace (CNG))

Další zdroje

Marshaling Data with Platform Invoke