aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keyserver.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-06-04 16:02:02 +0000
committerWerner Koch <[email protected]>2024-06-04 16:02:02 +0000
commit068ebb6f1eee37d31f5ffb44b7f8069d9ca3f7b8 (patch)
tree611fa23afeb632ad19f9543d95382342f282e4dc /g10/keyserver.c
parentgpg: Rename functions with an "fprint" part to "fpr" (diff)
downloadgnupg-068ebb6f1eee37d31f5ffb44b7f8069d9ca3f7b8.tar.gz
gnupg-068ebb6f1eee37d31f5ffb44b7f8069d9ca3f7b8.zip
gpg: Implement the LDAP AKL method.
* g10/keyserver.c (keyserver_import_mbox): Add arg flags and change callers. (keyserver_import_ldap): Remove. It has always returned a not implemented error since 2.1. * g10/getkey.c (get_pubkey_byname): Repurpose LDAP to do basically the same as KEYSERVER. -- The old LDAP mechanism to locate a server via SRV records has long been gone (since 2014) due to the dropping of the keyserver helpers. The new purpose better reflects reality and can be used in environments where keys are provided by an in-house LDAP server.
Diffstat (limited to 'g10/keyserver.c')
-rw-r--r--g10/keyserver.c88
1 files changed, 3 insertions, 85 deletions
diff --git a/g10/keyserver.c b/g10/keyserver.c
index 83c53a0cf..acb82ef32 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -946,17 +946,17 @@ keyserver_any_configured (ctrl_t ctrl)
/* Import all keys that exactly match MBOX */
-int
+gpg_error_t
keyserver_import_mbox (ctrl_t ctrl, const char *mbox,
unsigned char **fpr, size_t *fprlen,
- struct keyserver_spec *keyserver)
+ struct keyserver_spec *keyserver, unsigned int flags)
{
KEYDB_SEARCH_DESC desc = { 0 };
desc.mode = KEYDB_SEARCH_MODE_MAIL;
desc.u.name = mbox;
- return keyserver_get (ctrl, &desc, 1, keyserver, 0, fpr, fprlen);
+ return keyserver_get (ctrl, &desc, 1, keyserver, flags, fpr, fprlen);
}
@@ -1864,85 +1864,3 @@ keyserver_import_wkd (ctrl_t ctrl, const char *name, unsigned int flags,
xfree (mbox);
return err;
}
-
-
-/* Import a key by name using LDAP */
-int
-keyserver_import_ldap (ctrl_t ctrl,
- const char *name, unsigned char **fpr, size_t *fprlen)
-{
- (void)ctrl;
- (void)name;
- (void)fpr;
- (void)fprlen;
- return gpg_error (GPG_ERR_NOT_IMPLEMENTED); /*FIXME*/
-#if 0
- char *domain;
- struct keyserver_spec *keyserver;
- strlist_t list=NULL;
- int rc,hostlen=1;
- struct srventry *srvlist=NULL;
- int srvcount,i;
- char srvname[MAXDNAME];
-
- /* Parse out the domain */
- domain=strrchr(name,'@');
- if(!domain)
- return GPG_ERR_GENERAL;
-
- domain++;
-
- keyserver=xmalloc_clear(sizeof(struct keyserver_spec));
- keyserver->scheme=xstrdup("ldap");
- keyserver->host=xmalloc(1);
- keyserver->host[0]='\0';
-
- snprintf(srvname,MAXDNAME,"_pgpkey-ldap._tcp.%s",domain);
-
- FIXME("network related - move to dirmngr or drop the code");
- srvcount=getsrv(srvname,&srvlist);
-
- for(i=0;i<srvcount;i++)
- {
- hostlen+=strlen(srvlist[i].target)+1;
- keyserver->host=xrealloc(keyserver->host,hostlen);
-
- strcat(keyserver->host,srvlist[i].target);
-
- if(srvlist[i].port!=389)
- {
- char port[7];
-
- hostlen+=6; /* a colon, plus 5 digits (unsigned 16-bit value) */
- keyserver->host=xrealloc(keyserver->host,hostlen);
-
- snprintf(port,7,":%u",srvlist[i].port);
- strcat(keyserver->host,port);
- }
-
- strcat(keyserver->host," ");
- }
-
- free(srvlist);
-
- /* If all else fails, do the PGP Universal trick of
- ldap://keys.(domain) */
-
- hostlen+=5+strlen(domain);
- keyserver->host=xrealloc(keyserver->host,hostlen);
- strcat(keyserver->host,"keys.");
- strcat(keyserver->host,domain);
-
- append_to_strlist(&list,name);
-
- rc = gpg_error (GPG_ERR_NOT_IMPLEMENTED); /*FIXME*/
- /* keyserver_work (ctrl, KS_GETNAME, list, NULL, */
- /* 0, fpr, fpr_len, keyserver); */
-
- free_strlist(list);
-
- free_keyserver_spec(keyserver);
-
- return rc;
-#endif
-}