diff options
author | slontis <shane.lontis@oracle.com> | 2022-12-15 12:13:55 +1000 |
---|---|---|
committer | Todd Short <todd.short@me.com> | 2023-02-23 10:12:35 -0500 |
commit | 2c1ec72a7abb29f2d91eda6f93942670f1cbdb9e (patch) | |
tree | 866690b7b488d14038b6a3e335cd5dfc1ce990f6 /apps/genpkey.c | |
parent | 1dc35d44f355a7371a1ff8a457586938cc7b168a (diff) |
Add help for pkeyopt values for the genpkey commandline app.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Todd Short <todd.short@me.com>
(Merged from https://github.com/openssl/openssl/pull/19931)
Diffstat (limited to 'apps/genpkey.c')
-rw-r--r-- | apps/genpkey.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/apps/genpkey.c b/apps/genpkey.c index dcb9ad1dd8..52d1b44edb 100644 --- a/apps/genpkey.c +++ b/apps/genpkey.c @@ -57,6 +57,50 @@ const OPTIONS genpkey_options[] = { {NULL} }; +static const char *param_datatype_2name(unsigned int type, int *ishex) +{ + *ishex = 0; + + switch (type) { + case OSSL_PARAM_INTEGER: return "int"; + case OSSL_PARAM_UNSIGNED_INTEGER: return "uint"; + case OSSL_PARAM_REAL: return "float"; + case OSSL_PARAM_OCTET_STRING: *ishex = 1; return "string"; + case OSSL_PARAM_UTF8_STRING: return "string"; + default: + return NULL; + } +} + +static void show_gen_pkeyopt(const char *algname, OSSL_LIB_CTX *libctx, const char *propq) +{ + EVP_PKEY_CTX *ctx = NULL; + const OSSL_PARAM *params; + int i, ishex = 0; + + if (algname == NULL) + return; + ctx = EVP_PKEY_CTX_new_from_name(libctx, algname, propq); + if (ctx == NULL) + return; + + if (EVP_PKEY_keygen_init(ctx) <= 0) + goto cleanup; + params = EVP_PKEY_CTX_settable_params(ctx); + if (params == NULL) + goto cleanup; + + BIO_printf(bio_err, "\nThe possible -pkeyopt arguments are:\n"); + for (i = 0; params[i].key != NULL; ++i) { + const char *name = param_datatype_2name(params[i].data_type, &ishex); + + if (name != NULL) + BIO_printf(bio_err, " %s%s:%s\n", ishex ? "hex" : "", params[i].key, name); + } +cleanup: + EVP_PKEY_CTX_free(ctx); +} + int genpkey_main(int argc, char **argv) { CONF *conf = NULL; @@ -88,6 +132,7 @@ int genpkey_main(int argc, char **argv) case OPT_HELP: ret = 0; opt_help(genpkey_options); + show_gen_pkeyopt(algname, libctx, app_get0_propq()); goto end; case OPT_OUTFORM: if (!opt_format(opt_arg(), OPT_FMT_PEMDER, &outformat)) |