我需要访问从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源代码真的是一堆垃圾。没有好的代码评论,没有好的文档。徘徊在源代码内部以寻找最简单的东西是一种痛苦。