diff options
| author | Pauli <[email protected]> | 2026-08-25 07:09:04 +0200 |
|---|---|---|
| committer | Pauli <[email protected]> | 2026-09-01 08:32:06 +0200 |
| commit | 19e8a1fc88f64e6b08de04f0e1a7e5fbd7e5d509 (patch) | |
| tree | 3e0f0075d08a4fa6f0262674c54b78049635228b /include | |
| parent | providers: convert EC keymgmt parameter parsing (diff) | |
| download | openssl-19e8a1fc88f64e6b08de04f0e1a7e5fbd7e5d509.tar.gz openssl-19e8a1fc88f64e6b08de04f0e1a7e5fbd7e5d509.zip | |
ec: name generated parameter groups
Assisted-by: ChatGPT:gpt-5.6Sol
Reviewed-by: Shane Lontis <[email protected]>
Reviewed-by: Mounir Idrassi <[email protected]>
(Merged from https://github.com/openssl/openssl/pull/32502)
Diffstat (limited to 'include')
| -rw-r--r-- | include/crypto/ec_params.h.in | 144 |
1 files changed, 109 insertions, 35 deletions
diff --git a/include/crypto/ec_params.h.in b/include/crypto/ec_params.h.in index b50ebf29a69..c9111360307 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 */ |
