aboutsummaryrefslogtreecommitdiffstats
path: root/keyserver/gpgkeys_hkp.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2005-08-18 04:17:20 +0000
committerDavid Shaw <[email protected]>2005-08-18 04:17:20 +0000
commite9b444a9d09de8ccbe0295dae33e6abcf8e79b77 (patch)
treeebf51c02682e8d3af3ec2077c10f40d181bc8931 /keyserver/gpgkeys_hkp.c
parentExperimental code to improve AES performance. Got about 25% on ia32. (diff)
downloadgnupg-e9b444a9d09de8ccbe0295dae33e6abcf8e79b77.tar.gz
gnupg-e9b444a9d09de8ccbe0295dae33e6abcf8e79b77.zip
* ksutil.h, ksutil.c (parse_ks_options): New keyserver-option
exact-email. * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it here to do an email-only search.
Diffstat (limited to 'keyserver/gpgkeys_hkp.c')
-rw-r--r--keyserver/gpgkeys_hkp.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/keyserver/gpgkeys_hkp.c b/keyserver/gpgkeys_hkp.c
index cd0773fde..b231420e9 100644
--- a/keyserver/gpgkeys_hkp.c
+++ b/keyserver/gpgkeys_hkp.c
@@ -287,13 +287,40 @@ int
search_key(char *searchkey)
{
CURLcode res;
- char *request;
- char *searchkey_encoded;
+ char *request=NULL;
+ char *searchkey_encoded=NULL;
int ret=KEYSERVER_INTERNAL_ERROR;
- searchkey_encoded=curl_escape(searchkey,0);
+ if(opt->flags.exact_email)
+ {
+ char *bracketed;
- request=malloc(MAX_URL+50+strlen(searchkey_encoded));
+ bracketed=malloc(1+strlen(searchkey)+1+1);
+ if(!bracketed)
+ {
+ fprintf(console,"gpgkeys: out of memory\n");
+ ret=KEYSERVER_NO_MEMORY;
+ goto fail;
+ }
+
+ strcpy(bracketed,"<");
+ strcat(bracketed,searchkey);
+ strcat(bracketed,">");
+
+ searchkey_encoded=curl_escape(bracketed,0);
+ free(bracketed);
+ }
+ else
+ searchkey_encoded=curl_escape(searchkey,0);
+
+ if(!searchkey_encoded)
+ {
+ fprintf(console,"gpgkeys: out of memory\n");
+ ret=KEYSERVER_NO_MEMORY;
+ goto fail;
+ }
+
+ request=malloc(MAX_URL+60+strlen(searchkey_encoded));
if(!request)
{
fprintf(console,"gpgkeys: out of memory\n");
@@ -314,6 +341,9 @@ search_key(char *searchkey)
append_path(request,"/pks/lookup?op=index&options=mr&search=");
strcat(request,searchkey_encoded);
+ if(opt->flags.exact_email)
+ strcat(request,"&exact=on");
+
if(opt->verbose>2)
fprintf(console,"gpgkeys: HTTP URL is `%s'\n",request);