diff options
author | Neal H. Walfield <neal@g10code.com> | 2015-11-03 23:15:27 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@g10code.com> | 2015-11-04 13:19:52 +0100 |
commit | e16d7168c54e5f7bc2f0037806ee4f730930eaf0 (patch) | |
tree | 8cf75fb29648d091e01533506d6377e645451123 /g10/gpg.c | |
parent | scd: Fix error handling with libusb-compat library. (diff) | |
download | gnupg2-e16d7168c54e5f7bc2f0037806ee4f730930eaf0.tar.xz gnupg2-e16d7168c54e5f7bc2f0037806ee4f730930eaf0.zip |
gpg: Allow multiple --default-key options. Take the last available key.
* g10/getkey.c (parse_def_secret_key): New function.
(get_seckey_default): Add parameter ctrl. Update callers. Use
parse_def_secret_key to get the default secret key, if any.
(getkey_byname): Likewise.
(enum_secret_keys): Likewise.
* g10/options.h (opt): Change def_secret_key's type from a char * to a
strlist_t.
* g10/gpg.c (main): When processing --default-key, add the key to
OPT.DEF_SECRET_KEY.
* g10/gpgv.c (get_session_key): Add parameter ctrl. Update callers.
* g10/mainproc.c (proc_pubkey_enc): Likewise.
(do_proc_packets): Likewise.
* g10/pkclist.c (default_recipient): Likewise.
* g10/pubkey-enc.c (get_session_key): Likewise.
* g10/sign.c (clearsign_file): Likewise.
(sign_symencrypt_file): Likewise.
* g10/skclist.c (build_sk_list): Likewise.
* g10/test-stubs.c (get_session_key): Likewise.
--
Signed-off-by: Neal H. Walield <neal@g10code.com>
GnuPG-bug-id: 806
Diffstat (limited to 'g10/gpg.c')
-rw-r--r-- | g10/gpg.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -2577,7 +2577,9 @@ main (int argc, char **argv) case oTrustDBName: trustdb_name = pargs.r.ret_str; break; #endif /*!NO_TRUST_MODELS*/ - case oDefaultKey: opt.def_secret_key = pargs.r.ret_str; break; + case oDefaultKey: + add_to_strlist (&opt.def_secret_key, pargs.r.ret_str); + break; case oDefRecipient: if( *pargs.r.ret_str ) { @@ -3865,7 +3867,7 @@ main (int argc, char **argv) case aSignSym: /* sign and conventionally encrypt the given file */ if (argc > 1) wrong_args(_("--sign --symmetric [filename]")); - rc = sign_symencrypt_file (fname, locusr); + rc = sign_symencrypt_file (ctrl, fname, locusr); if (rc) { write_status_failure ("sign-symencrypt", rc); @@ -3877,7 +3879,7 @@ main (int argc, char **argv) case aClearsign: /* make a clearsig */ if( argc > 1 ) wrong_args(_("--clearsign [filename]")); - if( (rc = clearsign_file(fname, locusr, NULL)) ) + if( (rc = clearsign_file (ctrl, fname, locusr, NULL)) ) { write_status_failure ("sign", rc); log_error("%s: clearsign failed: %s\n", |