mirror of
https://github.com/openssl/openssl.git
synced 2025-01-24 13:55:42 +08:00
Don't attempt to set provider params on an ENGINE based cipher
If an ENGINE has been loaded after the SSL_CTX has been created then the cipher we have cached might be provider based, but the cipher we actually end up using might not be. Don't try to set provider params on a cipher that is actually ENGINE based. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Todd Short <todd.short@me.com> (Merged from https://github.com/openssl/openssl/pull/22864)
This commit is contained in:
parent
7765d25ffe
commit
afcc12c41a
@ -64,7 +64,11 @@ static int ssl3_set_crypto_state(OSSL_RECORD_LAYER *rl, int level,
|
||||
return OSSL_RECORD_RETURN_FATAL;
|
||||
}
|
||||
|
||||
if (EVP_CIPHER_get0_provider(ciph) != NULL
|
||||
/*
|
||||
* The cipher we actually ended up using in the EVP_CIPHER_CTX may be
|
||||
* different to that in ciph if we have an ENGINE in use
|
||||
*/
|
||||
if (EVP_CIPHER_get0_provider(EVP_CIPHER_CTX_get0_cipher(ciph_ctx)) != NULL
|
||||
&& !ossl_set_tls_provider_parameters(rl, ciph_ctx, ciph, md)) {
|
||||
/* ERR_raise already called */
|
||||
return OSSL_RECORD_RETURN_FATAL;
|
||||
|
@ -117,9 +117,16 @@ static int tls1_set_crypto_state(OSSL_RECORD_LAYER *rl, int level,
|
||||
ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
|
||||
return OSSL_RECORD_RETURN_FATAL;
|
||||
}
|
||||
if (EVP_CIPHER_get0_provider(ciph) != NULL
|
||||
&& !ossl_set_tls_provider_parameters(rl, ciph_ctx, ciph, md))
|
||||
|
||||
/*
|
||||
* The cipher we actually ended up using in the EVP_CIPHER_CTX may be
|
||||
* different to that in ciph if we have an ENGINE in use
|
||||
*/
|
||||
if (EVP_CIPHER_get0_provider(EVP_CIPHER_CTX_get0_cipher(ciph_ctx)) != NULL
|
||||
&& !ossl_set_tls_provider_parameters(rl, ciph_ctx, ciph, md)) {
|
||||
/* ERR_raise already called */
|
||||
return OSSL_RECORD_RETURN_FATAL;
|
||||
}
|
||||
|
||||
/* Calculate the explicit IV length */
|
||||
if (RLAYER_USE_EXPLICIT_IV(rl)) {
|
||||
|
Loading…
Reference in New Issue
Block a user