aboutsummaryrefslogtreecommitdiffstats
path: root/g10/hkp.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/hkp.c')
-rw-r--r--g10/hkp.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/g10/hkp.c b/g10/hkp.c
index 5c44d2681..62568f70f 100644
--- a/g10/hkp.c
+++ b/g10/hkp.c
@@ -48,15 +48,27 @@ static int urlencode_filter( void *opaque, int control,
* or other error codes.
*/
int
-hkp_ask_import( u32 *keyid, void *stats_handle)
+hkp_ask_import( KEYDB_SEARCH_DESC *desc, void *stats_handle)
{
struct http_context hd;
char *request;
int rc;
unsigned int hflags = opt.honor_http_proxy? HTTP_FLAG_TRY_PROXY : 0;
+ u32 key[2];
+
+ if(desc->mode==KEYDB_SEARCH_MODE_FPR20)
+ keyid_from_fingerprint(desc->u.fpr,MAX_FINGERPRINT_LEN,key);
+ else if(desc->mode==KEYDB_SEARCH_MODE_LONG_KID ||
+ desc->mode==KEYDB_SEARCH_MODE_SHORT_KID)
+ {
+ key[0]=desc->u.kid[0];
+ key[1]=desc->u.kid[1];
+ }
+ else
+ return -1; /* HKP does not support v3 fingerprints */
log_info(_("requesting key %08lX from HKP keyserver %s\n"),
- (ulong)keyid[1],opt.keyserver_host );
+ (ulong)key[1],opt.keyserver_host );
request = m_alloc( strlen( opt.keyserver_host ) + 100 );
/* hkp does not accept the long keyid - we should really write a
* nicer one :-)
@@ -72,7 +84,7 @@ hkp_ask_import( u32 *keyid, void *stats_handle)
opt.keyserver_host,
atoi(opt.keyserver_port)>0?":":"",
atoi(opt.keyserver_port)>0?opt.keyserver_port:"",
- (ulong)keyid[1] );
+ (ulong)key[1] );
if(opt.keyserver_options.verbose>2)
log_info("request is \"%s\"\n",request);