aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyserver.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2006-02-21 16:09:09 +0000
committerDavid Shaw <[email protected]>2006-02-21 16:09:09 +0000
commit0eb4e93bd4ba18b8326a946403fde32f7429efbd (patch)
treeb843c5acd6409c88bc06eaef41485fad907c1868 /g10/keyserver.c
parent* keyserver.c (parse_keyserver_uri): Include the scheme in the uri (diff)
downloadgnupg-0eb4e93bd4ba18b8326a946403fde32f7429efbd.tar.gz
gnupg-0eb4e93bd4ba18b8326a946403fde32f7429efbd.zip
* gpgv.c: Stub keyserver_import_ldap.
* keyserver-internal.h, keyserver.c (keyserver_import_ldap): Import using the PGP Universal trick of asking ldap://keys.(maildomain) for the key.
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r--g10/keyserver.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c
index af65ad365..240ea99e6 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -2016,3 +2016,38 @@ keyserver_import_name(const char *name)
return rc;
}
+
+/* Use the PGP Universal trick of asking ldap://keys.(maildomain) for
+ the key. */
+int
+keyserver_import_ldap(const char *name)
+{
+ char *domain;
+ struct keyserver_spec *keyserver;
+ STRLIST list=NULL;
+ int rc;
+
+ append_to_strlist(&list,name);
+
+ /* Parse out the domain */
+ domain=strrchr(name,'@');
+ if(!domain)
+ return G10ERR_GENERAL;
+
+ domain++;
+
+ keyserver=xmalloc_clear(sizeof(struct keyserver_spec));
+
+ keyserver->scheme=xstrdup("ldap");
+ keyserver->host=xmalloc(5+strlen(domain)+1);
+ strcpy(keyserver->host,"keys.");
+ strcat(keyserver->host,domain);
+
+ rc=keyserver_work(KS_GETNAME,list,NULL,0,keyserver);
+
+ free_strlist(list);
+
+ free_keyserver_spec(keyserver);
+
+ return rc;
+}