Pedro Monreal Gonzalez
8386d6f0f3
- Update to 2.4.2: * gpg: Print a warning if no more encryption subkeys are left over after changing the expiration date. [rGef2c3d50fa] * gpg: Fix searching for the ADSK key when adding an ADSK. [T6504] * gpgsm: Speed up key listings on Windows. [rG08ff55bd44] * gpgsm: Reduce the number of "failed to open policy file" diagnostics. [rG68613a6a9d] * agent: Make updating of private key files more robust and track display S/N. [T6135] * keyboxd: Avoid longish delays on Windows when listing keys. [rG6944aefa3c] * gpgtar: Emit extra status lines to help GPGME. [T6497] * w32: Avoid using the VirtualStore. [T6403] * Rebase gnupg-add_legacy_FIPS_mode_option.patch - Update to 2.4.1: * If the ~/.gnupg directory does not exist, the keyboxd is now automagically enabled. [rGd9e7488b17] * gpg: New option --add-desig-revoker. [rG3d094e2bcf] * gpg: New option --assert-signer. [rGc9e95b8dee] * gpg: New command --quick-add-adsk and other ADSK features. [T6395, https://gnupg.org/blog/20230321-adsk.html] * gpg: New list-option "show-unusable-sigs". Also show "[self-signature]" instead of the user-id in key signature listings. [rG103acfe9ca] * gpg: For symmetric encryption the default S2K hash is now SHA256. [T6367] * gpg: Detect already compressed data also when using a pipe. Also detect JPEG and PNG file formats. [T6332] * gpg: New subcommand "openpgp" for --card-edit. [T6462] * gpgsm: Verification of detached signatures does now strip trailing zeroes from the input if --assume-binary is used. [rG2a13f7f9dc] OBS-URL: https://build.opensuse.org/request/show/1089861 OBS-URL: https://build.opensuse.org/package/show/Base:System/gpg2?expand=0&rev=287
109 lines
3.3 KiB
Diff
109 lines
3.3 KiB
Diff
From a1db83d8a3308277f01b96833c13693bd7e13ff9 Mon Sep 17 00:00:00 2001
|
|
From: Vincent Breitmoser <look@my.amazin.horse>
|
|
Date: Thu, 13 Jun 2019 21:27:42 +0200
|
|
Subject: [PATCH] gpg: allow import of previously known keys, even without UIDs
|
|
|
|
* g10/import.c (import_one): Accept an incoming OpenPGP certificate that
|
|
has no user id, as long as we already have a local variant of the cert
|
|
that matches the primary key.
|
|
|
|
--
|
|
|
|
This fixes two of the three broken tests in import-incomplete.scm.
|
|
|
|
GnuPG-Bug-id: 4393
|
|
Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
|
---
|
|
g10/import.c | 49 +++++++++++--------------------------------------
|
|
1 file changed, 11 insertions(+), 38 deletions(-)
|
|
|
|
Index: gnupg-2.4.0/g10/import.c
|
|
===================================================================
|
|
--- gnupg-2.4.0.orig/g10/import.c
|
|
+++ gnupg-2.4.0/g10/import.c
|
|
@@ -1954,7 +1954,6 @@ import_one_real (ctrl_t ctrl,
|
|
size_t an;
|
|
char pkstrbuf[PUBKEY_STRING_SIZE];
|
|
int merge_keys_done = 0;
|
|
- int any_filter = 0;
|
|
KEYDB_HANDLE hd = NULL;
|
|
|
|
if (r_valid)
|
|
@@ -1991,14 +1990,6 @@ import_one_real (ctrl_t ctrl,
|
|
log_printf ("\n");
|
|
}
|
|
|
|
-
|
|
- if (!uidnode)
|
|
- {
|
|
- if (!silent)
|
|
- log_error( _("key %s: no user ID\n"), keystr_from_pk(pk));
|
|
- return 0;
|
|
- }
|
|
-
|
|
if (screener && screener (keyblock, screener_arg))
|
|
{
|
|
log_error (_("key %s: %s\n"), keystr_from_pk (pk),
|
|
@@ -2078,18 +2069,10 @@ import_one_real (ctrl_t ctrl,
|
|
}
|
|
}
|
|
|
|
- /* Delete invalid parts and bail out if there are no user ids left. */
|
|
- if (!delete_inv_parts (ctrl, keyblock, keyid, options, otherrevsigs))
|
|
- {
|
|
- if (!silent)
|
|
- {
|
|
- log_error ( _("key %s: no valid user IDs\n"), keystr_from_pk(pk));
|
|
- if (!opt.quiet)
|
|
- log_info(_("this may be caused by a missing self-signature\n"));
|
|
- }
|
|
- stats->no_user_id++;
|
|
- return 0;
|
|
- }
|
|
+ /* Delete invalid parts, and note if we have any valid ones left.
|
|
+ * We will later abort import if this key is new but contains
|
|
+ * no valid uids. */
|
|
+ delete_inv_parts (ctrl, keyblock, keyid, options, otherrevsigs);
|
|
|
|
/* Get rid of deleted nodes. */
|
|
commit_kbnode (&keyblock);
|
|
@@ -2099,24 +2082,11 @@ import_one_real (ctrl_t ctrl,
|
|
{
|
|
apply_keep_uid_filter (ctrl, keyblock, import_filter.keep_uid);
|
|
commit_kbnode (&keyblock);
|
|
- any_filter = 1;
|
|
}
|
|
if (import_filter.drop_sig)
|
|
{
|
|
apply_drop_sig_filter (ctrl, keyblock, import_filter.drop_sig);
|
|
commit_kbnode (&keyblock);
|
|
- any_filter = 1;
|
|
- }
|
|
-
|
|
- /* If we ran any filter we need to check that at least one user id
|
|
- * is left in the keyring. Note that we do not use log_error in
|
|
- * this case. */
|
|
- if (any_filter && !any_uid_left (keyblock))
|
|
- {
|
|
- if (!opt.quiet )
|
|
- log_info ( _("key %s: no valid user IDs\n"), keystr_from_pk (pk));
|
|
- stats->no_user_id++;
|
|
- return 0;
|
|
}
|
|
|
|
/* The keyblock is valid and ready for real import. */
|
|
@@ -2174,6 +2144,13 @@ import_one_real (ctrl_t ctrl,
|
|
err = 0;
|
|
stats->skipped_new_keys++;
|
|
}
|
|
+ else if (err && !any_uid_left (keyblock))
|
|
+ {
|
|
+ if (!silent)
|
|
+ log_info( _("key %s: new key but contains no user ID - skipped\n"), keystr(keyid));
|
|
+ err = 0;
|
|
+ stats->no_user_id++;
|
|
+ }
|
|
else if (err) /* Insert this key. */
|
|
{
|
|
/* Note: ERR can only be NO_PUBKEY or UNUSABLE_PUBKEY. */
|