From 292b4184d6fda8e0c5c62c22170e8ad464a1a3a7 Mon Sep 17 00:00:00 2001 From: Pauli Date: Tue, 23 Feb 2021 11:48:57 +1000 Subject: evp: upport modified gettable/settable ctx calls for ciphers Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14240) --- crypto/evp/evp_enc.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'crypto/evp/evp_enc.c') diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index ebb876a8dc..851c6d5d9a 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -1220,17 +1220,45 @@ const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher) const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher) { - if (cipher != NULL && cipher->settable_ctx_params != NULL) - return cipher->settable_ctx_params( - ossl_provider_ctx(EVP_CIPHER_provider(cipher))); + void *alg; + + if (cipher != NULL && cipher->settable_ctx_params != NULL) { + alg = ossl_provider_ctx(EVP_CIPHER_provider(cipher)); + return cipher->settable_ctx_params(NULL, alg); + } return NULL; } const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher) { - if (cipher != NULL && cipher->gettable_ctx_params != NULL) - return cipher->gettable_ctx_params( - ossl_provider_ctx(EVP_CIPHER_provider(cipher))); + void *alg; + + if (cipher != NULL && cipher->gettable_ctx_params != NULL) { + alg = ossl_provider_ctx(EVP_CIPHER_provider(cipher)); + return cipher->gettable_ctx_params(NULL, alg); + } + return NULL; +} + +const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *cctx) +{ + void *alg; + + if (cctx != NULL && cctx->cipher->settable_ctx_params != NULL) { + alg = ossl_provider_ctx(EVP_CIPHER_provider(cctx->cipher)); + return cctx->cipher->settable_ctx_params(cctx->provctx, alg); + } + return NULL; +} + +const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *cctx) +{ + void *alg; + + if (cctx != NULL && cctx->cipher->gettable_ctx_params != NULL) { + alg = ossl_provider_ctx(EVP_CIPHER_provider(cctx->cipher)); + return cctx->cipher->gettable_ctx_params(cctx->provctx, alg); + } return NULL; } -- cgit v1.2.3