Je travaille sur la même chose aussi. bien pour les connexions SSL v3, vous pouvez accéder au bloc de clé par,
ssl->s3->tmp.key_block
Cependant, je réussi à obtenir ce à la fin de la méthode de ssl3_setup_key_block qui est défini dans le fichier s3_enc.c. Je veux dire que j'ai changé le code source et recompilé openssl. Donc je ne sais pas encore si cela change ou se perd après le retour de cette fonction.
Ce bloc de clé est une chaîne et comme défini dans http://www.ietf.org/rfc/rfc2246.txt sa structure est;
{
clientWriteMACSecret,
serverWriteMACSecret,
clientWriteKey,
serverWriteKey,
clientWriteIV,
serverWriteIV
}
La longueur de chaque section varie en fonction de la suite de chiffrement utilisée.
Pour les connexions SSLv2, je suppose que vous pouvez à nouveau accéder à ces zones en appelant ssl->s2->something
. s2 est un objet de structure ssl2_state_st
qui est défini dans ssl2.h. Vous pouvez regarder ça à partir de là.
Je ne sais pas comment c'est pour les connexions TLSv1. Mais il y a aussi une variable d1 dans la structure SSL. En guise de note personnelle, le code source d'openssl est vraiment un tas de poubelle. Pas de bons commentaires de code, pas de bonne documentation. Errant à l'intérieur du code source afin de trouver la chose la plus simple est une douleur.