diff options
author | Werner Koch <[email protected]> | 2025-08-29 12:33:42 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2025-08-29 12:33:42 +0000 |
commit | 152e02bd87bbb2f7026eecc4cfdc242f1cfa2756 (patch) | |
tree | d10074ff9bfabb206988b3a557a5ad0398836667 | |
parent | gpg: Add option --no-auto-key-upload. (diff) | |
download | gnupg-152e02bd87bbb2f7026eecc4cfdc242f1cfa2756.tar.gz gnupg-152e02bd87bbb2f7026eecc4cfdc242f1cfa2756.zip |
gpg: Make --auto-upload also work for the --quick commands.
* g10/keyedit.c (keyedit_menu): Factor some code out ...
(maybe_upload_key): New.
(keyedit_quick_adduid): Call it here.
(keyedit_quick_revuid): Ditto.
(keyedit_quick_set_primary): Ditto.
(keyedit_quick_update_pref): Ditto.
(keyedit_quick_sign): Ditto.
(keyedit_quick_revsig): Ditto.
(keyedit_quick_addkey): Ditto.
(keyedit_quick_addadsk): Ditto.
(keyedit_quick_set_expire): Ditto.
--
This should be the final part of
GnuPG-bug-id: 7333
-rw-r--r-- | g10/keyedit.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/g10/keyedit.c b/g10/keyedit.c index d3c3c8e2e..0c54a448b 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -53,6 +53,7 @@ #include "key-clean.h" #include "keyedit.h" +static void maybe_upload_key (ctrl_t ctrl, kbnode_t keyblock); static void show_prefs (PKT_user_id * uid, PKT_signature * selfsig, int verbose); static void show_names (ctrl_t ctrl, estream_t fp, @@ -2443,14 +2444,10 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, log_error (_("update failed: %s\n"), gpg_strerror (err)); break; } - if (upload && opt.flags.auto_key_upload) + if (upload) { - unsigned int saved_options = opt.keyserver_options.options; - - opt.keyserver_options.options |= KEYSERVER_LDAP_ONLY; - opt.keyserver_options.options |= KEYSERVER_WARN_ONLY; - keyserver_export_pubkey (ctrl, pk, 0); - opt.keyserver_options.options = saved_options; + maybe_upload_key (ctrl, keyblock); + upload = 0; } } @@ -2511,6 +2508,23 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, } +/* Helper to upload a key to an LDAP server if configured. */ +static void +maybe_upload_key (ctrl_t ctrl, kbnode_t keyblock) +{ + unsigned int saved_options; + + if (!opt.flags.auto_key_upload) + return; + + saved_options = opt.keyserver_options.options; + opt.keyserver_options.options |= KEYSERVER_LDAP_ONLY; + opt.keyserver_options.options |= KEYSERVER_WARN_ONLY; + keyserver_export_pubkey (ctrl, keyblock->pkt->pkt.public_key, 0); + opt.keyserver_options.options = saved_options; +} + + /* Change the passphrase of the secret key identified by USERNAME. */ void keyedit_passwd (ctrl_t ctrl, const char *username) @@ -2662,7 +2676,7 @@ keyedit_quick_adduid (ctrl_t ctrl, const char *username, const char *newuid) log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } - + maybe_upload_key (ctrl, keyblock); if (update_trust) revalidation_mark (ctrl); } @@ -2797,7 +2811,7 @@ keyedit_quick_revuid (ctrl_t ctrl, const char *username, const char *uidtorev) log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } - + maybe_upload_key (ctrl, keyblock); revalidation_mark (ctrl); goto leave; } @@ -2863,6 +2877,7 @@ keyedit_quick_set_primary (ctrl_t ctrl, const char *username, log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + maybe_upload_key (ctrl, keyblock); revalidation_mark (ctrl); } else @@ -2910,6 +2925,7 @@ keyedit_quick_update_pref (ctrl_t ctrl, const char *username) log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + maybe_upload_key (ctrl, keyblock); } leave: @@ -3223,6 +3239,8 @@ keyedit_quick_sign (ctrl_t ctrl, const char *fpr, strlist_t uids, log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + if (!local) /* No need to upload new non-expotable sigs. */ + maybe_upload_key (ctrl, keyblock); } else log_info (_("Key not changed so no update needed.\n")); @@ -3457,6 +3475,7 @@ keyedit_quick_revsig (ctrl_t ctrl, const char *username, const char *sigtorev, log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + maybe_upload_key (ctrl, keyblock); revalidation_mark (ctrl); leave: @@ -3527,6 +3546,7 @@ keyedit_quick_addkey (ctrl_t ctrl, const char *fpr, const char *algostr, log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + maybe_upload_key (ctrl, keyblock); } else log_info (_("Key not changed so no update needed.\n")); @@ -3603,6 +3623,7 @@ keyedit_quick_addadsk (ctrl_t ctrl, const char *fpr, const char *adskfpr) log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + maybe_upload_key (ctrl, keyblock); } leave: @@ -3753,6 +3774,7 @@ keyedit_quick_set_expire (ctrl_t ctrl, const char *fpr, const char *expirestr, log_error (_("update failed: %s\n"), gpg_strerror (err)); goto leave; } + maybe_upload_key (ctrl, keyblock); if (update_trust) revalidation_mark (ctrl); } |