From: Matt Caswell Date: Mon, 12 Jun 2017 17:38:30 +0000 (+0100) Subject: Add SSL_SESSION_set1_master_key() X-Git-Tag: OpenSSL_1_1_1-pre1~1246 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=911d63f2611490590e0527ffcd4c95a67cd13a28 Add SSL_SESSION_set1_master_key() Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/3670) --- diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index e4aa743141..bf01f60cd3 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -1861,6 +1861,8 @@ __owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, size_t outlen); __owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *ssl, unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, unsigned char *in, + size_t len); #define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index bcb012f107..db14e22350 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -3725,6 +3725,19 @@ size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, return outlen; } +int SSL_SESSION_set1_master_key(SSL_SESSION *sess, unsigned char *in, + size_t len) +{ + if (len > sizeof(sess->master_key)) + return 0; + + memcpy(sess->master_key, in, len); + sess->master_key_length = len; + + return 1; +} + + int SSL_set_ex_data(SSL *s, int idx, void *arg) { return (CRYPTO_set_ex_data(&s->ex_data, idx, arg)); diff --git a/util/libssl.num b/util/libssl.num index 959e134ea0..25e0750e1a 100644 --- a/util/libssl.num +++ b/util/libssl.num @@ -456,3 +456,4 @@ SSL_set_psk_use_session_callback 456 1_1_1 EXIST::FUNCTION: SSL_CTX_set_psk_use_session_callback 457 1_1_1 EXIST::FUNCTION: SSL_CTX_set_psk_find_session_callback 458 1_1_1 EXIST::FUNCTION: SSL_CIPHER_get_handshake_digest 459 1_1_1 EXIST::FUNCTION: +SSL_SESSION_set1_master_key 460 1_1_1 EXIST::FUNCTION: