--- ssl/ssl.h 2009-07-15 13:32:57.000000000 +0200 +++ ssl/ssl.h 2009-07-20 16:14:13.000000000 +0200 @@ -1777,6 +1777,10 @@ /* Pre-shared secret session resumption functions */ int SSL_set_session_secret_cb(SSL *s, tls_session_secret_cb_fn tls_session_secret_cb, void *arg); +void SSL_tls1_key_extractor(SSL *s, unsigned char *label, int label_len, + unsigned char *context, int context_len, + unsigned char *out, int olen); + /* BEGIN ERROR CODES */ /* The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. --- ssl/t1_enc.c 2009-04-19 20:03:13.000000000 +0200 +++ ssl/t1_enc.c 2009-07-20 16:14:13.000000000 +0200 @@ -1006,3 +1006,17 @@ } } +void SSL_tls1_key_extractor(SSL *s, unsigned char *label, int label_len, + unsigned char *context, int context_len, + unsigned char *out, int olen) + { + unsigned char tmp[olen]; + + tls1_PRF(s->s3->tmp.new_cipher->algorithm2, + label, label_len, + s->s3->client_random,SSL3_RANDOM_SIZE, + s->s3->server_random,SSL3_RANDOM_SIZE, + context, context_len, NULL, 0, + s->session->master_key, s->session->master_key_length, + out, tmp, olen); + }