From: Simo Sorce Date: Thu, 16 Oct 2025 19:48:08 +0000 (-0400) Subject: keymgmt: Use include file for generated code X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bfdfde12bace76c9e11ceeec19544844e2701472;p=thirdparty%2Fopenssl.git keymgmt: Use include file for generated code Signed-off-by: Simo Sorce Reviewed-by: Matt Caswell Reviewed-by: Tomas Mraz Reviewed-by: Dmitry Belyavskiy (Merged from https://github.com/openssl/openssl/pull/28838) --- diff --git a/.gitignore b/.gitignore index f5fd9e77aa1..86ce3c69f81 100644 --- a/.gitignore +++ b/.gitignore @@ -116,21 +116,21 @@ providers/implementations/kem/ec_kem.inc providers/implementations/kem/ecx_kem.inc providers/implementations/kem/ml_kem_kem.inc providers/implementations/kem/rsa_kem.inc -providers/implementations/keymgmt/ml_dsa_kmgmt.c -providers/implementations/keymgmt/ml_kem_kmgmt.c -providers/implementations/keymgmt/mlx_kmgmt.c +providers/implementations/keymgmt/ml_dsa_kmgmt.inc +providers/implementations/keymgmt/ml_kem_kmgmt.inc +providers/implementations/keymgmt/mlx_kmgmt.inc providers/implementations/signature/dsa_sig.c providers/implementations/signature/ecdsa_sig.c -providers/implementations/keymgmt/dh_kmgmt.c -providers/implementations/keymgmt/dsa_kmgmt.c -providers/implementations/keymgmt/ecx_kmgmt.c -providers/implementations/keymgmt/lms_kmgmt.c -providers/implementations/keymgmt/mac_legacy_kmgmt.c -providers/implementations/keymgmt/ml_dsa_kmgmt.c -providers/implementations/keymgmt/ml_kem_kmgmt.c -providers/implementations/keymgmt/mlx_kmgmt.c -providers/implementations/keymgmt/slh_dsa_kmgmt.c -providers/implementations/keymgmt/template_kmgmt.c +providers/implementations/keymgmt/dh_kmgmt.inc +providers/implementations/keymgmt/dsa_kmgmt.inc +providers/implementations/keymgmt/ecx_kmgmt.inc +providers/implementations/keymgmt/lms_kmgmt.inc +providers/implementations/keymgmt/mac_legacy_kmgmt.inc +providers/implementations/keymgmt/ml_dsa_kmgmt.inc +providers/implementations/keymgmt/ml_kem_kmgmt.inc +providers/implementations/keymgmt/mlx_kmgmt.inc +providers/implementations/keymgmt/slh_dsa_kmgmt.inc +providers/implementations/keymgmt/template_kmgmt.inc providers/implementations/signature/eddsa_sig.c providers/implementations/signature/ml_dsa_sig.c providers/implementations/signature/rsa_sig.c diff --git a/build.info b/build.info index be9fb3a5298..c22fb273ecc 100644 --- a/build.info +++ b/build.info @@ -78,16 +78,16 @@ DEPEND[]=include/openssl/asn1.h \ providers/implementations/kem/ecx_kem.inc \ providers/implementations/kem/ml_kem_kem.inc \ providers/implementations/kem/rsa_kem.inc \ - providers/implementations/keymgmt/dh_kmgmt.c \ - providers/implementations/keymgmt/dsa_kmgmt.c \ - providers/implementations/keymgmt/ecx_kmgmt.c \ - providers/implementations/keymgmt/lms_kmgmt.c \ - providers/implementations/keymgmt/mac_legacy_kmgmt.c \ - providers/implementations/keymgmt/ml_dsa_kmgmt.c \ - providers/implementations/keymgmt/ml_kem_kmgmt.c \ - providers/implementations/keymgmt/mlx_kmgmt.c \ - providers/implementations/keymgmt/slh_dsa_kmgmt.c \ - providers/implementations/keymgmt/template_kmgmt.c \ + providers/implementations/keymgmt/dh_kmgmt.inc \ + providers/implementations/keymgmt/dsa_kmgmt.inc \ + providers/implementations/keymgmt/ecx_kmgmt.inc \ + providers/implementations/keymgmt/lms_kmgmt.inc \ + providers/implementations/keymgmt/mac_legacy_kmgmt.inc \ + providers/implementations/keymgmt/ml_dsa_kmgmt.inc \ + providers/implementations/keymgmt/ml_kem_kmgmt.inc \ + providers/implementations/keymgmt/mlx_kmgmt.inc \ + providers/implementations/keymgmt/slh_dsa_kmgmt.inc \ + providers/implementations/keymgmt/template_kmgmt.inc \ providers/implementations/signature/dsa_sig.c \ providers/implementations/signature/ecdsa_sig.c \ providers/implementations/signature/eddsa_sig.c \ @@ -196,16 +196,16 @@ DEPEND[providers/implementations/asymciphers/rsa_enc.inc \ providers/implementations/kem/ecx_kem.inc \ providers/implementations/kem/ml_kem_kem.inc \ providers/implementations/kem/rsa_kem.inc \ - providers/implementations/keymgmt/dh_kmgmt.c \ - providers/implementations/keymgmt/dsa_kmgmt.c \ - providers/implementations/keymgmt/ecx_kmgmt.c \ - providers/implementations/keymgmt/lms_kmgmt.c \ - providers/implementations/keymgmt/mac_legacy_kmgmt.c \ - providers/implementations/keymgmt/ml_dsa_kmgmt.c \ - providers/implementations/keymgmt/ml_kem_kmgmt.c \ - providers/implementations/keymgmt/mlx_kmgmt.c \ - providers/implementations/keymgmt/slh_dsa_kmgmt.c \ - providers/implementations/keymgmt/template_kmgmt.c \ + providers/implementations/keymgmt/dh_kmgmt.inc \ + providers/implementations/keymgmt/dsa_kmgmt.inc \ + providers/implementations/keymgmt/ecx_kmgmt.inc \ + providers/implementations/keymgmt/lms_kmgmt.inc \ + providers/implementations/keymgmt/mac_legacy_kmgmt.inc \ + providers/implementations/keymgmt/ml_dsa_kmgmt.inc \ + providers/implementations/keymgmt/ml_kem_kmgmt.inc \ + providers/implementations/keymgmt/mlx_kmgmt.inc \ + providers/implementations/keymgmt/slh_dsa_kmgmt.inc \ + providers/implementations/keymgmt/template_kmgmt.inc \ providers/implementations/signature/dsa_sig.c \ providers/implementations/signature/ecdsa_sig.c \ providers/implementations/signature/eddsa_sig.c \ @@ -311,26 +311,26 @@ GENERATE[providers/implementations/kem/ml_kem_kem.inc]=\ providers/implementations/kem/ml_kem_kem.inc.in GENERATE[providers/implementations/kem/rsa_kem.inc]=\ providers/implementations/kem/rsa_kem.inc.in -GENERATE[providers/implementations/keymgmt/dh_kmgmt.c]=\ - providers/implementations/keymgmt/dh_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/dsa_kmgmt.c]=\ - providers/implementations/keymgmt/dsa_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/ecx_kmgmt.c]=\ - providers/implementations/keymgmt/ecx_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/lms_kmgmt.c]=\ - providers/implementations/keymgmt/lms_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/mac_legacy_kmgmt.c]=\ - providers/implementations/keymgmt/mac_legacy_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/ml_dsa_kmgmt.c]=\ - providers/implementations/keymgmt/ml_dsa_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/ml_kem_kmgmt.c]=\ - providers/implementations/keymgmt/ml_kem_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/mlx_kmgmt.c]=\ - providers/implementations/keymgmt/mlx_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/slh_dsa_kmgmt.c]=\ - providers/implementations/keymgmt/slh_dsa_kmgmt.c.in -GENERATE[providers/implementations/keymgmt/template_kmgmt.c]=\ - providers/implementations/keymgmt/template_kmgmt.c.in +GENERATE[providers/implementations/keymgmt/dh_kmgmt.inc]=\ + providers/implementations/keymgmt/dh_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/dsa_kmgmt.inc]=\ + providers/implementations/keymgmt/dsa_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/ecx_kmgmt.inc]=\ + providers/implementations/keymgmt/ecx_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/lms_kmgmt.inc]=\ + providers/implementations/keymgmt/lms_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/mac_legacy_kmgmt.inc]=\ + providers/implementations/keymgmt/mac_legacy_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/ml_dsa_kmgmt.inc]=\ + providers/implementations/keymgmt/ml_dsa_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/ml_kem_kmgmt.inc]=\ + providers/implementations/keymgmt/ml_kem_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/mlx_kmgmt.inc]=\ + providers/implementations/keymgmt/mlx_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/slh_dsa_kmgmt.inc]=\ + providers/implementations/keymgmt/slh_dsa_kmgmt.inc.in +GENERATE[providers/implementations/keymgmt/template_kmgmt.inc]=\ + providers/implementations/keymgmt/template_kmgmt.inc.in GENERATE[providers/implementations/signature/dsa_sig.c]=\ providers/implementations/signature/dsa_sig.c.in GENERATE[providers/implementations/signature/ecdsa_sig.c]=\ diff --git a/providers/implementations/keymgmt/dh_kmgmt.c.in b/providers/implementations/keymgmt/dh_kmgmt.c similarity index 87% rename from providers/implementations/keymgmt/dh_kmgmt.c.in rename to providers/implementations/keymgmt/dh_kmgmt.c index 44e89999037..7a95ac0d73a 100644 --- a/providers/implementations/keymgmt/dh_kmgmt.c.in +++ b/providers/implementations/keymgmt/dh_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} /* * DH low level APIs are deprecated for public use, but still ok for @@ -333,25 +330,26 @@ struct dh_params_st { #define dh_get_params_st dh_params_st -{- produce_param_decoder('dh_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpubkey', 'octet_string'], - ['OSSL_PKEY_PARAM_FFC_P', 'ffp.p', 'BN'], - ['OSSL_PKEY_PARAM_FFC_Q', 'ffp.q', 'BN'], - ['OSSL_PKEY_PARAM_FFC_G', 'ffp.g', 'BN'], - ['OSSL_PKEY_PARAM_FFC_COFACTOR', 'ffp.cofactor', 'BN'], - ['OSSL_PKEY_PARAM_FFC_GINDEX', 'ffp.g_index', 'int'], - ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'ffp.p_counter', 'int'], - ['OSSL_PKEY_PARAM_FFC_H', 'ffp.h', 'int'], - ['OSSL_PKEY_PARAM_DH_PRIV_LEN', 'privlen', 'int'], - ['OSSL_PKEY_PARAM_FFC_SEED', 'ffp.seed', 'octet_string'], - ['OSSL_PKEY_PARAM_GROUP_NAME', 'ffp.group_name', 'utf8_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'BN'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'BN'], - )); -} +struct dh_gen_set_params_st { + OSSL_PARAM *type; + OSSL_PARAM *group_name; + OSSL_PARAM *privlen; + OSSL_PARAM *pbits; + OSSL_PARAM *qbits; /* DHX only */ + OSSL_PARAM *digest; /* DHX only */ + OSSL_PARAM *propq; /* DHX only */ + OSSL_PARAM *g_index; /* DHX only */ + OSSL_PARAM *seed; /* DHX only */ + OSSL_PARAM *p_counter; /* DHX only */ + OSSL_PARAM *h; /* DHX only */ + OSSL_PARAM *generator; /* DH only */ +}; + +#define dhx_gen_set_params_st dh_gen_set_params_st + +#define dh_gen_set_params_st dh_gen_set_params_st + +#include "providers/implementations/keymgmt/dh_kmgmt.inc" static int dh_get_params(void *key, OSSL_PARAM params[]) { @@ -392,10 +390,6 @@ static const OSSL_PARAM *dh_gettable_params(void *provctx) return dh_get_params_list; } -{- produce_param_decoder('dh_set_params', - (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpubkey', 'octet_string'], - )); -} - static const OSSL_PARAM *dh_settable_params(void *provctx) { return dh_set_params_list; @@ -562,55 +556,6 @@ static int dh_set_gen_seed(struct dh_gen_ctx *gctx, unsigned char *seed, return 1; } -struct dh_gen_set_params_st { - OSSL_PARAM *type; - OSSL_PARAM *group_name; - OSSL_PARAM *privlen; - OSSL_PARAM *pbits; - OSSL_PARAM *qbits; /* DHX only */ - OSSL_PARAM *digest; /* DHX only */ - OSSL_PARAM *propq; /* DHX only */ - OSSL_PARAM *g_index; /* DHX only */ - OSSL_PARAM *seed; /* DHX only */ - OSSL_PARAM *p_counter; /* DHX only */ - OSSL_PARAM *h; /* DHX only */ - OSSL_PARAM *generator; /* DH only */ -}; - -#define dhx_gen_set_params_st dh_gen_set_params_st - -{- produce_param_decoder('dhx_gen_set_params', - (['OSSL_PKEY_PARAM_FFC_TYPE', 'type', 'utf8_string'], - ['OSSL_PKEY_PARAM_GROUP_NAME', 'group_name', 'utf8_string'], - ['OSSL_PKEY_PARAM_DH_PRIV_LEN', 'privlen', 'int'], - ['OSSL_PKEY_PARAM_FFC_PBITS', 'pbits', 'size_t'], - ['OSSL_PKEY_PARAM_FFC_QBITS', 'qbits', 'size_t'], - ['OSSL_PKEY_PARAM_FFC_DIGEST', 'digest', 'utf8_string'], - ['OSSL_PKEY_PARAM_FFC_DIGEST_PROPS', 'propq', 'utf8_string'], - ['OSSL_PKEY_PARAM_FFC_GINDEX', 'g_index', 'int'], - ['OSSL_PKEY_PARAM_FFC_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'p_counter', 'int'], - ['OSSL_PKEY_PARAM_FFC_H', 'h', 'int'], - ['OSSL_PKEY_PARAM_DH_GENERATOR', 'invalid param'], - )); -} - -#define dh_gen_set_params_st dh_gen_set_params_st - -{- produce_param_decoder('dh_gen_set_params', - (['OSSL_PKEY_PARAM_FFC_TYPE', 'type', 'utf8_string'], - ['OSSL_PKEY_PARAM_GROUP_NAME', 'group_name', 'utf8_string'], - ['OSSL_PKEY_PARAM_DH_PRIV_LEN', 'privlen', 'int'], - ['OSSL_PKEY_PARAM_FFC_PBITS', 'pbits', 'size_t'], - ['OSSL_PKEY_PARAM_DH_GENERATOR', 'generator', 'int'], - ['OSSL_PKEY_PARAM_FFC_GINDEX', 'invalid param'], - ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'invalid param'], - ['OSSL_PKEY_PARAM_FFC_H', 'invalid param'], - ['OSSL_PKEY_PARAM_FFC_SEED', 'invalid param'], - ['OSSL_PKEY_PARAM_FFC_QBITS', 'invalid param'], - ['OSSL_PKEY_PARAM_FFC_DIGEST', 'invalid param'], - ['OSSL_PKEY_PARAM_FFC_DIGEST_PROPS', 'invalid param'], - )); -} - static int dh_gen_common_set_params(struct dh_gen_ctx *gctx, const struct dhx_gen_set_params_st *p) { diff --git a/providers/implementations/keymgmt/dh_kmgmt.inc.in b/providers/implementations/keymgmt/dh_kmgmt.inc.in new file mode 100644 index 00000000000..c9e4c9f2ec8 --- /dev/null +++ b/providers/implementations/keymgmt/dh_kmgmt.inc.in @@ -0,0 +1,66 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('dh_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpubkey', 'octet_string'], + ['OSSL_PKEY_PARAM_FFC_P', 'ffp.p', 'BN'], + ['OSSL_PKEY_PARAM_FFC_Q', 'ffp.q', 'BN'], + ['OSSL_PKEY_PARAM_FFC_G', 'ffp.g', 'BN'], + ['OSSL_PKEY_PARAM_FFC_COFACTOR', 'ffp.cofactor', 'BN'], + ['OSSL_PKEY_PARAM_FFC_GINDEX', 'ffp.g_index', 'int'], + ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'ffp.p_counter', 'int'], + ['OSSL_PKEY_PARAM_FFC_H', 'ffp.h', 'int'], + ['OSSL_PKEY_PARAM_DH_PRIV_LEN', 'privlen', 'int'], + ['OSSL_PKEY_PARAM_FFC_SEED', 'ffp.seed', 'octet_string'], + ['OSSL_PKEY_PARAM_GROUP_NAME', 'ffp.group_name', 'utf8_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'BN'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'BN'], + )); -} + +{- produce_param_decoder('dh_set_params', + (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpubkey', 'octet_string'], + )); -} + +{- produce_param_decoder('dhx_gen_set_params', + (['OSSL_PKEY_PARAM_FFC_TYPE', 'type', 'utf8_string'], + ['OSSL_PKEY_PARAM_GROUP_NAME', 'group_name', 'utf8_string'], + ['OSSL_PKEY_PARAM_DH_PRIV_LEN', 'privlen', 'int'], + ['OSSL_PKEY_PARAM_FFC_PBITS', 'pbits', 'size_t'], + ['OSSL_PKEY_PARAM_FFC_QBITS', 'qbits', 'size_t'], + ['OSSL_PKEY_PARAM_FFC_DIGEST', 'digest', 'utf8_string'], + ['OSSL_PKEY_PARAM_FFC_DIGEST_PROPS', 'propq', 'utf8_string'], + ['OSSL_PKEY_PARAM_FFC_GINDEX', 'g_index', 'int'], + ['OSSL_PKEY_PARAM_FFC_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'p_counter', 'int'], + ['OSSL_PKEY_PARAM_FFC_H', 'h', 'int'], + ['OSSL_PKEY_PARAM_DH_GENERATOR', 'invalid param'], + )); -} + +{- produce_param_decoder('dh_gen_set_params', + (['OSSL_PKEY_PARAM_FFC_TYPE', 'type', 'utf8_string'], + ['OSSL_PKEY_PARAM_GROUP_NAME', 'group_name', 'utf8_string'], + ['OSSL_PKEY_PARAM_DH_PRIV_LEN', 'privlen', 'int'], + ['OSSL_PKEY_PARAM_FFC_PBITS', 'pbits', 'size_t'], + ['OSSL_PKEY_PARAM_DH_GENERATOR', 'generator', 'int'], + ['OSSL_PKEY_PARAM_FFC_GINDEX', 'invalid param'], + ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'invalid param'], + ['OSSL_PKEY_PARAM_FFC_H', 'invalid param'], + ['OSSL_PKEY_PARAM_FFC_SEED', 'invalid param'], + ['OSSL_PKEY_PARAM_FFC_QBITS', 'invalid param'], + ['OSSL_PKEY_PARAM_FFC_DIGEST', 'invalid param'], + ['OSSL_PKEY_PARAM_FFC_DIGEST_PROPS', 'invalid param'], + )); -} diff --git a/providers/implementations/keymgmt/dsa_kmgmt.c.in b/providers/implementations/keymgmt/dsa_kmgmt.c similarity index 89% rename from providers/implementations/keymgmt/dsa_kmgmt.c.in rename to providers/implementations/keymgmt/dsa_kmgmt.c index d329b6ab89b..5b3358e0dde 100644 --- a/providers/implementations/keymgmt/dsa_kmgmt.c.in +++ b/providers/implementations/keymgmt/dsa_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} /* * DSA low level APIs are deprecated for public use, but still ok for @@ -329,23 +326,7 @@ struct dsa_params_st { #define dsa_get_params_st dsa_params_st -{- produce_param_decoder('dsa_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_DEFAULT_DIGEST', 'digest', 'utf8_string'], - ['OSSL_PKEY_PARAM_FFC_P', 'ffp.p', 'BN'], - ['OSSL_PKEY_PARAM_FFC_Q', 'ffp.q', 'BN'], - ['OSSL_PKEY_PARAM_FFC_G', 'ffp.g', 'BN'], - ['OSSL_PKEY_PARAM_FFC_COFACTOR', 'ffp.cofactor', 'BN'], - ['OSSL_PKEY_PARAM_FFC_GINDEX', 'ffp.g_index', 'int'], - ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'ffp.p_counter', 'int'], - ['OSSL_PKEY_PARAM_FFC_H', 'ffp.h', 'int'], - ['OSSL_PKEY_PARAM_FFC_SEED', 'ffp.seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'BN'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'BN'], - )); -} +#include "providers/implementations/keymgmt/dsa_kmgmt.inc" static ossl_inline int dsa_get_params(void *key, OSSL_PARAM params[]) { @@ -492,19 +473,6 @@ static int dsa_set_gen_seed(struct dsa_gen_ctx *gctx, unsigned char *seed, return 1; } -{- produce_param_decoder('dsa_gen_set_params', - (['OSSL_PKEY_PARAM_FFC_TYPE', 'type', 'utf8_string'], - ['OSSL_PKEY_PARAM_FFC_PBITS', 'pbits', 'size_t'], - ['OSSL_PKEY_PARAM_FFC_QBITS', 'qbits', 'size_t'], - ['OSSL_PKEY_PARAM_FFC_DIGEST', 'digest', 'utf8_string'], - ['OSSL_PKEY_PARAM_FFC_DIGEST_PROPS', 'propq', 'utf8_string'], - ['OSSL_PKEY_PARAM_FFC_GINDEX', 'g_index', 'int'], - ['OSSL_PKEY_PARAM_FFC_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'p_counter', 'int'], - ['OSSL_PKEY_PARAM_FFC_H', 'h', 'int'], - ['OSSL_PKEY_PARAM_FIPS_SIGN_CHECK', 'ind_sign', 'int', 'fips'], - )); -} - static int dsa_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct dsa_gen_ctx *gctx = genctx; @@ -580,10 +548,6 @@ static const OSSL_PARAM *dsa_gen_settable_params(ossl_unused void *genctx, return dsa_gen_set_params_list; } -{- produce_param_decoder('dsa_gen_get_params', - (['OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR', 'ind', 'int', 'fips'], - )); -} - static int dsa_gen_get_params(void *genctx, OSSL_PARAM *params) { struct dsa_gen_ctx *gctx = genctx; diff --git a/providers/implementations/keymgmt/dsa_kmgmt.inc.in b/providers/implementations/keymgmt/dsa_kmgmt.inc.in new file mode 100644 index 00000000000..ed0d8a0809e --- /dev/null +++ b/providers/implementations/keymgmt/dsa_kmgmt.inc.in @@ -0,0 +1,47 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('dsa_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_DEFAULT_DIGEST', 'digest', 'utf8_string'], + ['OSSL_PKEY_PARAM_FFC_P', 'ffp.p', 'BN'], + ['OSSL_PKEY_PARAM_FFC_Q', 'ffp.q', 'BN'], + ['OSSL_PKEY_PARAM_FFC_G', 'ffp.g', 'BN'], + ['OSSL_PKEY_PARAM_FFC_COFACTOR', 'ffp.cofactor', 'BN'], + ['OSSL_PKEY_PARAM_FFC_GINDEX', 'ffp.g_index', 'int'], + ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'ffp.p_counter', 'int'], + ['OSSL_PKEY_PARAM_FFC_H', 'ffp.h', 'int'], + ['OSSL_PKEY_PARAM_FFC_SEED', 'ffp.seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'BN'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'BN'], + )); -} + +{- produce_param_decoder('dsa_gen_set_params', + (['OSSL_PKEY_PARAM_FFC_TYPE', 'type', 'utf8_string'], + ['OSSL_PKEY_PARAM_FFC_PBITS', 'pbits', 'size_t'], + ['OSSL_PKEY_PARAM_FFC_QBITS', 'qbits', 'size_t'], + ['OSSL_PKEY_PARAM_FFC_DIGEST', 'digest', 'utf8_string'], + ['OSSL_PKEY_PARAM_FFC_DIGEST_PROPS', 'propq', 'utf8_string'], + ['OSSL_PKEY_PARAM_FFC_GINDEX', 'g_index', 'int'], + ['OSSL_PKEY_PARAM_FFC_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_FFC_PCOUNTER', 'p_counter', 'int'], + ['OSSL_PKEY_PARAM_FFC_H', 'h', 'int'], + ['OSSL_PKEY_PARAM_FIPS_SIGN_CHECK', 'ind_sign', 'int', 'fips'], + )); -} + +{- produce_param_decoder('dsa_gen_get_params', + (['OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR', 'ind', 'int', 'fips'], + )); -} diff --git a/providers/implementations/keymgmt/ecx_kmgmt.c.in b/providers/implementations/keymgmt/ecx_kmgmt.c similarity index 93% rename from providers/implementations/keymgmt/ecx_kmgmt.c.in rename to providers/implementations/keymgmt/ecx_kmgmt.c index cd1a8fa354d..c9e4ceca509 100644 --- a/providers/implementations/keymgmt/ecx_kmgmt.c.in +++ b/providers/implementations/keymgmt/ecx_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -206,10 +203,22 @@ static int ecx_match(const void *keydata1, const void *keydata2, int selection) return ok; } -{- produce_param_decoder('ecx_imexport_types', - (['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], - )); -} +struct ecx_ed_common_get_params_st { + OSSL_PARAM *bits; + OSSL_PARAM *secbits; + OSSL_PARAM *size; + OSSL_PARAM *seccat; + OSSL_PARAM *pub; + OSSL_PARAM *priv; + OSSL_PARAM *encpub; /* ECX only */ + OSSL_PARAM *ind; /* ECX only */ + OSSL_PARAM *digest; /* Ed only */ +}; + +#define ecx_get_params_st ecx_ed_common_get_params_st +#define ed_get_params_st ecx_ed_common_get_params_st + +#include "providers/implementations/keymgmt/ecx_kmgmt.inc" static int ecx_import(void *keydata, int selection, const OSSL_PARAM params[]) { @@ -296,43 +305,6 @@ static const OSSL_PARAM *ecx_imexport_types(int selection) return NULL; } -struct ecx_ed_common_get_params_st { - OSSL_PARAM *bits; - OSSL_PARAM *secbits; - OSSL_PARAM *size; - OSSL_PARAM *seccat; - OSSL_PARAM *pub; - OSSL_PARAM *priv; - OSSL_PARAM *encpub; /* ECX only */ - OSSL_PARAM *ind; /* ECX only */ - OSSL_PARAM *digest; /* Ed only */ -}; - -#define ecx_get_params_st ecx_ed_common_get_params_st - -{- produce_param_decoder('ecx_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'size', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], - ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpub', 'octet_string'], - ['OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR', 'ind', 'int', 'fips'], - )); -} - -#define ed_get_params_st ecx_ed_common_get_params_st - -{- produce_param_decoder('ed_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'size', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], - ['OSSL_PKEY_PARAM_MANDATORY_DIGEST', 'digest', 'utf8_string'], - )); -} - /* This getter is shared by ED25519, ED448, X25519 and X448 */ static int ecx_ed_common_get_params(void *key, const struct ecx_ed_common_get_params_st *p, @@ -445,11 +417,6 @@ static int set_property_query(ECX_KEY *ecxkey, const char *propq) return 1; } -{- produce_param_decoder('ecx_set_params', - (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static int ecx_set_params(void *key, const OSSL_PARAM params[]) { ECX_KEY *ecxkey = key; @@ -579,12 +546,6 @@ static void *ed448_gen_init(void *provctx, int selection, return ecx_gen_init(provctx, selection, params, ECX_KEY_TYPE_ED448, NULL); } -{- produce_param_decoder('ecx_gen_set_params', - (['OSSL_PKEY_PARAM_GROUP_NAME', 'group', 'utf8_string'], - ['OSSL_KDF_PARAM_PROPERTIES', 'kdfpropq', 'utf8_string'], - ['OSSL_PKEY_PARAM_DHKEM_IKM', 'ikm', 'octet_string'], - )); -} - static int ecx_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct ecx_gen_ctx *gctx = genctx; diff --git a/providers/implementations/keymgmt/ecx_kmgmt.inc.in b/providers/implementations/keymgmt/ecx_kmgmt.inc.in new file mode 100644 index 00000000000..ac275442ed3 --- /dev/null +++ b/providers/implementations/keymgmt/ecx_kmgmt.inc.in @@ -0,0 +1,49 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('ecx_imexport_types', + (['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], + )); -} + +{- produce_param_decoder('ecx_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'size', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], + ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpub', 'octet_string'], + ['OSSL_PKEY_PARAM_FIPS_APPROVED_INDICATOR', 'ind', 'int', 'fips'], + )); -} + +{- produce_param_decoder('ed_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'size', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], + ['OSSL_PKEY_PARAM_MANDATORY_DIGEST', 'digest', 'utf8_string'], + )); -} + +{- produce_param_decoder('ecx_set_params', + (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} + +{- produce_param_decoder('ecx_gen_set_params', + (['OSSL_PKEY_PARAM_GROUP_NAME', 'group', 'utf8_string'], + ['OSSL_KDF_PARAM_PROPERTIES', 'kdfpropq', 'utf8_string'], + ['OSSL_PKEY_PARAM_DHKEM_IKM', 'ikm', 'octet_string'], + )); -} diff --git a/providers/implementations/keymgmt/lms_kmgmt.c.in b/providers/implementations/keymgmt/lms_kmgmt.c similarity index 95% rename from providers/implementations/keymgmt/lms_kmgmt.c.in rename to providers/implementations/keymgmt/lms_kmgmt.c index 8b6a941444d..867b56b5733 100644 --- a/providers/implementations/keymgmt/lms_kmgmt.c.in +++ b/providers/implementations/keymgmt/lms_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -19,6 +16,7 @@ use OpenSSL::paramnames qw(produce_param_decoder); #include "prov/implementations.h" #include "prov/providercommon.h" #include "prov/provider_ctx.h" +#include "providers/implementations/keymgmt/lms_kmgmt.inc" static OSSL_FUNC_keymgmt_new_fn lms_new_key; static OSSL_FUNC_keymgmt_free_fn lms_free_key; @@ -67,10 +65,6 @@ static int lms_match(const void *keydata1, const void *keydata2, int selection) return ossl_lms_key_equal(key1, key2, selection); } -{- produce_param_decoder('lms_import', - (['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], - )); -} - static int lms_import(void *keydata, int selection, const OSSL_PARAM params[]) { LMS_KEY *key = keydata; diff --git a/providers/implementations/keymgmt/lms_kmgmt.inc.in b/providers/implementations/keymgmt/lms_kmgmt.inc.in new file mode 100644 index 00000000000..59e1ed9f53c --- /dev/null +++ b/providers/implementations/keymgmt/lms_kmgmt.inc.in @@ -0,0 +1,16 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('lms_import', + (['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], + )); -} diff --git a/providers/implementations/keymgmt/mac_legacy_kmgmt.c.in b/providers/implementations/keymgmt/mac_legacy_kmgmt.c similarity index 90% rename from providers/implementations/keymgmt/mac_legacy_kmgmt.c.in rename to providers/implementations/keymgmt/mac_legacy_kmgmt.c index 2eefe6bc9a3..85da34dad6e 100644 --- a/providers/implementations/keymgmt/mac_legacy_kmgmt.c.in +++ b/providers/implementations/keymgmt/mac_legacy_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} /* We need to use some engine deprecated APIs */ #define OPENSSL_SUPPRESS_DEPRECATED @@ -192,6 +189,16 @@ struct mac_common_params_st { OSSL_PARAM *engine; }; +#define mac_import_st mac_common_params_st +#define cmac_import_st mac_common_params_st +#define mac_get_params_st mac_common_params_st +#define cmac_get_params_st mac_common_params_st +#define mac_set_params_st mac_common_params_st +#define mac_gen_set_params_st mac_common_params_st +#define cmac_gen_set_params_st mac_common_params_st + +#include "providers/implementations/keymgmt/mac_legacy_kmgmt.inc" + static int mac_key_fromdata(MAC_KEY *key, const struct mac_common_params_st *p) { if (p->key != NULL) { @@ -232,13 +239,6 @@ static int mac_key_fromdata(MAC_KEY *key, const struct mac_common_params_st *p) return 0; } -#define mac_import_st mac_common_params_st - -{- produce_param_decoder('mac_import', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static int mac_import(void *keydata, int selection, const OSSL_PARAM params[]) { MAC_KEY *key = keydata; @@ -260,15 +260,6 @@ static const OSSL_PARAM *mac_imexport_types(int selection) return NULL; } -#define cmac_import_st mac_common_params_st - -{- produce_param_decoder('cmac_import', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - ['OSSL_PKEY_PARAM_CIPHER', 'cipher', 'utf8_string'], - ['OSSL_PKEY_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static int cmac_import(void *keydata, int selection, const OSSL_PARAM params[]) { MAC_KEY *key = keydata; @@ -353,12 +344,6 @@ err: return ret; } -#define mac_get_params_st mac_common_params_st - -{- produce_param_decoder('mac_get_params', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - )); -} - static int mac_get_params(void *keydata, OSSL_PARAM params[]) { struct mac_common_params_st p; @@ -375,14 +360,6 @@ static const OSSL_PARAM *mac_gettable_params(void *provctx) return mac_get_params_list; } -#define cmac_get_params_st mac_common_params_st - -{- produce_param_decoder('cmac_get_params', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - ['OSSL_PKEY_PARAM_CIPHER', 'cipher', 'utf8_string'], - ['OSSL_PKEY_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], - )); -} - static int cmac_get_params(void *keydata, OSSL_PARAM params[]) { struct mac_common_params_st p; @@ -394,18 +371,11 @@ static int cmac_get_params(void *keydata, OSSL_PARAM params[]) return key_to_params(key, NULL, &p); } - static const OSSL_PARAM *cmac_gettable_params(void *provctx) { return cmac_get_params_list; } -#define mac_set_params_st mac_common_params_st - -{- produce_param_decoder('mac_set_params', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - )); -} - static int mac_set_params(void *keydata, const OSSL_PARAM params[]) { MAC_KEY *key = keydata; @@ -482,12 +452,6 @@ static int mac_gen_set_params_common(struct mac_gen_ctx *gctx, return 1; } -#define mac_gen_set_params_st mac_common_params_st - -{- produce_param_decoder('mac_gen_set_params', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - )); -} - static int mac_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct mac_gen_ctx *gctx = genctx; @@ -499,15 +463,6 @@ static int mac_gen_set_params(void *genctx, const OSSL_PARAM params[]) return mac_gen_set_params_common(gctx, &p); } -#define cmac_gen_set_params_st mac_common_params_st - -{- produce_param_decoder('cmac_gen_set_params', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], - ['OSSL_PKEY_PARAM_CIPHER', 'cipher', 'utf8_string'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - ['OSSL_PKEY_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], - )); -} - static int cmac_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct mac_gen_ctx *gctx = genctx; @@ -638,4 +593,3 @@ const OSSL_DISPATCH ossl_cmac_legacy_keymgmt_functions[] = { { OSSL_FUNC_KEYMGMT_GEN_CLEANUP, (void (*)(void))mac_gen_cleanup }, OSSL_DISPATCH_END }; - diff --git a/providers/implementations/keymgmt/mac_legacy_kmgmt.inc.in b/providers/implementations/keymgmt/mac_legacy_kmgmt.inc.in new file mode 100644 index 00000000000..3d9028710e7 --- /dev/null +++ b/providers/implementations/keymgmt/mac_legacy_kmgmt.inc.in @@ -0,0 +1,49 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('mac_import', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} + +{- produce_param_decoder('cmac_import', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + ['OSSL_PKEY_PARAM_CIPHER', 'cipher', 'utf8_string'], + ['OSSL_PKEY_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} + +{- produce_param_decoder('mac_get_params', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + )); -} + +{- produce_param_decoder('cmac_get_params', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + ['OSSL_PKEY_PARAM_CIPHER', 'cipher', 'utf8_string'], + ['OSSL_PKEY_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], + )); -} + +{- produce_param_decoder('mac_set_params', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + )); -} + +{- produce_param_decoder('mac_gen_set_params', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + )); -} + +{- produce_param_decoder('cmac_gen_set_params', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'key', 'octet_string'], + ['OSSL_PKEY_PARAM_CIPHER', 'cipher', 'utf8_string'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + ['OSSL_PKEY_PARAM_ENGINE', 'engine', 'utf8_string', 'hidden'], + )); -} diff --git a/providers/implementations/keymgmt/ml_dsa_kmgmt.c.in b/providers/implementations/keymgmt/ml_dsa_kmgmt.c similarity index 93% rename from providers/implementations/keymgmt/ml_dsa_kmgmt.c.in rename to providers/implementations/keymgmt/ml_dsa_kmgmt.c index 9a550133cbc..aa76053d766 100644 --- a/providers/implementations/keymgmt/ml_dsa_kmgmt.c.in +++ b/providers/implementations/keymgmt/ml_dsa_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -23,6 +20,7 @@ use OpenSSL::paramnames qw(produce_param_decoder); #include "prov/providercommon.h" #include "prov/provider_ctx.h" #include "prov/ml_dsa.h" +#include "providers/implementations/keymgmt/ml_dsa_kmgmt.inc" static OSSL_FUNC_keymgmt_free_fn ml_dsa_free_key; static OSSL_FUNC_keymgmt_has_fn ml_dsa_has; @@ -182,12 +180,6 @@ static int ml_dsa_validate(const void *key_data, int selection, int check_type) return 1; } -{- produce_param_decoder('ml_dsa_key_type_params', - (['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], - )); -} - /** * @brief Load a ML_DSA key from raw data. * @@ -310,17 +302,6 @@ static const OSSL_PARAM *ml_dsa_imexport_types(int selection) return ml_dsa_key_type_params_list; } -{- produce_param_decoder('ml_dsa_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_MANDATORY_DIGEST', 'dgstp', 'utf8_string'], - ['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], - )); -} - static const OSSL_PARAM *ml_dsa_gettable_params(void *provctx) { return ml_dsa_get_params_list; @@ -352,7 +333,6 @@ static int ml_dsa_get_params(void *keydata, OSSL_PARAM params[]) && !OSSL_PARAM_set_int(p.seccat, ossl_ml_dsa_key_get_security_category(key))) return 0; - if (p.seed != NULL) { d = ossl_ml_dsa_key_get_seed(key); if (d != NULL && !OSSL_PARAM_set_octet_string(p.seed, d, @@ -519,11 +499,6 @@ static void *ml_dsa_gen(void *genctx, int evp_type) return NULL; } -{- produce_param_decoder('ml_dsa_gen_set_params', - (['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static int ml_dsa_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct ml_dsa_gen_ctx *gctx = genctx; diff --git a/providers/implementations/keymgmt/ml_dsa_kmgmt.inc.in b/providers/implementations/keymgmt/ml_dsa_kmgmt.inc.in new file mode 100644 index 00000000000..e23d4cdc9ef --- /dev/null +++ b/providers/implementations/keymgmt/ml_dsa_kmgmt.inc.in @@ -0,0 +1,34 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('ml_dsa_key_type_params', + (['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], + )); -} + +{- produce_param_decoder('ml_dsa_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_MANDATORY_DIGEST', 'dgstp', 'utf8_string'], + ['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], + )); -} + +{- produce_param_decoder('ml_dsa_gen_set_params', + (['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} diff --git a/providers/implementations/keymgmt/ml_kem_kmgmt.c.in b/providers/implementations/keymgmt/ml_kem_kmgmt.c similarity index 94% rename from providers/implementations/keymgmt/ml_kem_kmgmt.c.in rename to providers/implementations/keymgmt/ml_kem_kmgmt.c index e92241a8458..c63c9d1fa75 100644 --- a/providers/implementations/keymgmt/ml_kem_kmgmt.c.in +++ b/providers/implementations/keymgmt/ml_kem_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -31,6 +28,7 @@ use OpenSSL::paramnames qw(produce_param_decoder); #include "prov/provider_ctx.h" #include "prov/securitycheck.h" #include "prov/ml_kem.h" +#include "providers/implementations/keymgmt/ml_kem_kmgmt.inc" static OSSL_FUNC_keymgmt_new_fn ml_kem_512_new; static OSSL_FUNC_keymgmt_new_fn ml_kem_768_new; @@ -332,12 +330,6 @@ err: return ret; } -{- produce_param_decoder('ml_kem_key_type_params', - (['OSSL_PKEY_PARAM_ML_KEM_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], - )); -} - static const OSSL_PARAM *ml_kem_imexport_types(int selection) { if ((selection & OSSL_KEYMGMT_SELECT_KEYPAIR) != 0) @@ -490,19 +482,6 @@ static int ml_kem_import(void *vkey, int selection, const OSSL_PARAM params[]) return res; } -{- produce_param_decoder('ml_kem_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_ML_KEM_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], - ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpubkey', 'octet_string'], - ['OSSL_PKEY_PARAM_CMS_RI_TYPE', 'ri_type', 'int'], - ['OSSL_PKEY_PARAM_CMS_KEMRI_KDF_ALGORITHM', 'kemri_kdf_alg', 'octet_string'], - )); -} - static const OSSL_PARAM *ml_kem_gettable_params(void *provctx) { return ml_kem_get_params_list; @@ -657,10 +636,6 @@ static int ml_kem_get_params(void *vkey, OSSL_PARAM params[]) return 1; } -{- produce_param_decoder('ml_kem_set_params', - (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], - )); -} - static const OSSL_PARAM *ml_kem_settable_params(void *provctx) { return ml_kem_set_params_list; @@ -698,11 +673,6 @@ static int ml_kem_set_params(void *vkey, const OSSL_PARAM params[]) return ossl_ml_kem_parse_public_key(pubenc, publen, key); } -{- produce_param_decoder('ml_kem_gen_set_params', - (['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static int ml_kem_gen_set_params(void *vgctx, const OSSL_PARAM params[]) { PROV_ML_KEM_GEN_CTX *gctx = vgctx; diff --git a/providers/implementations/keymgmt/ml_kem_kmgmt.inc.in b/providers/implementations/keymgmt/ml_kem_kmgmt.inc.in new file mode 100644 index 00000000000..ddb0c7c726d --- /dev/null +++ b/providers/implementations/keymgmt/ml_kem_kmgmt.inc.in @@ -0,0 +1,40 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('ml_kem_key_type_params', + (['OSSL_PKEY_PARAM_ML_KEM_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], + )); -} + +{- produce_param_decoder('ml_kem_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_ML_KEM_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], + ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpubkey', 'octet_string'], + ['OSSL_PKEY_PARAM_CMS_RI_TYPE', 'ri_type', 'int'], + ['OSSL_PKEY_PARAM_CMS_KEMRI_KDF_ALGORITHM', 'kemri_kdf_alg', 'octet_string'], + )); -} + +{- produce_param_decoder('ml_kem_set_params', + (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], + )); -} + +{- produce_param_decoder('ml_kem_gen_set_params', + (['OSSL_PKEY_PARAM_ML_DSA_SEED', 'seed', 'octet_string'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} diff --git a/providers/implementations/keymgmt/mlx_kmgmt.c.in b/providers/implementations/keymgmt/mlx_kmgmt.c similarity index 95% rename from providers/implementations/keymgmt/mlx_kmgmt.c.in rename to providers/implementations/keymgmt/mlx_kmgmt.c index b52bd343df8..3b557d537dc 100644 --- a/providers/implementations/keymgmt/mlx_kmgmt.c.in +++ b/providers/implementations/keymgmt/mlx_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -25,6 +22,7 @@ use OpenSSL::paramnames qw(produce_param_decoder); #include "prov/provider_ctx.h" #include "prov/providercommon.h" #include "prov/securitycheck.h" +#include "providers/implementations/keymgmt/mlx_kmgmt.inc" static OSSL_FUNC_keymgmt_gen_fn mlx_kem_gen; static OSSL_FUNC_keymgmt_gen_cleanup_fn mlx_kem_gen_cleanup; @@ -100,7 +98,6 @@ mlx_kem_key_new(unsigned int v, OSSL_LIB_CTX *libctx, char *propq) return NULL; } - static int mlx_kem_has(const void *vkey, int selection) { const MLX_KEY *key = vkey; @@ -147,11 +144,6 @@ static int mlx_kem_match(const void *vkey1, const void *vkey2, int selection) && EVP_PKEY_eq(key1->xkey, key2->xkey); } -{- produce_param_decoder('ml_kem_import_export', - (['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], - )); -} - typedef struct export_cb_arg_st { const char *algorithm_name; uint8_t *pubenc; @@ -475,15 +467,6 @@ static int mlx_kem_import(void *vkey, int selection, const OSSL_PARAM params[]) return mlx_kem_key_fromdata(key, params, include_private); } -{- produce_param_decoder('mlx_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], - )); -} - static const OSSL_PARAM *mlx_kem_gettable_params(void *provctx) { return mlx_get_params_list; @@ -584,11 +567,6 @@ static int mlx_kem_get_params(void *vkey, OSSL_PARAM params[]) return 1; } -{- produce_param_decoder('mlx_set_params', - (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static const OSSL_PARAM *mlx_kem_settable_params(void *provctx) { return mlx_set_params_list; @@ -633,10 +611,6 @@ static int mlx_kem_set_params(void *vkey, const OSSL_PARAM params[]) return load_keys(key, pubenc, publen, NULL, 0); } -{- produce_param_decoder('mlx_gen_set_params', - (['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - )); -} - static int mlx_kem_gen_set_params(void *vgctx, const OSSL_PARAM params[]) { PROV_ML_KEM_GEN_CTX *gctx = vgctx; diff --git a/providers/implementations/keymgmt/mlx_kmgmt.inc.in b/providers/implementations/keymgmt/mlx_kmgmt.inc.in new file mode 100644 index 00000000000..e810441458f --- /dev/null +++ b/providers/implementations/keymgmt/mlx_kmgmt.inc.in @@ -0,0 +1,35 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('ml_kem_import_export', + (['OSSL_PKEY_PARAM_PRIV_KEY', 'privkey', 'octet_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pubkey', 'octet_string'], + )); -} + +{- produce_param_decoder('mlx_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], + )); -} + +{- produce_param_decoder('mlx_set_params', + (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} + +{- produce_param_decoder('mlx_gen_set_params', + (['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + )); -} diff --git a/providers/implementations/keymgmt/slh_dsa_kmgmt.c.in b/providers/implementations/keymgmt/slh_dsa_kmgmt.c similarity index 92% rename from providers/implementations/keymgmt/slh_dsa_kmgmt.c.in rename to providers/implementations/keymgmt/slh_dsa_kmgmt.c index 129a11f92e9..0bec4642b0a 100644 --- a/providers/implementations/keymgmt/slh_dsa_kmgmt.c.in +++ b/providers/implementations/keymgmt/slh_dsa_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -22,6 +19,7 @@ use OpenSSL::paramnames qw(produce_param_decoder); #include "prov/implementations.h" #include "prov/providercommon.h" #include "prov/provider_ctx.h" +#include "providers/implementations/keymgmt/slh_dsa_kmgmt.inc" #ifdef FIPS_MODULE static int slh_dsa_fips140_pairwise_test(const SLH_DSA_KEY *key, @@ -111,11 +109,6 @@ static int slh_dsa_validate(const void *key_data, int selection, int check_type) return 1; } -{- produce_param_decoder('slh_dsa_import', - (['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], - )); -} - static int slh_dsa_import(void *keydata, int selection, const OSSL_PARAM params[]) { SLH_DSA_KEY *key = keydata; @@ -141,16 +134,6 @@ static const OSSL_PARAM *slh_dsa_imexport_types(int selection) return slh_dsa_import_list; } -{- produce_param_decoder('slh_dsa_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_MANDATORY_DIGEST', 'mandgst', 'utf8_string'], - ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], - )); -} - static const OSSL_PARAM *slh_dsa_gettable_params(void *provctx) { return slh_dsa_get_params_list; @@ -386,11 +369,6 @@ static void *slh_dsa_gen(void *genctx, const char *alg) return NULL; } -{- produce_param_decoder('slh_dsa_gen_set_params', - (['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], - ['OSSL_PKEY_PARAM_SLH_DSA_SEED', 'seed', 'octet_string'], - )); -} - static int slh_dsa_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct slh_dsa_gen_ctx *gctx = genctx; diff --git a/providers/implementations/keymgmt/slh_dsa_kmgmt.inc.in b/providers/implementations/keymgmt/slh_dsa_kmgmt.inc.in new file mode 100644 index 00000000000..5529aa55af2 --- /dev/null +++ b/providers/implementations/keymgmt/slh_dsa_kmgmt.inc.in @@ -0,0 +1,32 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('slh_dsa_import', + (['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], + )); -} + +{- produce_param_decoder('slh_dsa_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'maxsize', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_MANDATORY_DIGEST', 'mandgst', 'utf8_string'], + ['OSSL_PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv', 'octet_string'], + )); -} + +{- produce_param_decoder('slh_dsa_gen_set_params', + (['OSSL_PKEY_PARAM_PROPERTIES', 'propq', 'utf8_string'], + ['OSSL_PKEY_PARAM_SLH_DSA_SEED', 'seed', 'octet_string'], + )); -} diff --git a/providers/implementations/keymgmt/template_kmgmt.c.in b/providers/implementations/keymgmt/template_kmgmt.c similarity index 90% rename from providers/implementations/keymgmt/template_kmgmt.c.in rename to providers/implementations/keymgmt/template_kmgmt.c index 9095188b1e0..1987244124e 100644 --- a/providers/implementations/keymgmt/template_kmgmt.c.in +++ b/providers/implementations/keymgmt/template_kmgmt.c @@ -6,9 +6,6 @@ * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -{- -use OpenSSL::paramnames qw(produce_param_decoder); --} #include #include @@ -25,6 +22,8 @@ use OpenSSL::paramnames qw(produce_param_decoder); #include "prov/provider_ctx.h" #include "prov/securitycheck.h" +#include "providers/implementations/keymgmt/template_kmgmt.inc" + extern const OSSL_DISPATCH ossl_template_keymgmt_functions[]; #define BUFSIZE 1000 @@ -181,11 +180,6 @@ err: return ret; } -{- produce_param_decoder('template_key_types', - (['OSSL_PKEY_PARAM_PUB_KEY', 'pub_key', 'octet_string'], - ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv_key', 'octet_string'], - )); -} - static int ossl_template_key_fromdata(void *key, const OSSL_PARAM params[], int include_private) @@ -237,14 +231,6 @@ static const OSSL_PARAM *template_imexport_types(int selection) return NULL; } -{- produce_param_decoder('template_get_params', - (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], - ['OSSL_PKEY_PARAM_MAX_SIZE', 'size', 'int'], - ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], - ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpub', 'octet_string'], - )); -} - static int template_get_params(void *key, OSSL_PARAM params[]) { struct template_get_params_st p; @@ -277,10 +263,6 @@ static const OSSL_PARAM *template_gettable_params(void *provctx) return template_get_params_list; } -{- produce_param_decoder('template_set_params', - (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], - )); -} - static int template_set_params(void *key, const OSSL_PARAM params[]) { struct template_set_params_st p; @@ -303,10 +285,6 @@ static const OSSL_PARAM *template_settable_params(void *provctx) return template_set_params_list; } -{- produce_param_decoder('template_gen_set_params', - (['OSSL_PKEY_PARAM_GROUP_NAME', 'name', 'utf8_string'], - )); -} - static int template_gen_set_params(void *genctx, const OSSL_PARAM params[]) { struct template_gen_ctx *gctx = genctx; diff --git a/providers/implementations/keymgmt/template_kmgmt.inc.in b/providers/implementations/keymgmt/template_kmgmt.inc.in new file mode 100644 index 00000000000..0dfcee8b857 --- /dev/null +++ b/providers/implementations/keymgmt/template_kmgmt.inc.in @@ -0,0 +1,33 @@ +/* + * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the \"License\"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +{- +use OpenSSL::paramnames qw(produce_param_decoder); +-} + +{- produce_param_decoder('template_key_types', + (['OSSL_PKEY_PARAM_PUB_KEY', 'pub_key', 'octet_string'], + ['OSSL_PKEY_PARAM_PRIV_KEY', 'priv_key', 'octet_string'], + )); -} + +{- produce_param_decoder('template_get_params', + (['OSSL_PKEY_PARAM_BITS', 'bits', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_BITS', 'secbits', 'int'], + ['OSSL_PKEY_PARAM_MAX_SIZE', 'size', 'int'], + ['OSSL_PKEY_PARAM_SECURITY_CATEGORY', 'seccat', 'int'], + ['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'encpub', 'octet_string'], + )); -} + +{- produce_param_decoder('template_set_params', + (['OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY', 'pub', 'octet_string'], + )); -} + +{- produce_param_decoder('template_gen_set_params', + (['OSSL_PKEY_PARAM_GROUP_NAME', 'name', 'utf8_string'], + )); -}