Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
 Registrieren
    Profil      Private Nachrichten   Login
openSSL verwenden

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pcAlko



Anmeldungsdatum: 14.05.2007
Beiträge: 68

BeitragVerfasst am: 25. Feb 2008 17:43   Titel: openSSL verwenden Antworten mit Zitat

Hallo Leute!

Ich habe einen server + client geschrieben, den ich jetzt mit openSSL Unterstützung erweitern möchte.
Beim Googeln bin ich auf den IBM-Link http://www.ibm.com/developerworks/linux/library/l-openssl.html gestossen.

Mein Problem fangt aber schon an wenn ich nur die Initialisierung übersetzen möchte.
Die includierten header bio.h ssl.h und err.h machen keine Probleme
er compiliert auch ohne Probleme
Code:
SSL_load_error_strings();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();


Aber beim Linken findet er keine Referenzen.

ich habe beim make -lBIO versucht
laut Tutorial steht:
> OpenSSL uses an abstraction library called BIO

aber diese Library findet er mir nirgends
unter apt-cache search bio.so
findet er nur shared objects für Perl

mein Englisch ist aber auch nicht das Beste
vielleicht habe ich im Tutorial etwas überlesen!

kann mir irgendwer weiterhelfen?

Cool pcAlko
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3454

BeitragVerfasst am: 25. Feb 2008 19:54   Titel: Antworten mit Zitat

Die Library die du einbinden musst, ist "libssl", wie man an
Code:

$ objdump -T /usr/lib/libssl.so|grep BIO
00000000      DF *UND*  00000012              BIO_s_socket
00000000      DF *UND*  000000ca              BIO_free
00000000      DF *UND*  0000003b              BIO_free_all
00000000      DF *UND*  000000fd              BIO_ctrl
00000000      DF *UND*  00000017              BIO_copy_next_retry
00000000      DF *UND*  00000008              BIO_get_retry_reason
00000000      DF *UND*  00000088              BIO_new
00033350 g    DF .text  00000012  Base        BIO_f_ssl
00000000      DF *UND*  00000126              BIO_puts
00000000      DF *UND*  00000012              BIO_f_buffer
00000000      DF *UND*  0000005b              BIO_push
00000000      DF *UND*  0000003c              BIO_snprintf
00033c4c g    DF .text  00000071  Base        BIO_ssl_copy_session_id
00033d42 g    DF .text  0000005f  Base        BIO_new_ssl_connect
00033cbd g    DF .text  00000085  Base        BIO_new_ssl
00000000      DF *UND*  00000150              BIO_write
00000000      DF *UND*  00000034              BIO_printf
00000000      DF *UND*  000000fa              BIO_callback_ctrl
00000000      DF *UND*  0000002f              BIO_find_type
00000000      DF *UND*  00000012              BIO_s_file
00000000      DF *UND*  00000132              BIO_read
00033c10 g    DF .text  0000003c  Base        BIO_ssl_shutdown
00000000      DF *UND*  0000006e              BIO_pop
00033da1 g    DF .text  00000073  Base        BIO_new_buffer_ssl_connect
00000000      DF *UND*  00000040              BIO_int_ctrl
00000000      DF *UND*  00000012              BIO_s_connect
$

leicht erkennen kann. Also statt -lBIO -lssl schreiben und gut ist.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

pcAlko



Anmeldungsdatum: 14.05.2007
Beiträge: 68

BeitragVerfasst am: 14. März 2008 20:26   Titel: Antworten mit Zitat

Hallo Janka!

Danke hat super funktioniert.
Bin erst jetzt dazu gekommen die verschlüsselung in angriff zu nehmen.

Nur hab ich jetzt ein anderes Problem
vielleicht kennst Du dich oder jemand der das liest damit aus.

Das Compilen und Linken hat super funktioniert
nur nach dem ausführen bekom' ich einen Segmentation Fehler.
Code:

    SSL_CTX * ctx;

    ERR_load_BIO_strings();
    SSL_load_error_strings();
    OpenSSL_add_all_algorithms();

    /* Set up the SSL context */

    ctx = SSL_CTX_new(SSLv23_client_method());

    /* Load the trust store */
    if(! SSL_CTX_load_verify_locations(ctx, "TrustStore.pem", NULL))
    {
        fprintf(stderr, "Error loading trust store\n");
        ERR_print_errors_fp(stderr);
        SSL_CTX_free(ctx);
        return 0;
    }

Beim Debuggem bleibt er mir beim letzten Befehl SSL_CTX_load_verify_locations einfach stehen.
Wenn ich den Eclipse Debugger beende bekomme ich folgende Ausgabe

Stopped due to shared library event
No source file named Client.cpp.
No source file named Client.cpp.
No source file named main.cpp.
No source file named main.cpp.
No source file named Thread.cpp.
kill

diese Files existieren aber im Projekt nicht
hataber warscheinlich auch nichts zu bedeuten.

hast Du da irgend eine Idee
oder vielleicht sonst irgend jemand????????

oder wie kann ich da den Fehler am besten finden.

Cool pcAlko
 
Benutzer-Profile anzeigen Private Nachricht senden

KayFr72



Anmeldungsdatum: 21.08.2010
Beiträge: 1

BeitragVerfasst am: 21. Aug 2010 16:08   Titel: Antworten mit Zitat

Hallo pcAlco!

Du hast den SSL_library_init() vor den Befehlen vergessen:

so muss es heißen!

Code:
SSL_library_init()

SSL_CTX_new(SSLv23_client_method())


Gruß KayFr72
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy