diff options
author | Werner Koch <wk@gnupg.org> | 2016-12-02 19:43:36 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2016-12-02 19:47:40 +0100 |
commit | ce29272e24e7b718b8fca9b84bc728e65f3dea24 (patch) | |
tree | 72f0ef8d2f20ed9faf40d332b95a3e3ef75ef1fe /common/openpgp-oid.c | |
parent | g10: Improve debugging output. (diff) | |
download | gnupg2-ce29272e24e7b718b8fca9b84bc728e65f3dea24.tar.xz gnupg2-ce29272e24e7b718b8fca9b84bc728e65f3dea24.zip |
gpg: New option --default-new-key-algo.
* common/openpgp-oid.c (openpgp_is_curve_supported): Add optional arg
R_ALGO and change all callers.
* common/util.h (GPG_ERR_UNKNOWN_FLAG): New error code.
* g10/options.h (struct opt): Add field DEF_NEW_KEY_ALGO.
* g10/gpg.c (oDefaultNewKeyAlgo): New enum.
(opts): New option "--default-new-key-algo".
(main): Set the option.
* g10/keygen.c: Remove DEFAULT_STD_ FUTURE_STD_ constants and replace
them by ...
(DEFAULT_STD_KEY_PARAM, FUTURE_STD_KEY_PARAM): new string constants.
(get_keysize_range): Remove arg R_DEF and return that value instead.
Change all callers.
(gen_rsa): Use get_keysize_range instead of the removed
DEFAULT_STD_KEYSIZE.
(parse_key_parameter_part): New function.
(parse_key_parameter_string): New function.
(quick_generate_keypair): Refactor using parse_key_parameter_string.
(generate_keypair): Ditto.
(parse_algo_usage_expire): Ditto.
--
This new option is intended to be used in the forthcoming
--set-profile command of gpgconf. It allows to provide a gpg
configuration with custom defaults for a new key using the simple
commands which use the default algorithm set.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'common/openpgp-oid.c')
-rw-r--r-- | common/openpgp-oid.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/common/openpgp-oid.c b/common/openpgp-oid.c index 270bdf154..e7c68f290 100644 --- a/common/openpgp-oid.c +++ b/common/openpgp-oid.c @@ -411,17 +411,21 @@ openpgp_enum_curves (int *iterp) } -/* Return the Libgcrypt name for for the gpg curve NAME if supported. - * If R_ALGO is not NULL the required OpenPGP public key algo or 0 is - * stored at that address. NULL is returned if the curev is not - * supported. */ +/* Return the Libgcrypt name for the gpg curve NAME if supported. If + * R_ALGO is not NULL the required OpenPGP public key algo or 0 is + * stored at that address. If R_NBITS is not NULL the nominal bitsize + * of the curves is stored there. NULL is returned if the curve is + * not supported. */ const char * -openpgp_is_curve_supported (const char *name, int *r_algo) +openpgp_is_curve_supported (const char *name, int *r_algo, + unsigned int *r_nbits) { int idx; if (r_algo) *r_algo = 0; + if (r_nbits) + *r_nbits = 0; for (idx = 0; idx < DIM (oidtable) && oidtable[idx].name; idx++) { if ((!strcmp (name, oidtable[idx].name) @@ -430,6 +434,8 @@ openpgp_is_curve_supported (const char *name, int *r_algo) { if (r_algo) *r_algo = oidtable[idx].pubkey_algo; + if (r_nbits) + *r_nbits = oidtable[idx].nbits; return oidtable[idx].name; } } |