aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2021-04-26 13:32:51 +0000
committerWerner Koch <[email protected]>2021-05-04 08:23:20 +0000
commit22fe23f46d3179cb0a68f58bf6f722b89c0c4d9c (patch)
tree2f9f199b5c9c3b8a2b989940a60e304c4cd08730
parentgpg: Auto import keys specified with --trusted-keys. (diff)
downloadgnupg-22fe23f46d3179cb0a68f58bf6f722b89c0c4d9c.tar.gz
gnupg-22fe23f46d3179cb0a68f58bf6f722b89c0c4d9c.zip
gpg: Fix mailbox based search via AKL keyserver method.
* g10/keyserver.c (keyserver_import_name): Rename to ... (keyserver_import_mbox): this. And use mail search mode. * g10/getkey.c (get_pubkey_byname): Change the two callers. -- In contrast to a search via keyserver_import_ntds the older keyserver_import_name used a full match of the provided name despite that it is only called with an addr-spec (mbox). Due to the mode the pattern send to dirmngr was prefixed with a '=' and thus dirmngr used an exact search;. This did only work for provided user ids like "[email protected]" but not for "<[email protected]>" or "Foo <[email protected]>". The old code dates back to 2010. Signed-off-by: Werner Koch <[email protected]> (cherry picked from commit 4fcfac6feb2a6c2b14883ba406afc917e8d4be42)
-rw-r--r--g10/getkey.c4
-rw-r--r--g10/gpgv.c2
-rw-r--r--g10/keyserver-internal.h4
-rw-r--r--g10/keyserver.c12
-rw-r--r--g10/test-stubs.c2
5 files changed, 11 insertions, 13 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index 1e6d7fb9f..4642174e9 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -1342,7 +1342,7 @@ get_pubkey_byname (ctrl_t ctrl, enum get_pubkey_modes mode,
}
else
{
- rc = keyserver_import_name (ctrl, name, &fpr, &fpr_len,
+ rc = keyserver_import_mbox (ctrl, name, &fpr, &fpr_len,
opt.keyserver);
}
glo_ctrl.in_auto_key_retrieve--;
@@ -1373,7 +1373,7 @@ get_pubkey_byname (ctrl_t ctrl, enum get_pubkey_modes mode,
}
else
{
- rc = keyserver_import_name (ctrl, name,
+ rc = keyserver_import_mbox (ctrl, name,
&fpr, &fpr_len, keyserver);
}
glo_ctrl.in_auto_key_retrieve--;
diff --git a/g10/gpgv.c b/g10/gpgv.c
index 3131ba904..c17870c66 100644
--- a/g10/gpgv.c
+++ b/g10/gpgv.c
@@ -478,7 +478,7 @@ keyserver_import_wkd (ctrl_t ctrl, const char *name, unsigned int flags,
}
int
-keyserver_import_name (const char *name,struct keyserver_spec *spec)
+keyserver_import_mbox (const char *name,struct keyserver_spec *spec)
{
(void)name;
(void)spec;
diff --git a/g10/keyserver-internal.h b/g10/keyserver-internal.h
index d1fb682a2..b6671d72b 100644
--- a/g10/keyserver-internal.h
+++ b/g10/keyserver-internal.h
@@ -58,8 +58,8 @@ gpg_error_t keyserver_import_wkd (ctrl_t ctrl, const char *name,
unsigned char **fpr, size_t *fpr_len);
int keyserver_import_ntds (ctrl_t ctrl, const char *name,
unsigned char **fpr,size_t *fpr_len);
-int keyserver_import_name (ctrl_t ctrl,
- const char *name,unsigned char **fpr,size_t *fpr_len,
+int keyserver_import_mbox (ctrl_t ctrl, const char *mbox,
+ unsigned char **fpr,size_t *fpr_len,
struct keyserver_spec *keyserver);
int keyserver_import_ldap (ctrl_t ctrl, const char *name,
unsigned char **fpr,size_t *fpr_len);
diff --git a/g10/keyserver.c b/g10/keyserver.c
index c5e70601d..808e4c3fd 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -1142,18 +1142,16 @@ keyserver_any_configured (ctrl_t ctrl)
}
-/* Import all keys that exactly match NAME */
+/* Import all keys that exactly match MBOX */
int
-keyserver_import_name (ctrl_t ctrl, const char *name,
+keyserver_import_mbox (ctrl_t ctrl, const char *mbox,
unsigned char **fpr, size_t *fprlen,
struct keyserver_spec *keyserver)
{
- KEYDB_SEARCH_DESC desc;
-
- memset (&desc, 0, sizeof desc);
+ KEYDB_SEARCH_DESC desc = { 0 };
- desc.mode = KEYDB_SEARCH_MODE_EXACT;
- desc.u.name = name;
+ desc.mode = KEYDB_SEARCH_MODE_MAIL;
+ desc.u.name = mbox;
return keyserver_get (ctrl, &desc, 1, keyserver, 0, fpr, fprlen);
}
diff --git a/g10/test-stubs.c b/g10/test-stubs.c
index c6fa9c024..09737c4af 100644
--- a/g10/test-stubs.c
+++ b/g10/test-stubs.c
@@ -236,7 +236,7 @@ keyserver_import_wkd (ctrl_t ctrl, const char *name, unsigned int flags,
}
int
-keyserver_import_name (const char *name,struct keyserver_spec *spec)
+keyserver_import_mbox (const char *name,struct keyserver_spec *spec)
{
(void)name;
(void)spec;