diff options
Diffstat (limited to 'g10/gpg.c')
-rw-r--r-- | g10/gpg.c | 33 |
1 files changed, 29 insertions, 4 deletions
@@ -429,6 +429,7 @@ enum cmd_and_opt_values oKeyOrigin, oRequestOrigin, oNoSymkeyCache, + oUseOnlyOpenPGPCard, oNoop }; @@ -714,7 +715,7 @@ static ARGPARSE_OPTS opts[] = { "delete-secret-and-public-keys", "@"), ARGPARSE_c (aRebuildKeydbCaches, "rebuild-keydb-caches", "@"), - ARGPARSE_s_s (oPassphrase, "passphrase", "@"), + ARGPARSE_o_s (oPassphrase, "passphrase", "@"), ARGPARSE_s_i (oPassphraseFD, "passphrase-fd", "@"), ARGPARSE_s_s (oPassphraseFile, "passphrase-file", "@"), ARGPARSE_s_i (oPassphraseRepeat,"passphrase-repeat", "@"), @@ -901,6 +902,10 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_n (oNoSymkeyCache, "no-symkey-cache", "@"), ARGPARSE_s_n (oUseKeyboxd, "use-keyboxd", "@"), + /* Options which can be used in special circumstances. They are not + * published and we hope they are never required. */ + ARGPARSE_s_n (oUseOnlyOpenPGPCard, "use-only-openpgp-card", "@"), + /* Dummy options with warnings. */ ARGPARSE_s_n (oUseAgent, "use-agent", "@"), ARGPARSE_s_n (oNoUseAgent, "no-use-agent", "@"), @@ -961,6 +966,9 @@ static struct debug_flags_s debug_flags [] = #define ALWAYS_ADD_KEYRINGS 0 #endif +/* The list of the default AKL methods. */ +#define DEFAULT_AKL_LIST "local,wkd" + int g10_errors_seen = 0; @@ -2539,7 +2547,7 @@ main (int argc, char **argv) /* Set default options which require that malloc stuff is ready. */ additional_weak_digest ("MD5"); - parse_auto_key_locate ("local,wkd"); + parse_auto_key_locate (DEFAULT_AKL_LIST); /* Try for a version specific config file first */ default_configname = get_default_configname (); @@ -3178,7 +3186,7 @@ main (int argc, char **argv) case oBZ2CompressLevel: opt.bz2_compress_level = pargs.r.ret_int; break; case oBZ2DecompressLowmem: opt.bz2_decompress_lowmem=1; break; case oPassphrase: - set_passphrase_from_string(pargs.r.ret_str); + set_passphrase_from_string (pargs.r_type ? pargs.r.ret_str : ""); break; case oPassphraseFD: pwfd = translate_sys2libc_fd_int (pargs.r.ret_int, 0); @@ -3657,6 +3665,10 @@ main (int argc, char **argv) opt.def_new_key_algo = pargs.r.ret_str; break; + case oUseOnlyOpenPGPCard: + opt.flags.use_only_openpgp_card = 1; + break; + case oNoop: break; default: @@ -3765,7 +3777,10 @@ main (int argc, char **argv) log_info(_("WARNING: program may create a core file!\n")); if (opt.flags.rfc4880bis) - log_info ("Note: RFC4880bis features are enabled.\n"); + { + if (!opt.quiet) + log_info ("Note: RFC4880bis features are enabled.\n"); + } else { opt.mimemode = 0; /* This will use text mode instead. */ @@ -4555,7 +4570,17 @@ main (int argc, char **argv) sl = NULL; for (; argc; argc--, argv++) add_to_strlist2( &sl, *argv, utf8_strings ); + if (cmd == aLocateExtKeys && akl_empty_or_only_local ()) + { + /* This is a kludge to let --locate-external-keys even + * work if the config file has --no-auto-key-locate. This + * better matches the expectations of the user. */ + release_akl (); + parse_auto_key_locate (DEFAULT_AKL_LIST); + } public_key_list (ctrl, sl, 1, cmd == aLocateExtKeys); + + free_strlist (sl); break; |