Commit 19e8a1fc88 for openssl.org
commit 19e8a1fc88f64e6b08de04f0e1a7e5fbd7e5d509
Author: Pauli <paul.dale@oracle.com>
Date: Tue Aug 25 15:09:04 2026 +1000
ec: name generated parameter groups
Assisted-by: ChatGPT:gpt-5.6Sol
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Mounir Idrassi <mounir.idrassi@idrix.fr>
(Merged from https://github.com/openssl/openssl/pull/32502)
diff --git a/include/crypto/ec_params.h.in b/include/crypto/ec_params.h.in
index b50ebf29a6..c911136030 100644
--- a/include/crypto/ec_params.h.in
+++ b/include/crypto/ec_params.h.in
@@ -7,6 +7,8 @@
* https://www.openssl.org/source/license.html
*/
+/* clang-format off */
+
{-
use OpenSSL::paramnames qw(produce_param_decoder);
-}
@@ -17,44 +19,112 @@ use OpenSSL::paramnames qw(produce_param_decoder);
#include <openssl/proverr.h>
{-
-our @EC_DOMAIN_TYPES = (
+our @EC_GROUP_NAME_TYPES = (
['OSSL_PKEY_PARAM_GROUP_NAME', 'group_name', 'utf8_string'],
+);
+
+our @EC_ENCODING_TYPES = (
['OSSL_PKEY_PARAM_EC_ENCODING', 'encoding', 'utf8_string'],
+);
+
+our @EC_POINT_FORMAT_TYPES = (
['OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT', 'pt_format', 'utf8_string'],
+);
+
+our @EC_FIELD_TYPE_TYPES = (
['OSSL_PKEY_PARAM_EC_FIELD_TYPE', 'field_type', 'utf8_string'],
+);
+
+our @EC_EXPLICIT_CURVE_TYPES = (
['OSSL_PKEY_PARAM_EC_P', 'p', 'BN'],
['OSSL_PKEY_PARAM_EC_A', 'a', 'BN'],
['OSSL_PKEY_PARAM_EC_B', 'b', 'BN'],
['OSSL_PKEY_PARAM_EC_GENERATOR', 'generator', 'octet_string'],
['OSSL_PKEY_PARAM_EC_ORDER', 'order', 'BN'],
['OSSL_PKEY_PARAM_EC_COFACTOR', 'cofactor', 'BN'],
+);
+
+our @EC_SEED_TYPES = (
['OSSL_PKEY_PARAM_EC_SEED', 'seed', 'octet_string'],
+);
+
+our @EC_DECODED_TYPES = (
['OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS', 'decoded', 'int'],
);
-our @EC_KEY_TYPES = (
- ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'],
+our @EC_DOMAIN_TYPES = (
+ @EC_GROUP_NAME_TYPES,
+ @EC_ENCODING_TYPES,
+ @EC_POINT_FORMAT_TYPES,
+ @EC_FIELD_TYPE_TYPES,
+ @EC_EXPLICIT_CURVE_TYPES,
+ @EC_SEED_TYPES,
+ @EC_DECODED_TYPES,
+);
+
+our @EC_PRIVATE_KEY_TYPES = (
['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'BN'],
);
-our @EC_OTHER_TYPES = (
+our @EC_PUBLIC_KEY_TYPES = (
+ ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'],
+);
+
+our @EC_KEY_TYPES = (
+ @EC_PUBLIC_KEY_TYPES,
+ @EC_PRIVATE_KEY_TYPES,
+);
+
+our @EC_COFACTOR_MODE_TYPES = (
['OSSL_PKEY_PARAM_USE_COFACTOR_ECDH', 'use_cofactor', 'int'],
+);
+
+our @EC_INCLUDE_PUBLIC_TYPES = (
['OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC', 'include_public', 'int'],
+);
+
+our @EC_GROUP_CHECK_TYPES = (
['OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE', 'group_check', 'utf8_string'],
);
-our @EC_INFO_TYPES = (
+our @EC_OTHER_TYPES = (
+ @EC_COFACTOR_MODE_TYPES,
+ @EC_INCLUDE_PUBLIC_TYPES,
+ @EC_GROUP_CHECK_TYPES,
+);
+
+our @EC_COMMON_INFO_TYPES = (
['OSSL_PKEY_PARAM_BITS', 'bits', 'int'],
['OSSL_PKEY_PARAM_EC_FIELD_DEGREE', 'field_degree', 'int'],
['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'],
['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'],
+);
+
+our @EC_SECURITY_CATEGORY_INFO_TYPES = (
['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'],
+);
+
+our @EC_DIGEST_INFO_TYPES = (
['OSSL_PKEY_PARAM_DEFAULT_DIGEST', 'default_digest', 'utf8_string'],
+);
+
+our @EC_ENCODED_PUBLIC_KEY_TYPES = (
['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encoded_pub', 'octet_string'],
+);
+
+our @EC_AFFINE_PUBLIC_KEY_TYPES = (
['OSSL_PKEY_PARAM_EC_PUB_X', 'pub_x', 'BN'],
['OSSL_PKEY_PARAM_EC_PUB_Y', 'pub_y', 'BN'],
);
+our @EC_INFO_TYPES = (
+ @EC_COMMON_INFO_TYPES,
+ @EC_SECURITY_CATEGORY_INFO_TYPES,
+ @EC_DIGEST_INFO_TYPES,
+ @EC_ENCODED_PUBLIC_KEY_TYPES,
+ @EC_AFFINE_PUBLIC_KEY_TYPES,
+);
+
our @EC2M_INFO_TYPES = (
['OSSL_PKEY_PARAM_EC_CHAR2_M', 'char2_m', 'int',
'#if !defined(OPENSSL_NO_EC2M)'],
@@ -71,33 +141,34 @@ our @EC2M_INFO_TYPES = (
);
our @EC_SETTABLE_TYPES = (
- ['OSSL_PKEY_PARAM_USE_COFACTOR_ECDH', 'use_cofactor', 'int'],
- ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encoded_pub', 'octet_string'],
- ['OSSL_PKEY_PARAM_EC_ENCODING', 'encoding', 'utf8_string'],
- ['OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT', 'pt_format', 'utf8_string'],
- ['OSSL_PKEY_PARAM_EC_SEED', 'seed', 'octet_string'],
- ['OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC', 'include_public', 'int'],
- ['OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE', 'group_check', 'utf8_string'],
+ @EC_COFACTOR_MODE_TYPES,
+ @EC_ENCODED_PUBLIC_KEY_TYPES,
+ @EC_ENCODING_TYPES,
+ @EC_POINT_FORMAT_TYPES,
+ @EC_SEED_TYPES,
+ @EC_INCLUDE_PUBLIC_TYPES,
+ @EC_GROUP_CHECK_TYPES,
+);
+
+our @EC_DHKEM_GEN_TYPES = (
+ ['OSSL_PKEY_PARAM_DHKEM_IKM', 'dhkem_ikm', 'octet_string', '!fips'],
+);
+
+our @EC_FIPS_GEN_TYPES = (
+ ['OSSL_PKEY_PARAM_FIPS_KEY_CHECK', 'fips_key_check', 'int', 'fips'],
);
our @EC_GEN_TYPES = (
- ['OSSL_PKEY_PARAM_GROUP_NAME', 'group_name', 'utf8_string'],
- ['OSSL_PKEY_PARAM_USE_COFACTOR_ECDH', 'use_cofactor', 'int'],
- ['OSSL_PKEY_PARAM_EC_ENCODING', 'encoding', 'utf8_string'],
- ['OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT', 'pt_format', 'utf8_string'],
- ['OSSL_PKEY_PARAM_EC_FIELD_TYPE', 'field_type', 'utf8_string'],
- ['OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE', 'group_check', 'utf8_string'],
- ['OSSL_PKEY_PARAM_EC_P', 'p', 'BN'],
- ['OSSL_PKEY_PARAM_EC_A', 'a', 'BN'],
- ['OSSL_PKEY_PARAM_EC_B', 'b', 'BN'],
- ['OSSL_PKEY_PARAM_EC_GENERATOR', 'generator', 'octet_string'],
- ['OSSL_PKEY_PARAM_EC_ORDER', 'order', 'BN'],
- ['OSSL_PKEY_PARAM_EC_COFACTOR', 'cofactor', 'BN'],
- ['OSSL_PKEY_PARAM_EC_SEED', 'seed', 'octet_string'],
- ['OSSL_PKEY_PARAM_DHKEM_IKM', 'dhkem_ikm', 'octet_string',
- '!fips'],
- ['OSSL_PKEY_PARAM_FIPS_KEY_CHECK', 'fips_key_check', 'int',
- 'fips'],
+ @EC_GROUP_NAME_TYPES,
+ @EC_COFACTOR_MODE_TYPES,
+ @EC_ENCODING_TYPES,
+ @EC_POINT_FORMAT_TYPES,
+ @EC_FIELD_TYPE_TYPES,
+ @EC_GROUP_CHECK_TYPES,
+ @EC_EXPLICIT_CURVE_TYPES,
+ @EC_SEED_TYPES,
+ @EC_DHKEM_GEN_TYPES,
+ @EC_FIPS_GEN_TYPES,
);
return "";
@@ -145,7 +216,7 @@ $imexport;
#define ec_key_otherparams_fromdata_st ec_params_st
{- produce_param_decoder('ec_key_otherparams_fromdata', @EC_OTHER_TYPES,
- $EC_DOMAIN_TYPES[2]); -}
+ @EC_POINT_FORMAT_TYPES); -}
#define ec_pkey_import_from_st ec_params_st
{- produce_param_decoder('ec_pkey_import_from',
@@ -159,9 +230,9 @@ $imexport;
#define sm2_get_params_st ec_params_st
{- produce_param_decoder('sm2_get_params',
- (@EC_INFO_TYPES[0..3], $EC_INFO_TYPES[5],
- $EC_INFO_TYPES[6], @EC_DOMAIN_TYPES,
- @EC_KEY_TYPES, @EC_INFO_TYPES[7..8])); -}
+ (@EC_COMMON_INFO_TYPES, @EC_DIGEST_INFO_TYPES,
+ @EC_ENCODED_PUBLIC_KEY_TYPES, @EC_DOMAIN_TYPES,
+ @EC_KEY_TYPES, @EC_AFFINE_PUBLIC_KEY_TYPES)); -}
#define ec_set_params_st ec_params_st
{- produce_param_decoder('ec_set_params', @EC_SETTABLE_TYPES); -}
@@ -175,10 +246,13 @@ $imexport;
#define sm2_gen_set_params_st ec_params_st
{- produce_param_decoder('sm2_gen_set_params',
- ($EC_GEN_TYPES[0], @EC_GEN_TYPES[2..4],
- @EC_GEN_TYPES[6..12])); -}
+ (@EC_GROUP_NAME_TYPES, @EC_ENCODING_TYPES,
+ @EC_POINT_FORMAT_TYPES, @EC_FIELD_TYPE_TYPES,
+ @EC_EXPLICIT_CURVE_TYPES, @EC_SEED_TYPES)); -}
#define ec_gen_get_params_st ec_params_st
{- produce_param_decoder('ec_gen_get_params',
['OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR',
'fips_indicator', 'int', 'fips']); -}
+
+/* clang-format on */