aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyserver.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r--g10/keyserver.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c
index 2df47a0c5..48a6a9b73 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -90,6 +90,10 @@ parse_keyserver_options(char *options)
opt.keyserver_options.refresh_add_fake_v3_keyids=1;
else if(strcasecmp(tok,"no-refresh-add-fake-v3-keyids")==0)
opt.keyserver_options.refresh_add_fake_v3_keyids=0;
+ else if(strcasecmp(tok,"auto-key-retrieve")==0)
+ opt.keyserver_options.refresh_add_fake_v3_keyids=1;
+ else if(strcasecmp(tok,"no-auto-key-retrieve")==0)
+ opt.keyserver_options.refresh_add_fake_v3_keyids=0;
else if(strlen(tok)>0)
add_to_strlist(&opt.keyserver_options.other,tok);
@@ -676,22 +680,37 @@ keyserver_import(STRLIST users)
return rc;
}
-int
-keyserver_import_keyid(u32 *keyid)
+int
+keyserver_import_fprint(const byte *fprint,size_t fprint_len)
{
- STRLIST sl=NULL;
- char key[17];
- int ret;
+ KEYDB_SEARCH_DESC desc;
+
+ memset(&desc,0,sizeof(desc));
+
+ if(fprint_len==16)
+ desc.mode=KEYDB_SEARCH_MODE_FPR16;
+ else if(fprint_len==20)
+ desc.mode=KEYDB_SEARCH_MODE_FPR20;
+ else
+ return -1;
- sprintf(key,"%08lX%08lX",(ulong)keyid[0],(ulong)keyid[1]);
+ memcpy(desc.u.fpr,fprint,fprint_len);
- add_to_strlist(&sl,key);
+ return keyserver_work(GET,NULL,&desc,1);
+}
- ret=keyserver_import(sl);
+int
+keyserver_import_keyid(u32 *keyid)
+{
+ KEYDB_SEARCH_DESC desc;
- free_strlist(sl);
+ memset(&desc,0,sizeof(desc));
- return ret;
+ desc.mode=KEYDB_SEARCH_MODE_LONG_KID;
+ desc.u.kid[0]=keyid[0];
+ desc.u.kid[1]=keyid[1];
+
+ return keyserver_work(GET,NULL,&desc,1);
}
/* code mostly stolen from do_export_stream */