05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

340 6 Netzwerkprogrammierung <strong>mit</strong> <strong>SSL</strong><br />

sich am serverseitigen oder clientseitigen Ende der Verbindung befinden wird.<br />

Dies geschieht über die Funktion BIO_set_ssl_mode(), welchedasBIO b<br />

bzw. die <strong>mit</strong>tels BIO_set_ssl() assoziierte <strong>SSL</strong>-Datenstruktur noch vor dem<br />

Verbindungsaufbau in den Client- oder Servermodus versetzt. Hat der Parameter<br />

client den Wert 0, so handelt es sich um die Serverseite, hat der<br />

Parameter dagegen den Wert 1, so sitzt das BIO auf der Clientseite der aufzubauenden<br />

<strong>SSL</strong>-Verbindung.<br />

#include<br />

#include<br />

<br />

<br />

BIO_METHOD *BIO_f_ssl( void );<br />

long BIO_set_ssl( BIO *b, <strong>SSL</strong> *ssl, long flags );<br />

long BIO_set_ssl_mode( BIO *b, long client );<br />

BIO *BIO_new_ssl( <strong>SSL</strong>_CTX *ctx, int client );<br />

BIO *BIO_new_ssl_connect( <strong>SSL</strong>_CTX *ctx );<br />

BIO *BIO_new_buffer_ssl_connect( <strong>SSL</strong>_CTX *ctx );<br />

long BIO_do_handshake( BIO *b );<br />

long BIO_get_ssl( BIO *b, <strong>SSL</strong> **ssl );<br />

Den gleichen Zweck erfüllt der client-Parameter bei der BIO_new_ssl()-<br />

Funktion, die die beiden Aufrufe von BIO_new() <strong>und</strong> BIO_set_ssl() in einem<br />

Funktionsaufruf zusammenfaßt. Die Funktion leitet dazu aus der übergebenen<br />

<strong>SSL</strong>_CTX-Datenstruktur ctx, dem sogenannten <strong>SSL</strong>-Kontext, eine passende<br />

<strong>SSL</strong>-Datenstruktur ab <strong>und</strong> assoziiert diese <strong>mit</strong> dem neuen BIO-Objekt. 21 Je<br />

nach Wert des client-Parameters wird das neue BIO schließlich in den Clientoder<br />

Servermodus versetzt. BIO_new_ssl() liefert als Ergebnis entweder ein<br />

neues <strong>SSL</strong>-BIO oder bei Mißerfolg einen Nullzeiger.<br />

Für die Clientseite einer <strong>SSL</strong>-Verbindung gibt es zwei weitere, äußerst praktische<br />

Abkürzungen: Die beiden Hilfsfunktionen BIO_new_ssl_connect() <strong>und</strong><br />

BIO_new_buffer_ssl_connect() erstellen gleich eine ganze BIO-Kette, bestehend<br />

entweder aus einem <strong>SSL</strong>-BIO gefolgt von einem Connect-BIO oder<br />

sogar aus einem Puffer-BIO gefolgt von einem <strong>SSL</strong>- <strong>und</strong> einem Connect-BIO.<br />

Das <strong>SSL</strong>-BIO der neuen BIO-Kette befindet sich jeweils im Clientmodus. Die<br />

beiden Funktionen stellen da<strong>mit</strong> für <strong>SSL</strong>-Clients bei der Vorbereitung einer<br />

neuen <strong>SSL</strong>-Verbindung meist die erste Wahl dar, denn <strong>mit</strong> ihrer Hilfe entfällt<br />

das sonst übliche manuelle Aneinanderreihen dieser für <strong>SSL</strong>-Verbindungen typischen<br />

BIO-Objekte. Die beiden Funktionen liefern als Ergebnis entweder ein<br />

neues <strong>SSL</strong>-BIO oder bei Mißerfolg einen Nullzeiger.<br />

21 Was es <strong>mit</strong> dem <strong>SSL</strong>-Kontext auf sich hat, erfahren wir in Kapitel 7.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!