summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2017-06-12 18:38:30 +0100
committerMatt Caswell <matt@openssl.org>2017-06-21 14:45:35 +0100
commit911d63f2611490590e0527ffcd4c95a67cd13a28 (patch)
tree231855554136c9007215f9f08918187933ed30cb
parentdf894947c4f04dedb0bded25195bc2fc7b2b6915 (diff)
Add SSL_SESSION_set1_master_key()
Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/3670)
-rw-r--r--include/openssl/ssl.h2
-rw-r--r--ssl/ssl_lib.c13
-rw-r--r--util/libssl.num1
3 files changed, 16 insertions, 0 deletions
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: