2013-01-23 16 views
7

Dokumentacja mówinie rozumiem sposobu OpenSSL_add_all_algorithms

OpenSSL utrzymuje wewnętrzną tablicę strawienia algorytmów i szyfrów. Używa tej tabeli do wyszukiwania szyfrów za pomocą funkcji takich jak EVP_get_cipher_byname().

OpenSSL_add_all_digests() dodaje wszystkie algorytmy digest do tabeli.

Moje pytanie brzmi, gdzie jest przechowywana ta tabela? W jaki sposób mój kod wie, że ta metoda została wykonana? ... jak to działa wewnętrznie, co jeśli chcę więcej połączeń SSL, a jeden ma mieć wszystkie digests dodane, a nie? Czy ktoś zna dobrą dokumentację dla tego?

Dziękuję

Odpowiedz

7

sekcji UWAGI strony ręcznej dość dużo podsumowuje:

Typowym zastosowaniem wezwie OpenSSL_add_all_algorithms() początkowo EVP_cleanup() przed zamknięciem.

i

Szyfr i trawić funkcje sprawdzania adresów są wykorzystywane w wielu częściach biblioteki. Jeśli tabela nie zostanie zainicjalizowana, kilka funkcji źle działa i narzeka, że ​​nie może znaleźć algorytmów. Obejmuje to biblioteki PEM, PKCS # 12, SSL i S/MIME. Jest to typowe zapytanie na listach dyskusyjnych OpenSSL.

Więc zakładając, że piszesz typową aplikację, można dodać do swojej OpenSSL kodzie inicjującym:

OpenSSL_add_all_algorithms(); 

i to do kodu oczyszczania OpenSSL:

EVP_cleanup(); 

i są skończone. Jesteś zawsze odpowiedzialny za wywoływanie ich samodzielnie w aplikacjach korzystających z OpenSSL. Jeśli chcesz wiedzieć, w jaki sposób OpenSSL przechowuje tabelę wewnętrznie, use the source, Luke.

Aby kontrolować, które szyfry są dostępne dla określonego kontekstu SSL, należy użyć SSL_CTX_set_cipher_list.

Jeśli chodzi o lepszą dokumentację niż stronę podręcznika, mogę polecić "Network Security with OpenSSL" by John Viega, Matt Messier & Pravir Chandra. Książka jest stara i nie obejmuje nowszych wersji OpenSSL, ale większość z nich jest nadal bardzo odpowiednia.

+0

dzięki za odpowiedź –

+0

Dzięki za rekomendację książki. – Sabuncu