Fix exporter.

This commit is contained in:
Ben Laurie 2011-12-02 16:49:32 +00:00
parent 825e1a7c56
commit a0cf79e841
2 changed files with 17 additions and 7 deletions

View File

@ -2019,9 +2019,10 @@ int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb,
/* 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);
int SSL_tls1_key_exporter(SSL *s, unsigned char *label, int label_len,
unsigned char *context, int context_len,
unsigned char *out, int olen);
int SSL_tls1_key_exporter(SSL *s,
const unsigned char *label, int label_len,
const unsigned char *context, int context_len,
unsigned char *out, int olen);
void SSL_set_debug(SSL *s, int debug);
int SSL_cache_hit(SSL *s);

View File

@ -1250,23 +1250,32 @@ int tls1_alert_code(int code)
}
}
int SSL_tls1_key_exporter(SSL *s, unsigned char *label, int label_len,
unsigned char *context, int context_len,
unsigned char *out, int olen)
int SSL_tls1_key_exporter(SSL *s,
const unsigned char *label, int label_len,
const unsigned char *context, int context_len,
unsigned char *out, int olen)
{
unsigned char *tmp;
int rv;
unsigned char context_len_16[2];
if (context_len > 0xffff)
return 0;
tmp = OPENSSL_malloc(olen);
if (!tmp)
return 0;
context_len_16[0] = context_len >> 8;
context_len_16[1] = context_len;
rv = tls1_PRF(ssl_get_algorithm2(s),
label, label_len,
s->s3->client_random,SSL3_RANDOM_SIZE,
s->s3->server_random,SSL3_RANDOM_SIZE,
context, context_len, NULL, 0,
context_len_16, sizeof(context_len_16),
context, context_len,
s->session->master_key, s->session->master_key_length,
out, tmp, olen);