2013-01-23 28 views
7

文檔說不明白OpenSSL_add_all_algorithms方法

OpenSSL的不斷消化算法和密碼的內部表。它使用此表通過EVP_get_cipher_byname()等函數查找密碼。

OpenSSL_add_all_digests()將所有摘要算法添加到表中。

我的問題是,該表存儲在哪裏?我的代碼是如何知道這個方法已經執行的?......它是如何在內部工作的,如果我想要更多的SSL連接,並且一個可以添加所有的摘要而一個不是? 有沒有人知道這個有什麼好的文檔?

謝謝

回答

7

手冊頁的說明部分幾乎總結起來:

一個典型的應用程序將退出之前()最初和EVP_cleanup()調用OpenSSL_add_all_algorithms。

的加密和摘要查找功能庫中的許多地方使用。如果表未初始化,則幾個函數將會行爲不當,並且抱怨他們找不到算法。這包括PEM,PKCS#12,SSL和S/MIME庫。這是OpenSSL郵件列表中的常見查詢。

所以假設你正在編寫一個典型的應用程序,你將它添加到您的OpenSSL的初始化代碼:

OpenSSL_add_all_algorithms(); 

,這OpenSSL的清理代碼:

EVP_cleanup(); 

和你完成。您始終有責任在使用OpenSSL的應用程序中自行調用這些函數。如果您想知道OpenSSL如何在內部存儲表格,請參閱use the source, Luke

要控制哪些密碼可用於特定的SSL上下文,您可以使用SSL_CTX_set_cipher_list

至於比手冊頁更好的文檔,我可以推薦"Network Security with OpenSSL" by John Viega, Matt Messier & Pravir Chandra。這本書很舊,不包含較新版本的OpenSSL,但其中大部分仍然適用。

+0

感謝您的回答 –

+0

感謝您的書籍​​推薦。 – Sabuncu