aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2025-08-29 12:33:42 +0000
committerWerner Koch <[email protected]>2025-08-29 12:33:42 +0000
commit152e02bd87bbb2f7026eecc4cfdc242f1cfa2756 (patch)
treed10074ff9bfabb206988b3a557a5ad0398836667
parentgpg: Add option --no-auto-key-upload. (diff)
downloadgnupg-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.c40
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);
}