diff options
author | Werner Koch <wk@gnupg.org> | 2016-12-12 10:50:21 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2016-12-12 10:50:42 +0100 |
commit | f1304ee9b21e6ceac6c13d04ceddd23fadb5c7f1 (patch) | |
tree | eb51d58eb04e9d27233580fb0fec0c9cf59c8935 /g10 | |
parent | gpg: Fix algo string parsing of --quick-addkey. (diff) | |
download | gnupg2-f1304ee9b21e6ceac6c13d04ceddd23fadb5c7f1.tar.xz gnupg2-f1304ee9b21e6ceac6c13d04ceddd23fadb5c7f1.zip |
gpg: Do not use a fixed string for --gpgconf-list:default_pubkey_algo.
* g10/keygen.c (get_default_pubkey_algo): New.
(parse_key_parameter_string): Use it.
* g10/gpg.c (gpgconf_list): Take value from new function.
--
Note that consumers of that gpgconf-list value may need to be adjusted
to that new value. It should anyway only be used to display the
default algorithm.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'g10')
-rw-r--r-- | g10/gpg.c | 2 | ||||
-rw-r--r-- | g10/keygen.c | 19 | ||||
-rw-r--r-- | g10/main.h | 1 |
3 files changed, 20 insertions, 2 deletions
@@ -1832,7 +1832,7 @@ gpgconf_list (const char *configfile) /* The next one is an info only item and should match the macros at the top of keygen.c */ es_printf ("default_pubkey_algo:%lu:\"%s:\n", GC_OPT_FLAG_DEFAULT, - "RSA-2048"); + get_default_pubkey_algo ()); xfree (configfile_esc); } diff --git a/g10/keygen.c b/g10/keygen.c index 80ad0ba4e..c1abc70cc 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -152,6 +152,23 @@ static unsigned int get_keysize_range (int algo, +/* Return the algo string for a default new key. */ +const char * +get_default_pubkey_algo (void) +{ + if (opt.def_new_key_algo) + { + if (*opt.def_new_key_algo && !strchr (opt.def_new_key_algo, ':')) + return opt.def_new_key_algo; + /* To avoid checking that option every time we delay that until + * here. The only thing we really need to make sure is that + * there is no colon in the string so that the --gpgconf-list + * command won't mess up its output. */ + log_info (_("invalid value for option '%s'\n"), "--default-new-key-algo"); + } + return DEFAULT_STD_KEY_PARAM; +} + static void print_status_key_created (int letter, PKT_public_key *pk, const char *handle) @@ -3122,7 +3139,7 @@ parse_key_parameter_string (const char *string, int part, if (!string || !*string || !strcmp (string, "default") || !strcmp (string, "-")) - string = opt.def_new_key_algo? opt.def_new_key_algo : DEFAULT_STD_KEY_PARAM; + string = get_default_pubkey_algo (); else if (!strcmp (string, "future-default")) string = FUTURE_STD_KEY_PARAM; diff --git a/g10/main.h b/g10/main.h index 1822ee473..5ed501b3c 100644 --- a/g10/main.h +++ b/g10/main.h @@ -300,6 +300,7 @@ void keyedit_quick_set_expire (ctrl_t ctrl, void show_basic_key_info (KBNODE keyblock); /*-- keygen.c --*/ +const char *get_default_pubkey_algo (void); u32 parse_expire_string(const char *string); u32 ask_expire_interval(int object,const char *def_expire); u32 ask_expiredate(void); |