我需要訪問從OpenSSL C API生成的主密鑰生成的加密(密碼,寫)密鑰。我知道我可以使用SSL結構如下訪問主密鑰:來自OpenSSL C的API訪問客戶端寫密鑰和服務器寫密鑰API
ssl->session->master_key
不幸的是看OpenSSL的代碼沒有得到我很遠,因爲API不是很好的記錄,看着GDB已經痛以及。他們暴露在任何地方?
感謝
我需要訪問從OpenSSL C API生成的主密鑰生成的加密(密碼,寫)密鑰。我知道我可以使用SSL結構如下訪問主密鑰:來自OpenSSL C的API訪問客戶端寫密鑰和服務器寫密鑰API
ssl->session->master_key
不幸的是看OpenSSL的代碼沒有得到我很遠,因爲API不是很好的記錄,看着GDB已經痛以及。他們暴露在任何地方?
感謝
我工作的同樣的事情爲好。 好了SSLv3的連接,您可以通過訪問密鑰塊,
ssl->s3->tmp.key_block
不過,我設法在ssl3_setup_key_block方法結束這是在s3_enc.c文件中定義得到這個。我的意思是我改變了源代碼並重新編譯了openssl。所以我不知道它從這個函數返回後是否改變或者丟失了。
這個關鍵塊是一個字符串,其定義如http://www.ietf.org/rfc/rfc2246.txt其結構是;
{
clientWriteMACSecret,
serverWriteMACSecret,
clientWriteKey,
serverWriteKey,
clientWriteIV,
serverWriteIV
}
每個部分的長度因使用的密碼套件而異。
對於SSLv2連接,我想你可以通過調用ssl->s2->something
再次訪問這些區域。 s2是在ssl2.h中定義的ssl2_state_st
結構的對象。你可以從那裏看起來。
我不知道它是如何用於TLSv1連接的。但是SSL結構中也有一個d1變量。
作爲個人記錄,openssl源代碼真的是一堆垃圾。沒有好的代碼評論,沒有好的文檔。徘徊在源代碼內部以尋找最簡單的東西是一種痛苦。