diff options
author | Neal H. Walfield <[email protected]> | 2015-11-03 22:15:27 +0000 |
---|---|---|
committer | Neal H. Walfield <[email protected]> | 2015-11-04 12:19:52 +0000 |
commit | e16d7168c54e5f7bc2f0037806ee4f730930eaf0 (patch) | |
tree | 8cf75fb29648d091e01533506d6377e645451123 /g10/mainproc.c | |
parent | scd: Fix error handling with libusb-compat library. (diff) | |
download | gnupg-e16d7168c54e5f7bc2f0037806ee4f730930eaf0.tar.gz gnupg-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 <[email protected]>
GnuPG-bug-id: 806
Diffstat (limited to '')
-rw-r--r-- | g10/mainproc.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/g10/mainproc.c b/g10/mainproc.c index b8e0ea62c..f4e5f45c3 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -106,7 +106,7 @@ struct mainproc_context /*** Local prototypes. ***/ -static int do_proc_packets (CTX c, iobuf_t a); +static int do_proc_packets (ctrl_t ctrl, CTX c, iobuf_t a); static void list_node (CTX c, kbnode_t node); static void proc_tree (CTX c, kbnode_t node); static int literals_seen; @@ -366,7 +366,7 @@ proc_symkey_enc (CTX c, PACKET *pkt) static void -proc_pubkey_enc (CTX c, PACKET *pkt) +proc_pubkey_enc (ctrl_t ctrl, CTX c, PACKET *pkt) { PKT_pubkey_enc *enc; int result = 0; @@ -428,7 +428,7 @@ proc_pubkey_enc (CTX c, PACKET *pkt) else { c->dek = xmalloc_secure_clear (sizeof *c->dek); - if ((result = get_session_key (enc, c->dek))) + if ((result = get_session_key (ctrl, enc, c->dek))) { /* Error: Delete the DEK. */ xfree (c->dek); @@ -1195,7 +1195,7 @@ proc_packets (ctrl_t ctrl, void *anchor, iobuf_t a ) c->ctrl = ctrl; c->anchor = anchor; - rc = do_proc_packets (c, a); + rc = do_proc_packets (ctrl, c, a); xfree (c); return rc; @@ -1218,7 +1218,7 @@ proc_signature_packets (ctrl_t ctrl, void *anchor, iobuf_t a, c->signed_data.used = !!signedfiles; c->sigfilename = sigfilename; - rc = do_proc_packets ( c, a ); + rc = do_proc_packets (ctrl, c, a); /* If we have not encountered any signature we print an error messages, send a NODATA status back and return an error code. @@ -1261,7 +1261,7 @@ proc_signature_packets_by_fd (ctrl_t ctrl, c->signed_data.data_names = NULL; c->signed_data.used = (signed_data_fd != -1); - rc = do_proc_packets ( c, a ); + rc = do_proc_packets (ctrl, c, a); /* If we have not encountered any signature we print an error messages, send a NODATA status back and return an error code. @@ -1294,7 +1294,7 @@ proc_encryption_packets (ctrl_t ctrl, void *anchor, iobuf_t a ) c->ctrl = ctrl; c->anchor = anchor; c->encrypt_only = 1; - rc = do_proc_packets (c, a); + rc = do_proc_packets (ctrl, c, a); xfree (c); return rc; } @@ -1320,7 +1320,7 @@ check_nesting (CTX c) static int -do_proc_packets (CTX c, iobuf_t a) +do_proc_packets (ctrl_t ctrl, CTX c, iobuf_t a) { PACKET *pkt; int rc = 0; @@ -1352,7 +1352,7 @@ do_proc_packets (CTX c, iobuf_t a) { switch (pkt->pkttype) { - case PKT_PUBKEY_ENC: proc_pubkey_enc (c, pkt); break; + case PKT_PUBKEY_ENC: proc_pubkey_enc (ctrl, c, pkt); break; case PKT_SYMKEY_ENC: proc_symkey_enc (c, pkt); break; case PKT_ENCRYPTED: case PKT_ENCRYPTED_MDC: proc_encrypted (c, pkt); break; @@ -1396,7 +1396,7 @@ do_proc_packets (CTX c, iobuf_t a) case PKT_SIGNATURE: newpkt = add_signature (c, pkt); break; case PKT_SYMKEY_ENC: proc_symkey_enc (c, pkt); break; - case PKT_PUBKEY_ENC: proc_pubkey_enc (c, pkt); break; + case PKT_PUBKEY_ENC: proc_pubkey_enc (ctrl, c, pkt); break; case PKT_ENCRYPTED: case PKT_ENCRYPTED_MDC: proc_encrypted (c, pkt); break; case PKT_PLAINTEXT: proc_plaintext (c, pkt); break; @@ -1422,7 +1422,7 @@ do_proc_packets (CTX c, iobuf_t a) break; case PKT_USER_ID: newpkt = add_user_id (c, pkt); break; case PKT_SIGNATURE: newpkt = add_signature (c, pkt); break; - case PKT_PUBKEY_ENC: proc_pubkey_enc (c, pkt); break; + case PKT_PUBKEY_ENC: proc_pubkey_enc (ctrl, c, pkt); break; case PKT_SYMKEY_ENC: proc_symkey_enc (c, pkt); break; case PKT_ENCRYPTED: case PKT_ENCRYPTED_MDC: proc_encrypted (c, pkt); break; |