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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6.3 Open<strong>SSL</strong>-Basisfunktionalität 325<br />

<strong>und</strong> kodierten Daten dann an einen Kommunikationspartner übertragen werden.<br />

Wird aus einer BIO-Kette gelesen, so kehrt sich die Flußrichtung um, die<br />

Daten wandern also aus der am Ende liegenden Quelle in der umgekehrten<br />

Reihenfolge durch die einzelnen Filterobjekte.<br />

Im folgenden picken wir uns die wichtigsten BIO-Funktionen heraus <strong>und</strong> besprechen<br />

sie im Rahmen einiger einfacher Beispiele.<br />

6.3.2 Lebenszyklus von BIO-Objekten<br />

Mit Hilfe der Funktion BIO_new() wird ein neues BIO-Objekt ins Leben gerufen.<br />

Die Funktion erwartet als einziges Argument den gewünschten BIO-Typ,<br />

der der Aufgabe des Objekts entspricht. Open<strong>SSL</strong> stellt eine Vielzahl von<br />

verschieden Quellen/Senken oder Filtern bereit. Praktische Quellen/Senken<br />

für die Ein-/Ausgabe sind Dateien oder Dateideskriptoren <strong>und</strong> <strong>Sockets</strong>, zu<br />

den gängigen Filtern zählen neben Verschlüsselungsalgorithmen <strong>und</strong> kryptographischen<br />

Hashfunktionen auch Speicherpuffer zur Zwischenspeicherung der<br />

Daten im Hauptspeicher. Konnte BIO_new() das gewünschte BIO erfolgreich<br />

erstellen, liefert die Funktion als Rückgabewert einen Zeiger auf das neue BIO,<br />

andernfalls zeigt ein Nullzeiger an, daß die Operation fehlgeschlagen ist.<br />

#include<br />

<br />

BIO *BIO_new( BIO_METHOD *type );<br />

BIO *BIO_push( BIO *b, BIO *append );<br />

BIO *BIO_pop( BIO *b );<br />

int BIO_free( BIO *b );<br />

void BIO_free_all( BIO *b );<br />

Für alle BIO-Typen stehen spezielle Hilfsfunktionen zur Verfügung, die einen<br />

passenden BIO_METHOD-Zeiger für den Aufruf von BIO_new() liefern. Die Namenskonvention<br />

der Hilfsfunktionen ist BIO_s_*() für Quellen/Senken (Source/Sink)<br />

<strong>und</strong> BIO_f_*() für Filter, doch dazu später noch mehr.<br />

Über die Funktionen BIO_push() <strong>und</strong> BIO_pop() lassen sich Ketten von BIO-<br />

Objekten bilden. Die BIO_push()-Funktion hängt das BIO (oder die BIO-<br />

Kette) append an das BIO (oder die BIO-Kette) b an. Die Funktion liefert<br />

den Kopf der Kette, also b zurück. Abbildung 6.3 zeigt den Zusammenschluß<br />

zweier BIO-Ketten zu einer einzigen neuen Kette. Mit der BIO_pop()-Funktion<br />

wird ein einzelnes BIO-Objekt b aus seiner BIO-Kette entfernt. 17 Das heraus-<br />

17 Da ein BIO gleichzeitig nur in einer einzigen BIO-Kette enthalten sein kann, ist<br />

durch die Angabe des BIO-Objekts gleichzeitig die BIO-Kette bekannt, aus der das<br />

Objekt entfernt werden muß.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!