]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
hkdf: use Perl arrays to avoid duplication of params
authorPauli <paul.dale@oracle.com>
Mon, 27 Oct 2025 02:26:00 +0000 (13:26 +1100)
committerPauli <paul.dale@oracle.com>
Tue, 28 Oct 2025 21:11:51 +0000 (08:11 +1100)
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/28997)

providers/implementations/kdfs/hkdf.inc.in

index 150c431c28310fed04cf44e68dd8bbeeac325fd2..32e5abf0b2fbf3493593b2a1bbbd245f923496ac 100644 (file)
 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'],