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.

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

Adresse eines Speicherbereichs <strong>mit</strong> len Zeichen Fassungsvermögen. Ab der angegebenen<br />

Speicheradresse wird dann die lesbare, evtl. aber auf len-1 Zeichen<br />

gekürzte Fehlermeldung hinterlegt <strong>und</strong> <strong>mit</strong> einem Nullzeichen abgeschlossen.<br />

Um den ERR_error_string*()-Funktionen die Klartext-Fehlermeldungen bekannt<br />

zu machen, müssen vom Programm vorab die Fehlertexte geladen werden.<br />

Dies geschieht <strong>mit</strong> ERR_load_crypto_strings() für alle Fehlermeldungen<br />

der Funktionen aus der crypto-Bibliothek (dazu zählen u. a. auch die<br />

zuvor besprochenen BIO-Funktionen) <strong>und</strong> <strong>mit</strong> <strong>SSL</strong>_load_error_strings()<br />

für sämtliche Fehlermeldungen der ssl-Bibliothek.<br />

#include<br />

#include<br />

<br />

<br />

void ERR_load_crypto_strings( void );<br />

void <strong>SSL</strong>_load_error_strings( void );<br />

Der Fehlertext selbst setzt sich aus dem Fehlercode, dem Namen der Bibliothek<br />

<strong>und</strong> dem Namen der Funktion, in der der Fehler aufgetreten ist, sowie<br />

einer Kurzbeschreibung der Fehlerursache zusammen <strong>und</strong> hat die Form<br />

error:[code]:[library]:[function]:[reason].<br />

Last but not least gibt es noch zwei weitere Funktionen, <strong>mit</strong> deren Hilfe die<br />

Fehler einer Error-Queue direkt über ein BIO oder ein FILE-Handle ausgegeben<br />

werden können: ERR_print_errors() <strong>und</strong> ERR_print_errors_fp().<br />

#include<br />

<br />

void ERR_print_errors( BIO *bp );<br />

void ERR_print_errors_fp( FILE *fp );<br />

Die beiden Hilfsfunktionen erwarten als einzige Information eine Referenz<br />

auf das BIO-Objekt bzw. das FILE-Handle, über das die Ausgabe der Fehlermeldungen<br />

erfolgen soll. Danach iteriert sowohl ERR_print_errors() als<br />

auch ERR_print_errors_fp() über alle in der Error-Queue notierten Fehlermeldungen,<br />

gibt diese aus <strong>und</strong> leert dabei gleichzeitig die Error-Queue. Das<br />

Funktionenpaar arbeitet da<strong>mit</strong> ähnlich zu der oben beispielhaft vorgestellten<br />

Funktion print_all_errors().<br />

6.3.6 Thread-Support<br />

Die Open<strong>SSL</strong>-Bibliotheken wurden von den Entwicklern so ausgelegt, daß sie<br />

auch in nebenläufigen, <strong>mit</strong> mehreren <strong>Threads</strong> arbeitenden Programmen eingesetzt<br />

werden können. Allerdings operieren die Open<strong>SSL</strong>-Funktionen intern

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!