aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-dirmngr.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2008-06-12 14:24:46 +0000
committerMarcus Brinkmann <[email protected]>2008-06-12 14:24:46 +0000
commit04e965c7fc32ce8f2c883a7e19294eb34bb50534 (patch)
tree127dc5deee10efde7bdd6b7b34ece3b489936ec3 /sm/call-dirmngr.c
parentRemoved unused variable. (diff)
downloadgnupg-04e965c7fc32ce8f2c883a7e19294eb34bb50534.tar.gz
gnupg-04e965c7fc32ce8f2c883a7e19294eb34bb50534.zip
sm/
2008-06-12 Marcus Brinkmann <[email protected]> * gpgsm.h (struct keyserver_spec): New struct. (opt): Add member keyserver. * gpgsm.c (keyserver_list_free, parse_keyserver_line): New functions. (main): Implement --keyserver option. * call-dirmngr.c (prepare_dirmngr): Send LDAPSERVER commands. tools/ 2008-06-12 Marcus Brinkmann <[email protected]> * gpgconf-comp.c (gc_options_gpgsm): Add option keyserver.
Diffstat (limited to 'sm/call-dirmngr.c')
-rw-r--r--sm/call-dirmngr.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sm/call-dirmngr.c b/sm/call-dirmngr.c
index 63083cc92..35e937956 100644
--- a/sm/call-dirmngr.c
+++ b/sm/call-dirmngr.c
@@ -140,6 +140,8 @@ get_membuf (struct membuf *mb, size_t *len)
static void
prepare_dirmngr (ctrl_t ctrl, assuan_context_t ctx, gpg_error_t err)
{
+ struct keyserver_spec *server;
+
if (!ctrl->dirmngr_seen)
{
ctrl->dirmngr_seen = 1;
@@ -152,6 +154,25 @@ prepare_dirmngr (ctrl_t ctrl, assuan_context_t ctx, gpg_error_t err)
}
audit_log_ok (ctrl->audit, AUDIT_DIRMNGR_READY, err);
}
+
+ server = opt.keyserver;
+ while (server)
+ {
+ char line[ASSUAN_LINELENGTH];
+ char *user = server->user ? server->user : "";
+ char *pass = server->pass ? server->pass : "";
+ char *base = server->base ? server->base : "";
+
+ snprintf (line, DIM (line) - 1, "LDAPSERVER %s:%i:%s:%s:%s",
+ server->host, server->port, user, pass, base);
+ line[DIM (line) - 1] = 0;
+
+ err = assuan_transact (ctx, line, NULL, NULL, NULL, NULL, NULL, NULL);
+ if (gpg_err_code (err) == GPG_ERR_UNKNOWN_OPTION)
+ err = 0; /* Allow the use of old dirmngr versions. */
+
+ server = server->next;
+ }
}