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 */