From b2b638a0cc1f50ba1cbe03c03629a9209a4f4701 Mon Sep 17 00:00:00 2001 From: Pauli Date: Mon, 27 Oct 2025 13:26:00 +1100 Subject: [PATCH] hkdf: use Perl arrays to avoid duplication of params Reviewed-by: Shane Lontis Reviewed-by: Dmitry Belyavskiy (Merged from https://github.com/openssl/openssl/pull/28997) --- providers/implementations/kdfs/hkdf.inc.in | 46 +++++++++++----------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/providers/implementations/kdfs/hkdf.inc.in b/providers/implementations/kdfs/hkdf.inc.in index 150c431c283..32e5abf0b2f 100644 --- a/providers/implementations/kdfs/hkdf.inc.in +++ b/providers/implementations/kdfs/hkdf.inc.in @@ -11,16 +11,26 @@ use OpenSSL::paramnames qw(produce_param_decoder); -} -{- produce_param_decoder('hkdf_set_ctx_params', - (['OSSL_KDF_PARAM_MODE', 'mode', 'utf8_string'], - ['OSSL_KDF_PARAM_MODE', 'mode', 'int'], - ['OSSL_KDF_PARAM_PROPERTIES', 'propq', 'utf8_string'], - ['OSSL_ALG_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], - ['OSSL_KDF_PARAM_DIGEST', 'digest', 'utf8_string'], - ['OSSL_KDF_PARAM_KEY', 'key', 'octet_string'], - ['OSSL_KDF_PARAM_SALT', 'salt', 'octet_string'], +{- our @HKDF_COMMON_SET_CTX_PARAMS = ( + ['OSSL_KDF_PARAM_MODE', 'mode', 'utf8_string'], + ['OSSL_KDF_PARAM_MODE', 'mode', 'int'], + ['OSSL_KDF_PARAM_KEY', 'key', 'octet_string'], + ['OSSL_KDF_PARAM_SALT', 'salt', 'octet_string'], + ); + our @HKDF_DIGEST_SET_CTX_PARAMS = ( + ['OSSL_KDF_PARAM_PROPERTIES', 'propq', 'utf8_string'], + ['OSSL_ALG_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], + ['OSSL_KDF_PARAM_DIGEST', 'digest', 'utf8_string'], + ); + our @HKDF_INFO_SET_CTX_PARAMS = ( + ['OSSL_KDF_PARAM_INFO', 'info', 'octet_string', HKDF_MAX_INFOS], + ); + + produce_param_decoder('hkdf_set_ctx_params', + (@HKDF_COMMON_SET_CTX_PARAMS, + @HKDF_DIGEST_SET_CTX_PARAMS, + @HKDF_INFO_SET_CTX_PARAMS, ['OSSL_KDF_PARAM_FIPS_KEY_CHECK', 'ind_k', 'int', 'fips'], - ['OSSL_KDF_PARAM_INFO', 'info', 'octet_string', HKDF_MAX_INFOS], )); -} {- produce_param_decoder('hkdf_get_ctx_params', @@ -34,23 +44,15 @@ use OpenSSL::paramnames qw(produce_param_decoder); )); -} {- produce_param_decoder('hkdf_fixed_digest_set_ctx_params', - (['OSSL_KDF_PARAM_MODE', 'mode', 'utf8_string'], - ['OSSL_KDF_PARAM_MODE', 'mode', 'int'], - ['OSSL_KDF_PARAM_DIGEST', 'digest', 'utf8_string', 'hidden'], - ['OSSL_KDF_PARAM_KEY', 'key', 'octet_string'], - ['OSSL_KDF_PARAM_SALT', 'salt', 'octet_string'], + (@HKDF_COMMON_SET_CTX_PARAMS, + @HKDF_INFO_SET_CTX_PARAMS, ['OSSL_KDF_PARAM_FIPS_KEY_CHECK', 'ind_k', 'int', 'fips'], - ['OSSL_KDF_PARAM_INFO', 'info', 'octet_string', HKDF_MAX_INFOS], + ['OSSL_KDF_PARAM_DIGEST', 'invalid param'], )); -} {- produce_param_decoder('kdf_tls1_3_set_ctx_params', - (['OSSL_KDF_PARAM_MODE', 'mode', 'utf8_string'], - ['OSSL_KDF_PARAM_MODE', 'mode', 'int'], - ['OSSL_KDF_PARAM_PROPERTIES', 'propq', 'utf8_string'], - ['OSSL_ALG_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], - ['OSSL_KDF_PARAM_DIGEST', 'digest', 'utf8_string'], - ['OSSL_KDF_PARAM_KEY', 'key', 'octet_string'], - ['OSSL_KDF_PARAM_SALT', 'salt', 'octet_string'], + (@HKDF_COMMON_SET_CTX_PARAMS, + @HKDF_DIGEST_SET_CTX_PARAMS, ['OSSL_KDF_PARAM_FIPS_KEY_CHECK', 'ind_k', 'int', 'fips'], ['OSSL_KDF_PARAM_FIPS_DIGEST_CHECK', 'ind_d', 'int', 'fips'], ['OSSL_KDF_PARAM_PREFIX', 'prefix', 'octet_string'], -- 2.47.3