From 14828c75be10d61f35a46c58541aa39884b33bcd Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 25 May 2023 11:57:04 +0200 Subject: [PATCH] gpg: Fix searching for the ADSK key when adding an ADSK. * g10/keyedit.c (menu_addadsk): Request an exact search. * g10/getkey.c (finish_lookup): Add an debug output. -- GnuPG-bug-id: 6504 --- g10/getkey.c | 3 +++ g10/keyedit.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/g10/getkey.c b/g10/getkey.c index 15905dc63..68d7ee61d 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -3655,6 +3655,9 @@ finish_lookup (kbnode_t keyblock, unsigned int req_usage, int want_exact, break; } } + if (DBG_LOOKUP) + log_debug ("finish_lookup: exact search requested: %sfound\n", + foundk? "":"not "); } /* Get the user id that matched that low-level search criteria. */ diff --git a/g10/keyedit.c b/g10/keyedit.c index e16a40ead..21c1ee8d8 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -4844,6 +4844,15 @@ menu_addadsk (ctrl_t ctrl, kbnode_t pub_keyblock, const char *adskfpr) continue; } + /* Force searching for that exact fingerprint and for any key + * which has a key with that fingerprint. */ + if (!strchr (answer, '!')) + { + char *tmpstr = xstrconcat (answer, "!", NULL); + xfree (answer); + answer = tmpstr; + } + free_public_key (adsk_pk); adsk_pk = xcalloc (1, sizeof *adsk_pk); adsk_pk->req_usage = PUBKEY_USAGE_ENC;