diff options
author | Matt Caswell <matt@openssl.org> | 2020-04-06 19:24:05 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2020-04-15 12:24:13 +0200 |
commit | d6a2bdf7f1585587c607abb2e5ae281d12dd8230 (patch) | |
tree | 21efe2fddcbcd96784c39c279339cd7136124e31 /ssl | |
parent | Teach PEM_read_bio_PrivateKey about libctx (diff) | |
download | openssl-d6a2bdf7f1585587c607abb2e5ae281d12dd8230.tar.xz openssl-d6a2bdf7f1585587c607abb2e5ae281d12dd8230.zip |
Make sure we use the libctx in libssl when loading PrivateKeys
Since loading a private key might require algorithm fetches we should
make sure the correct libctx is used.
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/11494)
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/ssl_rsa.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/ssl/ssl_rsa.c b/ssl/ssl_rsa.c index 09b965fc19..58f0833f22 100644 --- a/ssl/ssl_rsa.c +++ b/ssl/ssl_rsa.c @@ -264,12 +264,15 @@ int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type) } if (type == SSL_FILETYPE_PEM) { j = ERR_R_PEM_LIB; - pkey = PEM_read_bio_PrivateKey(in, NULL, - ssl->default_passwd_callback, - ssl->default_passwd_callback_userdata); + pkey = PEM_read_bio_PrivateKey_ex(in, NULL, + ssl->default_passwd_callback, + ssl->default_passwd_callback_userdata, + ssl->ctx->libctx, + ssl->ctx->propq); } else if (type == SSL_FILETYPE_ASN1) { j = ERR_R_ASN1_LIB; - pkey = d2i_PrivateKey_bio(in, NULL); + pkey = d2i_PrivateKey_ex_bio(in, NULL, ssl->ctx->libctx, + ssl->ctx->propq); } else { SSLerr(SSL_F_SSL_USE_PRIVATEKEY_FILE, SSL_R_BAD_SSL_FILETYPE); goto end; @@ -293,7 +296,8 @@ int SSL_use_PrivateKey_ASN1(int type, SSL *ssl, const unsigned char *d, EVP_PKEY *pkey; p = d; - if ((pkey = d2i_PrivateKey(type, NULL, &p, (long)len)) == NULL) { + if ((pkey = d2i_PrivateKey_ex(type, NULL, &p, (long)len, ssl->ctx->libctx, + ssl->ctx->propq)) == NULL) { SSLerr(SSL_F_SSL_USE_PRIVATEKEY_ASN1, ERR_R_ASN1_LIB); return 0; } @@ -551,12 +555,13 @@ int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type) } if (type == SSL_FILETYPE_PEM) { j = ERR_R_PEM_LIB; - pkey = PEM_read_bio_PrivateKey(in, NULL, + pkey = PEM_read_bio_PrivateKey_ex(in, NULL, ctx->default_passwd_callback, - ctx->default_passwd_callback_userdata); + ctx->default_passwd_callback_userdata, + ctx->libctx, ctx->propq); } else if (type == SSL_FILETYPE_ASN1) { j = ERR_R_ASN1_LIB; - pkey = d2i_PrivateKey_bio(in, NULL); + pkey = d2i_PrivateKey_ex_bio(in, NULL, ctx->libctx, ctx->propq); } else { SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE, SSL_R_BAD_SSL_FILETYPE); goto end; @@ -580,7 +585,8 @@ int SSL_CTX_use_PrivateKey_ASN1(int type, SSL_CTX *ctx, EVP_PKEY *pkey; p = d; - if ((pkey = d2i_PrivateKey(type, NULL, &p, (long)len)) == NULL) { + if ((pkey = d2i_PrivateKey_ex(type, NULL, &p, (long)len, ctx->libctx, + ctx->propq)) == NULL) { SSLerr(SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1, ERR_R_ASN1_LIB); return 0; } |