aboutsummaryrefslogtreecommitdiffstats
path: root/keyserver/gpgkeys_hkp.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2005-08-18 21:14:16 +0000
committerDavid Shaw <[email protected]>2005-08-18 21:14:16 +0000
commit70bf6d92046033e3ac66b8daf1f11a6478b0563c (patch)
treeadb4cafce8430c589a9b26a6df702ec177f6c772 /keyserver/gpgkeys_hkp.c
parent* gpgkeys_ldap.c (ldap_quote): \-quote a string for LDAP. (diff)
downloadgnupg-70bf6d92046033e3ac66b8daf1f11a6478b0563c.tar.gz
gnupg-70bf6d92046033e3ac66b8daf1f11a6478b0563c.zip
* ksutil.h, ksutil.c (parse_ks_options): New keyserver-option exact-name.
The last of exact-name and exact-email overrides the earlier. * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it here to do a name-only search.
Diffstat (limited to 'keyserver/gpgkeys_hkp.c')
-rw-r--r--keyserver/gpgkeys_hkp.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index b231420e9..a0ea31081 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -291,7 +291,25 @@ search_key(char *searchkey)
char *searchkey_encoded=NULL;
int ret=KEYSERVER_INTERNAL_ERROR;
- if(opt->flags.exact_email)
+ if(opt->flags.exact_name)
+ {
+ char *bracketed;
+
+ bracketed=malloc(strlen(searchkey)+2+1);
+ if(!bracketed)
+ {
+ fprintf(console,"gpgkeys: out of memory\n");
+ ret=KEYSERVER_NO_MEMORY;
+ goto fail;
+ }
+
+ strcpy(bracketed,searchkey);
+ strcat(bracketed," <");
+
+ searchkey_encoded=curl_escape(bracketed,0);
+ free(bracketed);
+ }
+ else if(opt->flags.exact_email)
{
char *bracketed;
@@ -341,7 +359,7 @@ search_key(char *searchkey)
append_path(request,"/pks/lookup?op=index&options=mr&search=");
strcat(request,searchkey_encoded);
- if(opt->flags.exact_email)
+ if(opt->flags.exact_name || opt->flags.exact_email)
strcat(request,"&exact=on");
if(opt->verbose>2)