Add code for a threaded LDAP access to replace the wrapper process.
[gnupg.git] / dirmngr / ChangeLog
1 2010-07-26  Werner Koch  <wk@g10code.com>
2
3         * dirmngr_ldap.c (print_ldap_entries): Remove special fwrite case
4         for W32 because that is now handles by estream.
5
6 2010-07-25  Werner Koch  <wk@g10code.com>
7
8         * Makefile.am (dirmngr_SOURCES) [!USE_LDAPWRAPPER]: Build
9         ldap-wrapper-ce.
10         * ldap-wrapper-ce.c: New.
11
12         * dirmngr_ldap.c (opt): Remove global variable ...
13         (my_opt_t): ... and declare a type instead.
14         (main): Define a MY_OPT variable and change all references to OPT
15         to this.
16         (set_timeout, print_ldap_entries, fetch_ldap, process_url): Pass
17         MYOPT arg.
18
19 2010-07-24  Werner Koch  <wk@g10code.com>
20
21         * dirmngr_ldap.c (main): Init common subsystems.  Call
22         es_set_binary.
23
24 2010-07-19  Werner Koch  <wk@g10code.com>
25
26         * dirmngr.c: Include ldap-wrapper.h.
27         (launch_reaper_thread): Move code to ...
28         * ldap-wrapper.c (ldap_wrapper_launch_thread): .. here.  Change
29         callers.
30         (ldap_wrapper_thread): Rename to ...
31         (wrapper_thread): this and make local.
32
33         * ldap.c (destroy_wrapper, print_log_line)
34         (read_log_data, ldap_wrapper_thread)
35         (ldap_wrapper_wait_connections, ldap_wrapper_release_context)
36         (ldap_wrapper_connection_cleanup, reader_callback, ldap_wrapper):
37         Factor code out to ...
38         * ldap-wrapper.c: new.
39         (ldap_wrapper): Make public.
40         (read_buffer): Copy from ldap.c.
41         * ldap-wrapper.h: New.
42         * Makefile.am (dirmngr_SOURCES): Add new files.
43
44 2010-07-16  Werner Koch  <wk@g10code.com>
45
46         * http.c, http.h: Remove.
47
48         * dirmngr-err.h: New.
49         * dirmngr.h: Include dirmngr-err.h instead of gpg-error.h
50
51         * cdblib.c: Replace assignments to ERRNO by a call to
52         gpg_err_set_errno.  Include dirmngr-err.h.
53         (cdb_free) [__MINGW32CE__]: Do not use get_osfhandle.
54
55         * dirmngr.c [!HAVE_SIGNAL_H]: Don't include signal.h.
56         (USE_W32_SERVICE): New.  Use this to control the use of the W32
57         service system.
58
59 2010-07-06  Werner Koch  <wk@g10code.com>
60
61         * dirmngr.c (main): Print note on directory name changes.
62
63         Replace almost all uses of stdio by estream.
64
65         * b64dec.c, b64enc.c: Remove.  They are duplicated in ../common/.
66
67 2010-06-28  Werner Koch  <wk@g10code.com>
68
69         * dirmngr_ldap.c (my_i18n_init): Remove.
70         (main): Call i18n_init instead of above function.
71
72         * dirmngr-client.c (my_i18n_init): Remove.
73         (main): Call i18n_init instead of above function.
74
75         * Makefile.am (dirmngr_LDADD): Add ../gl/libgnu.
76         (dirmngr_ldap_LDADD, dirmngr_client_LDADD): Ditto.
77
78 2010-06-09  Werner Koch  <wk@g10code.com>
79
80         * i18n.h: Remove.
81
82         * Makefile.am (no-libgcrypt.c): New rule.
83
84         * exechelp.h: Remove.
85         * exechelp.c: Remove.
86         (dirmngr_release_process): Change callers to use the gnupg func.
87         (dirmngr_wait_process): Likewise.
88         (dirmngr_kill_process): Likewise.  This actually implements it for
89         W32.
90         * ldap.c (ldap_wrapper): s/get_dirmngr_ldap_path/gnupg_module_name/.
91         (ldap_wrapper_thread): Use gnupg_wait_process and adjust for
92         changed semantics.
93         (ldap_wrapper): Replace xcalloc by xtrycalloc.  Replace spawn
94         mechanism.
95
96         * server.c (start_command_handler): Remove assuan_set_log_stream.
97
98         * validate.c: Remove gcrypt.h and ksba.h.
99
100         * ldapserver.c: s/util.h/dirmngr.h/.
101
102         * dirmngr.c (sleep) [W32]: Remove macro.
103         (main): s/sleep/gnupg_sleep/.
104         (pid_suffix_callback): Change arg type.
105         (my_gcry_logger): Remove.
106         (fixed_gcry_pth_init): New.
107         (main): Use it.
108         (FD2INT): Remove.
109
110 2010-06-08  Werner Koch  <wk@g10code.com>
111
112         * misc.h (copy_time): Remove and replace by gnupg_copy_time which
113         allows to set a null date.
114         * misc.c (dump_isotime, get_time, get_isotime, set_time)
115         (check_isotime, add_isotime): Remove and replace all calls by the
116         versions from common/gettime.c.
117
118         * crlcache.c, misc.c, misc.h: s/dirmngr_isotime_t/gnupg_isotime_t/.
119         * server.c, ldap.c: Reorder include directives.
120         * crlcache.h, misc.h: Remove all include directives.
121
122         * certcache.c (cmp_simple_canon_sexp): Remove.
123         (compare_serialno): Rewrite using cmp_simple_canon_sexp from
124         common/sexputil.c
125
126         * error.h: Remove.
127
128         * dirmngr.c: Remove transitional option "--ignore-ocsp-servic-url".
129         (opts): Use ARGPARSE macros.
130         (i18n_init): Remove.
131         (main): Use GnuPG init functions.
132
133         * dirmngr.h: Remove duplicated stuff now taken from ../common.
134
135         * get-path.c, util.h: Remove.
136
137         * Makefile.am: Adjust to GnuPG system.
138         * estream.c, estream.h, estream-printf.c, estream-printf.h: Remove.
139
140 2010-06-07  Werner Koch  <wk@g10code.com>
141
142         * OAUTHORS, ONEWS, ChangeLog.1: New.
143
144         * ChangeLog, Makefile.am, b64dec.c, b64enc.c, cdb.h, cdblib.c
145         * certcache.c, certcache.h, crlcache.c, crlcache.h, crlfetch.c
146         * crlfetch.h, dirmngr-client.c, dirmngr.c, dirmngr.h
147         * dirmngr_ldap.c, error.h, estream-printf.c, estream-printf.h
148         * estream.c, estream.h, exechelp.c, exechelp.h, get-path.c, http.c
149         * http.h, i18n.h, ldap-url.c, ldap-url.h, ldap.c, ldapserver.c
150         * ldapserver.h, misc.c, misc.h, ocsp.c, ocsp.h, server.c, util.h
151         * validate.c, validate.h: Imported from the current SVN of the
152         dirmngr package (only src/).
153
154 2010-03-13  Werner Koch  <wk@g10code.com>
155
156         * dirmngr.c (int_and_ptr_u): New.
157         (pid_suffix_callback): Trick out compiler.
158         (start_connection_thread): Ditto.
159         (handle_connections): Ditto.
160
161 2010-03-09  Werner Koch  <wk@g10code.com>
162
163         * dirmngr.c (set_debug): Allow numerical values.
164
165 2009-12-15  Werner Koch  <wk@g10code.com>
166
167         * dirmngr.c: Add option --ignore-cert-extension.
168         (parse_rereadable_options): Implement.
169         * dirmngr.h (opt): Add IGNORED_CERT_EXTENSIONS.
170         * validate.c (unknown_criticals): Handle ignored extensions.
171
172 2009-12-08  Marcus Brinkmann  <marcus@g10code.de>
173
174         * dirmngr-client.c (start_dirmngr): Convert posix FDs to assuan fds.
175
176 2009-11-25  Marcus Brinkmann  <marcus@g10code.de>
177
178         * server.c (start_command_handler): Use assuan_fd_t and
179         assuan_fdopen on fds.
180
181 2009-11-05  Marcus Brinkmann  <marcus@g10code.de>
182
183         * server.c (start_command_handler): Update use of
184         assuan_init_socket_server.
185         * dirmngr-client.c (start_dirmngr): Update use of
186         assuan_pipe_connect and assuan_socket_connect.
187
188 2009-11-04  Werner Koch  <wk@g10code.com>
189
190         * server.c (register_commands): Add help arg to
191         assuan_register_command.  Change all command comments to strings.
192
193 2009-11-02  Marcus Brinkmann  <marcus@g10code.de>
194
195         * server.c (reset_notify): Take LINE argument, return gpg_error_t.
196
197 2009-10-16  Marcus Brinkmann  <marcus@g10code.com>
198
199         * Makefile.am: (dirmngr_LDADD): Link to $(LIBASSUAN_LIBS) instead
200         of $(LIBASSUAN_PTH_LIBS).
201         * dirmngr.c: Invoke ASSUAN_SYSTEM_PTH_IMPL.
202         (main): Call assuan_set_system_hooks and assuan_sock_init.
203
204 2009-09-22  Marcus Brinkmann  <marcus@g10code.de>
205
206         * dirmngr.c (main): Update to new Assuan interface.
207         * server.c (option_handler, cmd_ldapserver, cmd_isvalid)
208         (cmd_checkcrl, cmd_checkocsp, cmd_lookup, cmd_loadcrl)
209         (cmd_listcrls, cmd_cachecert, cmd_validate): Return gpg_error_t
210         instead int.
211         (register_commands): Likewise for member HANDLER.
212         (start_command_handler): Allocate context with assuan_new before
213         starting server.  Release on error.
214         * dirmngr-client.c (main): Update to new Assuan interface.
215         (start_dirmngr): Allocate context with assuan_new before
216         connecting to server.  Release on error.
217
218 2009-08-12  Werner Koch  <wk@g10code.com>
219
220         * dirmngr-client.c (squid_loop_body): Flush stdout.  Suggested by
221         Philip Shin.
222
223 2009-08-07  Werner Koch  <wk@g10code.com>
224
225         * crlfetch.c (my_es_read): Add explicit check for EOF.
226
227         * http.c (struct http_context_s): Turn IN_DATA and IS_HTTP_0_9 to
228         bit fields.
229         (struct cookie_s): Add CONTENT_LENGTH_VALID and CONTENT_LENGTH.
230         (parse_response): Parse the Content-Length header.
231         (cookie_read): Handle content length.
232         (http_open): Make NEED_HEADER the semi-default.
233
234         * http.h (HTTP_FLAG_IGNORE_CL): New.
235
236 2009-08-04  Werner Koch  <wk@g10code.com>
237
238         * ldap.c (ldap_wrapper_thread): Factor some code out to ...
239         (read_log_data): ... new.  Close the log fd on error.
240         (ldap_wrapper_thread): Delay cleanup until the log fd is closed.
241         (SAFE_PTH_CLOSE): New.  Use it instead of pth_close.
242
243 2009-07-31  Werner Koch  <wk@g10code.com>
244
245         * server.c (cmd_loadcrl): Add option --url.
246         * dirmngr-client.c (do_loadcrl): Make use of --url.
247
248         * crlfetch.c (crl_fetch): Remove HTTP_FLAG_NO_SHUTDOWN.  Add
249         flag HTTP_FLAG_LOG_RESP with active DBG_LOOKUP.
250
251         * http.c: Require estream.  Remove P_ES macro.
252         (write_server): Remove.
253         (my_read_line): Remove.  Replace all callers by es_read_line.
254         (send_request): Use es_asprintf.  Always store the cookie.
255         (http_wait_response): Remove the need to dup the socket.  USe new
256         shutdown flag.
257         * http.h (HTTP_FLAG_NO_SHUTDOWN): Rename to HTTP_FLAG_SHUTDOWN.
258
259         * estream.c, estream.h, estream-printf.c, estream-printf.h: Update
260         from current libestream.  This is provide es_asprintf.
261
262 2009-07-20  Werner Koch  <wk@g10code.com>
263
264         * dirmngr.c (pid_suffix_callback): New.
265         (main): Use log_set_pid_suffix_cb.
266         (start_connection_thread): Put the fd into the tls.
267
268         * ldap.c (ldap_wrapper_thread): Print ldap worker stati.
269         (ldap_wrapper_release_context): Print a debug info.
270         (end_cert_fetch_ldap): Release the reader.  Might fix bug#999.
271
272 2009-06-17  Werner Koch  <wk@g10code.com>
273
274         * util.h: Remove unused dotlock.h.
275
276 2009-05-26  Werner Koch  <wk@g10code.com>
277
278         * ldap.c (ldap_wrapper): Show reader object in diagnostics.
279         * crlcache.c (crl_cache_reload_crl): Ditto.  Change debug messages
280         to regular diagnostics.
281         * dirmngr_ldap.c (print_ldap_entries): Add extra diagnostics.
282
283 2009-04-03  Werner Koch  <wk@g10code.com>
284
285         * dirmngr.h (struct server_local_s): Move back to ...
286         * server.c (struct server_local_s): ... here.
287         (get_ldapservers_from_ctrl): New.
288         * ldapserver.h (ldapserver_iter_begin): Use it.
289
290 2008-10-29  Marcus Brinkmann  <marcus@g10code.de>
291
292         * estream.c (es_getline): Add explicit cast to silence gcc -W
293         warning.
294         * crlcache.c (finish_sig_check): Likewise.
295
296         * dirmngr.c (opts): Add missing initializer to silence gcc
297         -W warning.
298         * server.c (register_commands): Likewise.
299         * dirmngr-client.c (opts): Likewise.
300         * dirmngr_ldap.c (opts): Likewise.
301
302         * dirmngr-client.c (status_cb, inq_cert, data_cb): Change return
303         type to gpg_error_t to silence gcc warning.
304
305 2008-10-21  Werner Koch  <wk@g10code.com>
306
307         * certcache.c (load_certs_from_dir): Accept ".der" files.
308
309         * server.c (get_istrusted_from_client): New.
310         * validate.c (validate_cert_chain): Add new optional arg
311         R_TRUST_ANCHOR.  Adjust all callers
312         * crlcache.c (crl_cache_entry_s): Add fields USER_TRUST_REQ
313         and CHECK_TRUST_ANCHOR.
314         (release_one_cache_entry): Release CHECK_TRUST_ANCHOR.
315         (list_one_crl_entry): Print info about the new fields.
316         (open_dir, write_dir_line_crl): Support the new U-flag.
317         (crl_parse_insert): Add arg R_TRUST_ANCHOR and set it accordingly.
318         (crl_cache_insert): Store trust anchor in entry object.
319         (cache_isvalid): Ask client for trust is needed.
320
321         * crlcache.c (open_dir): Replace xcalloc by xtrycalloc.
322         (next_line_from_file): Ditt.  Add arg to return the gpg error.
323         Change all callers.
324         (update_dir): Replace sprintf and malloc by estream_asprintf.
325         (crl_cache_insert): Ditto.
326         (crl_cache_isvalid): Replace xmalloc by xtrymalloc.
327         (get_auth_key_id): Ditto.
328         (crl_cache_insert): Ditto.
329
330         * crlcache.c (start_sig_check): Remove HAVE_GCRY_MD_DEBUG test.
331         * validate.c (check_cert_sig): Ditto.  Remove workaround for bug
332         in libgcrypt 1.2.
333
334         * estream.c, estream.h, estream-printf.c, estream-printf.h: Update
335         from current libestream (svn rev 61).
336
337 2008-09-30  Marcus Brinkmann  <marcus@g10code.com>
338
339         * get-path.c (get_dirmngr_ldap_path): Revert last change.
340         Instead, use dirmngr_libexecdir().
341         (find_program_at_standard_place): Don't define for now.
342
343 2008-09-30  Marcus Brinkmann  <marcus@g10code.com>
344
345         * get-path.c (dirmngr_cachedir): Make COMP a pointer to const to
346         silence gcc warning.
347         (get_dirmngr_ldap_path): Look for dirmngr_ldap in the installation
348         directory.
349
350 2008-08-06  Marcus Brinkmann  <marcus@g10code.com>
351
352         * dirmngr.c (main): Mark the ldapserverlist-file option as
353         read-only.
354
355 2008-07-31  Werner Koch  <wk@g10code.com>
356
357         * crlcache.c (start_sig_check) [!HAVE_GCRY_MD_DEBUG]: Use
358         gcry_md_start_debug
359
360 2008-06-16  Werner Koch  <wk@g10code.com>
361
362         * get-path.c (w32_commondir): New.
363         (dirmngr_sysconfdir): Use it here.
364         (dirmngr_datadir): Ditto.
365
366 2008-06-12  Marcus Brinkmann  <marcus@g10code.de>
367
368         * Makefile.am (dirmngr_SOURCES): Add ldapserver.h and ldapserver.c.
369         * ldapserver.h, ldapserver.c: New files.
370         * ldap.c: Include "ldapserver.h".
371         (url_fetch_ldap): Use iterator to get session servers as well.
372         (attr_fetch_ldap, start_default_fetch_ldap): Likewise.
373         * dirmngr.c: Include "ldapserver.h".
374         (free_ldapservers_list): Removed.  Change callers to
375         ldapserver_list_free.
376         (parse_ldapserver_file): Use ldapserver_parse_one.
377         * server.c: Include "ldapserver.h".
378         (cmd_ldapserver): New command.
379         (register_commands): Add new command LDAPSERVER.
380         (reset_notify): New function.
381         (start_command_handler): Register reset notify handler.
382         Deallocate session server list.
383         (lookup_cert_by_pattern): Use iterator to get session servers as well.
384         (struct server_local_s): Move to ...
385         * dirmngr.h (struct server_local_s): ... here.  Add new member
386         ldapservers.
387
388 2008-06-10  Werner Koch  <wk@g10code.com>
389
390         Support PEM encoded CRLs.  Fixes bug#927.
391
392         * crlfetch.c (struct reader_cb_context_s): New.
393         (struct file_reader_map_s): Replace FP by new context.
394         (register_file_reader, get_file_reader): Adjust accordingly.
395         (my_es_read): Detect Base64 encoded CRL and decode if needed.
396         (crl_fetch): Pass new context to the callback.
397         (crl_close_reader): Cleanup the new context.
398         * b64dec.c: New.  Taken from GnuPG.
399         * util.h (struct b64state): Add new fields STOP_SEEN and
400         INVALID_ENCODING.
401
402 2008-05-26  Marcus Brinkmann  <marcus@g10code.com>
403
404         * dirmngr.c (main) [HAVE_W32_SYSTEM]: Switch to system
405         configuration on gpgconf related commands, and make all options
406         unchangeable.
407
408 2008-03-25  Marcus Brinkmann  <marcus@g10code.de>
409
410         * dirmngr_ldap.c (print_ldap_entries): Add code alternative for
411         W32 console stdout (unused at this point).
412
413 2008-03-21  Marcus Brinkmann  <marcus@g10code.de>
414
415         * estream.c (ESTREAM_MUTEX_DESTROY): New macro.
416         (es_create, es_destroy): Use it.
417
418 2008-02-21  Werner Koch  <wk@g10code.com>
419
420         * validate.c (check_cert_sig) [HAVE_GCRY_MD_DEBUG]: Use new debug
421         function if available.
422
423         * crlcache.c (abort_sig_check): Mark unused arg.
424
425         * exechelp.c (dirmngr_release_process) [!W32]: Mark unsed arg.
426
427         * validate.c (is_root_cert): New.  Taken from GnuPG.
428         (validate_cert_chain): Use it in place of the simple DN compare.
429
430 2008-02-15  Marcus Brinkmann  <marcus@g10code.de>
431
432         * dirmngr.c (main): Reinitialize assuan log stream if necessary.
433
434         * crlcache.c (update_dir) [HAVE_W32_SYSTEM]: Remove destination
435         file before rename.
436         (crl_cache_insert) [HAVE_W32_SYSTEM]: Remove destination file
437         before rename.
438
439 2008-02-14  Marcus Brinkmann  <marcus@g10code.de>
440
441         * validate.c (check_cert_policy): Use ksba_free instead of xfree.
442         (validate_cert_chain): Likewise.  Free SUBJECT on error.
443         (cert_usage_p): Likewise.
444
445         * crlcache.c (finish_sig_check): Undo last change.
446         (finish_sig_check): Close md.
447         (abort_sig_check): New function.
448         (crl_parse_insert): Use abort_sig_check to clean up.
449
450         * crlcache.c (crl_cache_insert): Clean up CDB on error.
451
452 2008-02-13  Marcus Brinkmann  <marcus@g10code.de>
453
454         * crlcache.c (finish_sig_check): Call gcry_md_stop_debug.
455         * exechelp.h (dirmngr_release_process): New prototype.
456         * exechelp.c (dirmngr_release_process): New function.
457         * ldap.c (ldap_wrapper_thread): Release pid.
458         (destroy_wrapper): Likewise.
459
460         * dirmngr.c (launch_reaper_thread): Destroy tattr.
461         (handle_connections): Likewise.
462
463 2008-02-12  Marcus Brinkmann  <marcus@g10code.de>
464
465         * ldap.c (pth_close) [! HAVE_W32_SYSTEM]: New macro.
466         (struct wrapper_context_s): New member log_ev.
467         (destroy_wrapper): Check FDs for != -1 rather than != 0.  Use
468         pth_close instead of close.  Free CTX->log_ev.
469         (ldap_wrapper_thread): Rewritten to use pth_wait instead of
470         select.  Also use pth_read instead of read and pth_close instead
471         of close.
472         (ldap_wrapper): Initialize CTX->log_ev.
473         (reader_callback): Use pth_close instead of close.
474         * exechelp.c (create_inheritable_pipe) [HAVE_W32_SYSTEM]: Removed.
475         (dirmngr_spawn_process) [HAVE_W32_SYSTEM]: Use pth_pipe instead.
476         * dirmngr_ldap.c [HAVE_W32_SYSTEM]: Include <fcntl.h>.
477         (main) [HAVE_W32_SYSTEM]: Set mode of stdout to binary.
478
479 2008-02-01  Werner Koch  <wk@g10code.com>
480
481         * ldap.c: Remove all ldap headers as they are unused.
482
483         * dirmngr_ldap.c (LDAP_DEPRECATED): New, to have OpenLDAP use the
484         old standard API.
485
486 2008-01-10  Werner Koch  <wk@g10code.com>
487
488         * dirmngr-client.c: New option --local.
489         (do_lookup): Use it.
490
491         * server.c (lookup_cert_by_pattern): Implement local lookup.
492         (return_one_cert): New.
493         * certcache.c (hexsn_to_sexp): New.
494         (classify_pattern, get_certs_bypattern): New.
495
496         * misc.c (unhexify): Allow passing NULL for RESULT.
497         (cert_log_subject): Do not call ksba_free on an unused variable.
498
499 2008-01-02  Marcus Brinkmann  <marcus@g10code.de>
500
501         * Makefile.am (dirmngr_LDADD, dirmngr_ldap_LDADD)
502         (dirmngr_client_LDADD): Add $(LIBICONV).  Reported by Michael
503         Nottebrock.
504
505 2007-12-11  Werner Koch  <wk@g10code.com>
506
507         * server.c (option_handler): New option audit-events.
508         * dirmngr.h (struct server_control_s): Add member AUDIT_EVENTS.
509
510 2007-11-26  Marcus Brinkmann  <marcus@g10code.de>
511
512         * get-path.c (dirmngr_cachedir): Create intermediate directories.
513         (default_socket_name): Use CSIDL_WINDOWS.
514
515 2007-11-21  Werner Koch  <wk@g10code.com>
516
517         * server.c (lookup_cert_by_pattern): Add args SINGLE and CACHE_ONLY.
518         (cmd_lookup): Add options --single and --cache-only.
519
520 2007-11-16  Werner Koch  <wk@g10code.com>
521
522         * certcache.c (load_certs_from_dir): Also log the subject DN.
523         * misc.c (cert_log_subject): New.
524
525 2007-11-14  Werner Koch  <wk@g10code.com>
526
527         * dirmngr-client.c: Replace --lookup-url by --url.
528         (main): Remove extra code for --lookup-url.
529         (do_lookup): Remove LOOKUP_URL arg and use the
530         global option OPT.URL.
531
532         * server.c (has_leading_option): New.
533         (cmd_lookup): Use it.
534
535         * crlfetch.c (fetch_cert_by_url): Use GPG_ERR_INV_CERT_OBJ.
536         (fetch_cert_by_url): Use gpg_error_from_syserror.
537
538 2007-11-14  Moritz  <moritz@gnu.org>  (wk)
539
540         * dirmngr-client.c: New command: --lookup-url <URL>.
541         (do_lookup): New parameter: lookup_url.  If TRUE, include "--url"
542         switch in LOOKUP transaction.
543         (enum): New entry: oLookupUrl.
544         (opts): Likewise.
545         (main): Handle oLookupUrl.  New variable: cmd_lookup_url, set
546         during option parsing, pass to do_lookup() and substitute some
547         occurences of "cmd_lookup" with "cmd_lookup OR cmd_lookup_url".
548         * crlfetch.c (fetch_cert_by_url): New function, uses
549         url_fetch_ldap() to create a reader object and libksba functions
550         to read a single cert from that reader.
551         * server.c (lookup_cert_by_url, lookup_cert_by_pattern): New
552         functions.
553         (cmd_lookup): Moved almost complete code ...
554         (lookup_cert_by_pattern): ... here.
555         (cmd_lookup): Support new optional argument: --url.  Depending on
556         the presence of that switch, call lookup_cert_by_url() or
557         lookup_cert_by_pattern().
558         (lookup_cert_by_url): Heavily stripped down version of
559         lookup_cert_by_pattern(), using fetch_cert_by_url.
560
561 2007-10-24  Marcus Brinkmann  <marcus@g10code.de>
562
563         * exechelp.c (dirmngr_spawn_process): Fix child handles.
564
565 2007-10-05  Marcus Brinkmann  <marcus@g10code.de>
566
567         * dirmngr.h: Include assuan.h.
568         (start_command_handler): Change type of FD to assuan_fd_t.
569         * dirmngr.c: Do not include w32-afunix.h.
570         (socket_nonce): New global variable.
571         (create_server_socket): Use assuan socket wrappers.  Remove W32
572         specific stuff.  Save the server nonce.
573         (check_nonce): New function.
574         (start_connection_thread): Call it.
575         (handle_connections): Change args to assuan_fd_t.
576         * server.c (start_command_handler): Change type of FD to assuan_fd_t.
577
578 2007-09-12  Marcus Brinkmann  <marcus@g10code.de>
579
580         * dirmngr.c (main): Percent escape pathnames in --gpgconf-list output.
581
582 2007-08-27  Moritz Schulte  <moritz@g10code.com>
583
584         * src/Makefile.am (AM_CPPFLAGS): Define DIRMNGR_SOCKETDIR based on
585         $(localstatedir).
586         * src/get-path.c (default_socket_name): Use DIRMNGR_SOCKETDIR
587         instead of hard-coded "/var/run/dirmngr".
588
589 2007-08-16  Werner Koch  <wk@g10code.com>
590
591         * get-path.c (get_dirmngr_ldap_path): Make PATHNAME const.
592
593         * dirmngr.c (my_ksba_hash_buffer): Mark unused arg.
594         (dirmngr_init_default_ctrl): Ditto.
595         (my_gcry_logger): Ditto.
596         * dirmngr-client.c (status_cb): Ditto.
597         * dirmngr_ldap.c (catch_alarm): Ditto.
598         * estream-printf.c (pr_bytes_so_far): Ditto.
599         * estream.c (es_func_fd_create): Ditto.
600         (es_func_fp_create): Ditto.
601         (es_write_hexstring): Ditto.
602         * server.c (cmd_listcrls): Ditto.
603         (cmd_cachecert): Ditto.
604         * crlcache.c (cache_isvalid): Ditto.
605         * ocsp.c (do_ocsp_request): Ditto.
606         * ldap.c (ldap_wrapper_thread): Ditto.
607         * http.c (http_register_tls_callback): Ditto.
608         (connect_server): Ditto.
609         (write_server) [!HTTP_USE_ESTREAM]: Don't build.
610
611 2007-08-14  Werner Koch  <wk@g10code.com>
612
613         * get-path.c (dirmngr_cachedir) [W32]: Use CSIDL_LOCAL_APPDATA.
614
615 2007-08-13  Werner Koch  <wk@g10code.com>
616
617         * dirmngr.c (handle_connections): Use a timeout in the accept
618         function.  Block signals while creating a new thread.
619         (shutdown_pending): Needs to be volatile as also accessed bt the
620         service function.
621         (w32_service_control): Do not use the regular log fucntions here.
622         (handle_tick): New.
623         (main): With system_service in effect use aDaemon as default
624         command.
625         (main) [W32]: Only temporary redefine main for the sake of Emacs's
626         "C-x 4 a".
627
628         * dirmngr-client.c (main) [W32]: Initialize sockets.
629         (start_dirmngr): Use default_socket_name instead of a constant.
630         * Makefile.am (dirmngr_client_SOURCES): Add get-path.c
631
632 2007-08-09  Werner Koch  <wk@g10code.com>
633
634         * dirmngr.c (parse_ocsp_signer): New.
635         (parse_rereadable_options): Set opt.ocsp_signer to this.
636         * dirmngr.h (fingerprint_list_t): New.
637         * ocsp.c (ocsp_isvalid, check_signature, validate_responder_cert):
638         Allow for several default ocscp signers.
639         (ocsp_isvalid): Return GPG_ERR_NO_DATA for an unknwon status.
640
641         * dirmngr-client.c: New option --force-default-responder.
642
643         * server.c (has_option, skip_options): New.
644         (cmd_checkocsp): Add option --force-default-responder.
645         (cmd_isvalid): Ditto.  Also add option --only-ocsp.
646
647         * ocsp.c (ocsp_isvalid): New arg FORCE_DEFAULT_RESPONDER.
648
649         * dirmngr.c: New option --ocsp-max-period.
650         * ocsp.c (ocsp_isvalid): Implement it and take care that a missing
651         next_update is to be ignored.
652
653         * crlfetch.c (my_es_read): New.  Use it instead of es_read.
654
655         * estream.h, estream.c, estream-printf.c: Updated from current
656         libestream SVN.
657
658 2007-08-08  Werner Koch  <wk@g10code.com>
659
660         * crlcache.c (crl_parse_insert): Hack to allow for a missing
661         nextUpdate.
662
663         * dirmngr_ldap.c (print_ldap_entries): Strip the extension from
664         the want_attr.
665
666         * exechelp.c (dirmngr_wait_process): Reworked for clear error
667         semantics.
668         * ldap.c (ldap_wrapper_thread): Adjust for new
669         dirmngr_wait_process semantics.
670
671 2007-08-07  Werner Koch  <wk@g10code.com>
672
673         * get-path.c (default_socket_name) [!W32]: Fixed syntax error.
674
675         * ldap.c (X509CACERT, make_url, fetch_next_cert_ldap): Support
676         x509caCert as used by the Bundesnetzagentur.
677         (ldap_wrapper): Do not pass the prgtram name as the first
678         argument.  dirmngr_spawn_process takes care of that.
679
680 2007-08-04  Marcus Brinkmann  <marcus@g10code.de>
681
682         * dirmngr.h (opt): Add member system_service.
683         * dirmngr.c (opts) [HAVE_W32_SYSTEM]: New entry for option
684         --service.
685         (DEFAULT_SOCKET_NAME): Removed.
686         (service_handle, service_status,
687         w32_service_control) [HAVE_W32_SYSTEM]: New symbols.
688         (main) [HAVE_W32_SYSTEM]: New entry point for --service.  Rename
689         old function to ...
690         (real_main) [HAVE_W32_SYSTEM]: ... this.  Use default_socket_name
691         instead of DEFAULT_SOCKET_NAME, and similar for other paths.
692         Allow colons in Windows socket path name, and implement --service
693         option.
694         * util.h (dirmngr_sysconfdir, dirmngr_libexecdir, dirmngr_datadir,
695         dirmngr_cachedir, default_socket_name): New prototypes.
696         * get-path.c (dirmngr_sysconfdir, dirmngr_libexecdir)
697         (dirmngr_datadir, dirmngr_cachedir, default_socket_name): New
698         functions.
699         (DIRSEP_C, DIRSEP_S): New macros.
700
701 2007-08-03  Marcus Brinkmann  <marcus@g10code.de>
702
703         * get-path.c: Really add the file this time.
704
705 2007-07-31  Marcus Brinkmann  <marcus@g10code.de>
706
707         * crlfetch.c: Include "estream.h".
708         (crl_fetch): Use es_read callback instead a file handle.
709         (crl_close_reader): Use es_fclose instead of fclose.
710         (struct file_reader_map_s): Change type of FP to estream_t.
711         (register_file_reader, crl_fetch, crl_close_reader): Likewise.
712         * ocsp.c: Include "estream.h".
713         (read_response): Change type of FP to estream_t.
714         (read_response, do_ocsp_request): Use es_* variants of I/O
715         functions.
716
717         * http.c: Include <pth.h>.
718         (http_wait_response) [HAVE_W32_SYSTEM]: Use DuplicateHandle.
719         (cookie_read): Use pth_read instead read.
720         (cookie_write): Use pth_write instead write.
721
722 2007-07-30  Marcus Brinkmann  <marcus@g10code.de>
723
724         * ldap-url.c (ldap_str2charray): Fix buglet in ldap_utf8_strchr
725         invocation.
726
727 2007-07-27  Marcus Brinkmann  <marcus@g10code.de>
728
729         * estream.h, estream.c: Update from recent GnuPG.
730
731         * get-path.c: New file.
732         * Makefile.am (dirmngr_SOURCES): Add get-path.c.
733         * util.h (default_homedir, get_dirmngr_ldap_path): New prototypes.
734         * dirmngr.c (main): Use default_homedir().
735         * ldap-url.h: Remove japanese white space (sorry!).
736
737 2007-07-26  Marcus Brinkmann  <marcus@g10code.de>
738
739         * ldap.c (pth_yield): Remove macro.
740
741         * ldap.c (pth_yield) [HAVE_W32_SYSTEM]: Define to Sleep(0).
742
743         * dirmngr_ldap.c [HAVE_W32_SYSTEM]: Do not include <ldap.h>, but
744         <winsock2.h>, <winldap.h> and "ldap-url.h".
745         * ldap.c [HAVE_W32_SYSTEM]: Do not include <ldap.h>, but
746         <winsock2.h> and <winldap.h>.
747
748         * ldap-url.c: Do not include <ldap.h>, but <winsock2.h>,
749         <winldap.h> and "ldap-url.h".
750         (LDAP_P): New macro.
751         * ldap-url.h: New file.
752         * Makefile.am (ldap_url): Add ldap-url.h.
753
754         * Makefile.am (ldap_url): New variable.
755         (dirmngr_ldap_SOURCES): Add $(ldap_url).
756         (dirmngr_ldap_LDADD): Add $(LIBOBJS).
757         * ldap-url.c: New file, excerpted from OpenLDAP.
758         * dirmngr.c (main) [HAVE_W32_SYSTEM]: Avoid the daemonization.
759         * dirmngr_ldap.c: Include "util.h".
760         (main) [HAVE_W32_SYSTEM]: Don't set up alarm.
761         (set_timeout) [HAVE_W32_SYSTEM]: Likewise.
762         * ldap.c [HAVE_W32_SYSTEM]: Add macros for setenv and pth_yield.
763         * no-libgcrypt.h (NO_LIBGCRYPT): Define.
764         * util.h [NO_LIBGCRYPT]: Don't include <gcrypt.h>.
765
766 2007-07-23  Marcus Brinkmann  <marcus@g10code.de>
767
768         * Makefile.am (dirmngr_SOURCES): Add exechelp.h and exechelp.c.
769         * exechelp.h, exechelp.c: New files.
770         * ldap.c: Don't include <sys/wait.h> but "exechelp.h".
771         (destroy_wrapper, ldap_wrapper_thread,
772         ldap_wrapper_connection_cleanup): Use dirmngr_kill_process instead
773         of kill.
774         (ldap_wrapper_thread): Use dirmngr_wait_process instead of
775         waitpid.
776         (ldap_wrapper): Use dirmngr_spawn_process.
777
778 2007-07-20  Marcus Brinkmann  <marcus@g10code.de>
779
780         * certcache.c (cert_cache_lock): Do not initialize statically.
781         (init_cache_lock): New function.
782         (cert_cache_init): Call init_cache_lock.
783
784         * estream.h, estream.c, estream-printf.h, estream-printf.c: New
785         files.
786         * Makefile.am (dirmngr_SOURCES): Add estream.c, estream.h,
787         estream-printf.c, estream-printf.h.
788
789         * http.c: Update to latest version from GnuPG.
790
791         * Makefile.am (cdb_sources)
792         * cdblib.c: Port to windows (backport from tinycdb 0.76).
793
794         * crlcache.c [HAVE_W32_SYSTEM]: Don't include sys/utsname.h.
795         [MKDIR_TAKES_ONE_ARG]: Define mkdir as a macro for such systems.
796         (update_dir, crl_cache_insert) [HAVE_W32_SYSTEM]: Don't get uname.
797         * server.c (start_command_handler) [HAVE_W32_SYSTEM]: Don't log
798         peer credentials.
799
800         * dirmngr.c [HAVE_W32_SYSTEM]: Do not include sys/socket.h or
801         sys/un.h, but ../jnlib/w32-afunix.h.
802         (sleep) [HAVE_W32_SYSTEM]: New macro.
803         (main) [HAVE_W32_SYSTEM]: Don't mess with SIGPIPE.  Use W32 socket
804         API.
805         (handle_signal) [HAVE_W32_SYSTEM]: Deactivate the bunch of the
806         code.
807         (handle_connections) [HAVE_W32_SYSTEM]: don't handle signals.
808
809 2006-11-29  Werner Koch  <wk@g10code.com>
810
811         * dirmngr.c (my_strusage): Use macro for the bug report address
812         and the copyright line.
813         * dirmngr-client.c (my_strusage): Ditto.
814         * dirmngr_ldap.c (my_strusage): Ditto.
815
816         * Makefile.am: Do not link against LIBICONV.
817
818 2006-11-19  Werner Koch  <wk@g10code.com>
819
820         * dirmngr.c: Include i18n.h.
821
822 2006-11-17  Werner Koch  <wk@g10code.com>
823
824         * Makefile.am (dirmngr_LDADD): Use LIBASSUAN_PTH_LIBS.
825
826 2006-11-16  Werner Koch  <wk@g10code.com>
827
828         * server.c (start_command_handler): Replaced
829         assuan_init_connected_socket_server by assuan_init_socket_server_ext.
830
831         * crlcache.c (update_dir): Put a diagnostic into DIR.txt.
832         (open_dir): Detect invalid and duplicate entries.
833         (update_dir): Fixed search for second field.
834
835 2006-10-23  Werner Koch  <wk@g10code.com>
836
837         * dirmngr.c (main): New command --gpgconf-test.
838
839 2006-09-14  Werner Koch  <wk@g10code.com>
840
841         * server.c (start_command_handler): In vebose mode print
842         information about the peer.  This may later be used to restrict
843         certain commands.
844
845 2006-09-12  Werner Koch  <wk@g10code.com>
846
847         * server.c (start_command_handler): Print a more informative hello
848         line.
849         * dirmngr.c: Moved config_filename into the opt struct.
850
851 2006-09-11  Werner Koch  <wk@g10code.com>
852
853         Changed everything to use Assuan with gpg-error codes.
854         * maperror.c: Removed.
855         * server.c (map_to_assuan_status): Removed.
856         * dirmngr.c (main): Set assuan error source.
857         * dirmngr-client.c (main): Ditto.
858
859 2006-09-04  Werner Koch  <wk@g10code.com>
860
861         * crlfetch.c (crl_fetch): Implement HTTP redirection.
862         * ocsp.c (do_ocsp_request): Ditto.
863
864         New HTTP code version taken from gnupg svn release 4236.
865         * http.c (http_get_header): New.
866         (capitalize_header_name, store_header): New.
867         (parse_response): Store headers away.
868         (send_request): Return GPG_ERR_NOT_FOUND if connect_server failed.
869         * http.h: New flag HTTP_FLAG_NEED_HEADER.
870
871 2006-09-01  Werner Koch  <wk@g10code.com>
872
873         * crlfetch.c (register_file_reader, get_file_reader): New.
874         (crl_fetch): Register the file pointer for HTTP.
875         (crl_close_reader): And release it.
876
877         * http.c, http.h: Updated from GnuPG SVN trunk.  Changed all users
878         to adopt the new API.
879         * dirmngr.h: Moved inclusion of jnlib header to ...
880         * util.h: .. here.  This is required becuase http.c includes only
881         a file util.h but makes use of log_foo. Include gcrypt.h so that
882         gcry_malloc et al are declared.
883
884 2006-08-31  Werner Koch  <wk@g10code.com>
885
886         * ocsp.c (check_signature): Make use of the responder id.
887
888 2006-08-30  Werner Koch  <wk@g10code.com>
889
890         * validate.c (check_cert_sig): Workaround for rimemd160.
891         (allowed_ca): Always allow trusted CAs.
892
893         * dirmngr.h (cert_ref_t): New.
894         (struct server_control_s): Add field OCSP_CERTS.
895         * server.c (start_command_handler): Release new field
896         * ocsp.c (release_ctrl_ocsp_certs): New.
897         (check_signature): Store certificates in OCSP_CERTS.
898
899         * certcache.c (find_issuing_cert): Reset error if cert was found
900         by subject.
901         (put_cert): Add new arg FPR_BUFFER.  Changed callers.
902         (cache_cert_silent): New.
903
904         * dirmngr.c (parse_rereadable_options): New options
905         --ocsp-max-clock-skew and --ocsp-current-period.
906         * ocsp.c (ocsp_isvalid): Use them here.
907
908         * ocsp.c (validate_responder_cert): New optional arg signer_cert.
909         (check_signature_core): Ditto.
910         (check_signature): Use the default signer certificate here.
911
912 2006-06-27  Werner Koch  <wk@g10code.com>
913
914         * dirmngr-client.c (inq_cert): Take care of SENDCERT_SKI.
915
916 2006-06-26  Werner Koch  <wk@g10code.com>
917
918         * crlcache.c (lock_db_file): Count open files when needed.
919         (find_entry): Fixed deleted case.
920
921 2006-06-23  Werner Koch  <wk@g10code.com>
922
923         * misc.c (cert_log_name): New.
924
925         * certcache.c (load_certs_from_dir): Also print certificate name.
926         (find_cert_bysn): Release ISSDN.
927
928         * validate.h: New VALIDATE_MODE_CERT.
929         * server.c (cmd_validate): Use it here so that no policy checks
930         are done.  Try to validated a cached copy of the target.
931
932         * validate.c (validate_cert_chain): Implement a validation cache.
933         (check_revocations): Print more diagnostics.  Actually use the
934         loop variable and not the head of the list.
935         (validate_cert_chain): Do not check revocations of CRL issuer
936         certificates in plain CRL check mode.
937         * ocsp.c (ocsp_isvalid): Make sure it is reset for a status of
938         revoked.
939
940 2006-06-22  Werner Koch  <wk@g10code.com>
941
942         * validate.c (cert_use_crl_p): New.
943         (cert_usage_p): Add a mode 6 for CRL signing.
944         (validate_cert_chain): Check that the certificate may be used for
945         CRL signing.  Print a note when not running as system daemon.
946         (validate_cert_chain): Reduce the maximum depth from 50 to 10.
947
948         * certcache.c (find_cert_bysn): Minor restructuring
949         (find_cert_bysubject): Ditto.  Use get_cert_local when called
950         without KEYID.
951         * crlcache.c (get_crlissuer_cert_bysn): Removed.
952         (get_crlissuer_cert): Removed.
953         (crl_parse_insert): Use find_cert_bysubject and find_cert_bysn
954         instead of the removed functions.
955
956 2006-06-19  Werner Koch  <wk@g10code.com>
957
958         * certcache.c (compare_serialno): Silly me. Using 0 as true is
959         that hard; tsss. Fixed call cases except for the only working one
960         which are both numbers of the same length.
961
962 2006-05-15  Werner Koch  <wk@g10code.com>
963
964         * crlfetch.c (crl_fetch): Use no-shutdown flag for HTTP.  This
965         seems to be required for "IBM_HTTP_Server/2.0.47.1 Apache/2.0.47
966         (Unix)".
967
968         * http.c (parse_tuple): Set flag to to indicate no value.
969         (build_rel_path): Take care of it.
970
971         * crlcache.c (crl_cache_reload_crl): Also iterate over all names
972         within a DP.
973
974 2005-09-28  Marcus Brinkmann  <marcus@g10code.de>
975
976         * Makefile.am (dirmngr_LDADD): Add @LIBINTL@ and @LIBICONV@.
977         (dirmngr_ldap_LDADD): Likewise.
978         (dirmngr_client_LDADD): Likewise.
979
980 2005-09-12  Werner Koch  <wk@g10code.com>
981
982         * dirmngr.c: Fixed description to match the one in gpgconf.
983
984 2005-06-15  Werner Koch  <wk@g10code.com>
985
986         * server.c (cmd_lookup): Take care of NO_DATA which might get
987         returned also by start_cert_fetch().
988
989 2005-04-20  Werner Koch  <wk@g10code.com>
990
991         * ldap.c (ldap_wrapper_wait_connections): Set a shutdown flag.
992         (ldap_wrapper_thread): Handle shutdown in a special way.
993
994 2005-04-19  Werner Koch  <wk@g10code.com>
995
996         * server.c (get_cert_local, get_issuing_cert_local)
997         (get_cert_local_ski): Bail out if called without a local context.
998
999 2005-04-18  Werner Koch  <wk@g10code.com>
1000
1001         * certcache.c (find_issuing_cert): Fixed last resort method which
1002         should be finding by subject and not by issuer. Try to locate it
1003         also using the keyIdentifier method.  Improve error reporting.
1004         (cmp_simple_canon_sexp): New.
1005         (find_cert_bysubject): New.
1006         (find_cert_bysn): Ask back to the caller before trying an extarnl
1007         lookup.
1008         * server.c (get_cert_local_ski): New.
1009         * crlcache.c (crl_parse_insert): Also try to locate issuer
1010         certificate using the keyIdentifier.  Improved error reporting.
1011
1012 2005-04-14  Werner Koch  <wk@g10code.com>
1013
1014         * ldap.c (start_cert_fetch_ldap): Really return ERR.
1015
1016 2005-03-17  Werner Koch  <wk@g10code.com>
1017
1018         * http.c (parse_response): Changed MAXLEN and LEN to size_t to
1019         match the requirement of read_line.
1020         * http.h (http_context_s): Ditto for BUFFER_SIZE.
1021
1022 2005-03-15  Werner Koch  <wk@g10code.com>
1023
1024         * ldap.c: Included time.h.  Reported by Bernhard Herzog.
1025
1026 2005-03-09  Werner Koch  <wk@g10code.com>
1027
1028         * dirmngr.c: Add a note to the help listing check the man page for
1029         other options.
1030
1031 2005-02-01  Werner Koch  <wk@g10code.com>
1032
1033         * crlcache.c (crl_parse_insert): Renamed a few variables and
1034         changed diagnostic strings for clarity.
1035         (get_issuer_cert): Renamed to get_crlissuer_cert. Try to locate
1036         the certificate from the cache using the subject name.  Use new
1037         fetch function.
1038         (get_crlissuer_cert_bysn): New.
1039         (crl_parse_insert): Use it here.
1040         * crlfetch.c (ca_cert_fetch): Changed interface.
1041         (fetch_next_ksba_cert): New.
1042         * ldap.c (run_ldap_wrapper): Add arg MULTI_MODE.  Changed all
1043         callers.
1044         (start_default_fetch_ldap): New
1045         * certcache.c (get_cert_bysubject): New.
1046         (clean_cache_slot, put_cert): Store the subject DN if available.
1047         (MAX_EXTRA_CACHED_CERTS): Increase limit of cachable certificates
1048         to 1000.
1049         (find_cert_bysn): Loop until a certificate with a matching S/N has
1050         been found.
1051
1052         * dirmngr.c (main): Add honor-http-proxy to the gpgconf list.
1053
1054 2005-01-31  Werner Koch  <wk@g10code.com>
1055
1056         * ldap.c: Started to work on support for userSMIMECertificates.
1057
1058         * dirmngr.c (main): Make sure to always pass a server control
1059         structure to the caching functions.  Reported by Neil Dunbar.
1060
1061 2005-01-05  Werner Koch  <wk@g10code.com>
1062
1063         * dirmngr-client.c (read_pem_certificate): Skip trailing percent
1064         escaped linefeeds.
1065
1066 2005-01-03  Werner Koch  <wk@g10code.com>
1067
1068         * dirmngr-client.c (read_pem_certificate): New.
1069         (read_certificate): Divert to it depending on pem option.
1070         (squid_loop_body): New.
1071         (main): New options --pem and --squid-mode.
1072
1073 2004-12-17  Werner Koch  <wk@g10code.com>
1074
1075         * dirmngr.c (launch_ripper_thread): Renamed to launch_reaper_thread.
1076         (shutdown_reaper): New.  Use it for --server and --daemon.
1077         * ldap.c (ldap_wrapper_wait_connections): New.
1078
1079 2004-12-17  Werner Koch  <wk@g10code.com>
1080
1081         * Makefile.am (dirmngr_ldap_LDADD): Adjusted for new LDAP checks.
1082
1083 2004-12-16  Werner Koch  <wk@g10code.com>
1084
1085         * ldap.c (ldap_wrapper): Peek on the output to detect empty output
1086         early.
1087
1088 2004-12-15  Werner Koch  <wk@g10code.com>
1089
1090         * ldap.c (ldap_wrapper): Print a diagnostic after forking for the
1091         ldap wrapper.
1092         * certcache.h (find_cert_bysn): Add this prototype.
1093         * crlcache.c (start_sig_check): Write CRL hash debug file.
1094         (finish_sig_check): Dump the signer's certificate.
1095         (crl_parse_insert): Try to get the issuing cert by authKeyId.
1096         Moved certificate retrieval after item processing.
1097
1098 2004-12-13  Werner Koch  <wk@g10code.com>
1099
1100         * dirmngr_ldap.c (catch_alarm, set_timeout): new.
1101         (main): Install alarm handler. Add new option --only-search-timeout.
1102         (print_ldap_entries, fetch_ldap): Use set_timeout ();
1103         * dirmngr.h: Make LDAPTIMEOUT a simple unsigned int.  Change all
1104         initializations.
1105         * ldap.c (start_cert_fetch_ldap, run_ldap_wrapper): Pass timeout
1106         option to the wrapper.
1107         (INACTIVITY_TIMEOUT): Depend on LDAPTIMEOUT.
1108         (run_ldap_wrapper): Add arg IGNORE_TIMEOUT.
1109         (ldap_wrapper_thread): Check for special timeout exit code.
1110
1111         * dirmngr.c: Workaround a typo in gpgconf for
1112         ignore-ocsp-service-url.
1113
1114 2004-12-10  Werner Koch  <wk@g10code.com>
1115
1116         * ldap.c (url_fetch_ldap): Use TMP and not a HOST which is always
1117         NULL.
1118         * misc.c (host_and_port_from_url): Fixed bad encoding detection.
1119
1120 2004-12-03  Werner Koch  <wk@g10code.com>
1121
1122         * crlcache.c (crl_cache_load): Re-implement it.
1123
1124         * dirmngr-client.c: New command --load-crl
1125         (do_loadcrl): New.
1126
1127         * dirmngr.c (parse_rereadable_options, main): Make --allow-ocsp,
1128         --ocsp-responder, --ocsp-signer and --max-replies re-readable.
1129
1130         * ocsp.c (check_signature): try to get the cert from the cache
1131         first.
1132         (ocsp_isvalid): Print the next and this update times on time
1133         conflict.
1134
1135         * certcache.c (load_certs_from_dir): Print the fingerprint for
1136         trusted certificates.
1137         (get_cert_byhexfpr): New.
1138         * misc.c (get_fingerprint_hexstring_colon): New.
1139
1140 2004-12-01  Werner Koch  <wk@g10code.com>
1141
1142         * Makefile.am (dirmngr_LDADD): Don't use LDAP_LIBS.
1143
1144         * validate.c (validate_cert_chain): Fixed test; as written in the
1145         comment we want to do this only in daemon mode.  For clarity
1146         reworked by using a linked list of certificates and include root
1147         and tragte certificate.
1148         (check_revocations): Likewise.  Introduced a recursion sentinel.
1149
1150 2004-11-30  Werner Koch  <wk@g10code.com>
1151
1152         * crlfetch.c (ca_cert_fetch, crl_fetch_default): Do not use the
1153         binary prefix as this will be handled in the driver.
1154
1155         * dirmngr_ldap.c: New option --log-with-pid.
1156         (fetch_ldap): Handle LDAP_NO_SUCH_OBJECT.
1157         * ldap.c (run_ldap_wrapper, start_cert_fetch_ldap): Use new log
1158         option.
1159
1160
1161 2004-11-25  Werner Koch  <wk@g10code.com>
1162
1163         * Makefile.am (dirmngr_ldap_CFLAGS): Added GPG_ERROR_CFLAGS.
1164         Noted by Bernhard Herzog.
1165
1166 2004-11-24  Werner Koch  <wk@g10code.com>
1167
1168         * ldap.c (ldap_wrapper): Fixed default name of the ldap wrapper.
1169
1170         * b64enc.c (b64enc_start, b64enc_finish): Use standard strdup/free
1171         to manage memory.
1172
1173         * dirmngr.c: New options --ignore-http-dp, --ignore-ldap-dp and
1174         --ignore-ocsp-service-url.
1175         * crlcache.c (crl_cache_reload_crl): Implement them.
1176         * ocsp.c (ocsp_isvalid): Ditto.
1177
1178 2004-11-23  Werner Koch  <wk@g10code.com>
1179
1180         * ldap.c (ldap_wrapper_thread, reader_callback, ldap_wrapper):
1181         Keep a timestamp and terminate the wrapper after some time of
1182         inactivity.
1183
1184         * dirmngr-client.c (do_lookup): New.
1185         (main): New option --lookup.
1186         (data_cb): New.
1187         * b64enc.c: New. Taken from GnuPG 1.9.
1188         * no-libgcrypt.c (gcry_strdup): Added.
1189
1190         * ocsp.c (ocsp_isvalid): New arg CERT and lookup the issuer
1191         certificate using the standard methods.
1192
1193         * server.c (cmd_lookup): Truncation is now also an indication for
1194         error.
1195         (cmd_checkocsp): Implemented.
1196
1197         * dirmngr_ldap.c (fetch_ldap): Write an error marker for a
1198         truncated search.
1199         * ldap.c (add_server_to_servers): Reactivated.
1200         (url_fetch_ldap): Call it here and try all configured servers in
1201         case of a a failed lookup.
1202         (fetch_next_cert_ldap): Detect the truncation error flag.
1203         * misc.c (host_and_port_from_url, remove_percent_escapes): New.
1204
1205 2004-11-22  Werner Koch  <wk@g10code.com>
1206
1207         * dirmngr_ldap.c (main): New option --proxy.
1208         * ocsp.c (do_ocsp_request): Take care of opt.disable_http.
1209         * crlfetch.c (crl_fetch): Honor the --honor-http-proxy variable.
1210         (crl_fetch): Take care of  opt.disable_http and disable_ldap.
1211         (crl_fetch_default, ca_cert_fetch, start_cert_fetch):
1212         * ldap.c (run_ldap_wrapper): New arg PROXY.
1213         (url_fetch_ldap, attr_fetch_ldap, start_cert_fetch_ldap): Pass it.
1214
1215         * http.c (http_open_document): Add arg PROXY.
1216         (http_open): Ditto.
1217         (send_request): Ditto and implement it as an override.
1218
1219         * ocsp.c (validate_responder_cert): Use validate_cert_chain.
1220
1221         * Makefile.am (AM_CPPFLAGS): Add macros for a few system
1222         directories.
1223         * dirmngr.h (opt): New members homedir_data, homedir_cache,
1224         ldap_wrapper_program, system_daemon, honor_http_proxy, http_proxy,
1225         ldap_proxy, only_ldap_proxy, disable_ldap, disable_http.
1226         * dirmngr.c (main): Initialize new opt members HOMEDIR_DATA and
1227         HOMEDIR_CACHE.
1228         (parse_rereadable_options): New options --ldap-wrapper-program,
1229         --http-wrapper-program, --disable-ldap, --disable-http,
1230         --honor-http-proxy, --http-proxy, --ldap-proxy, --only-ldap-proxy.
1231         (reread_configuration): New.
1232
1233         * ldap.c (ldap_wrapper): Use the correct name for the wrapper.
1234
1235         * crlcache.c (DBDIR_D): Make it depend on opt.SYSTEM_DAEMON.
1236         (cleanup_cache_dir, open_dir, update_dir, make_db_file_name)
1237         (crl_cache_insert, create_directory_if_needed): Use opt.HOMEDIR_CACHE
1238
1239         * validate.c (check_revocations): New.
1240         * crlcache.c (crl_cache_isvalid): Factored most code out to
1241         (cache_isvalid): .. new.
1242         (crl_cache_cert_isvalid): New.
1243         * server.c (cmd_checkcrl): Cleaned up by using this new function.
1244         (reload_crl): Moved to ..
1245         * crlcache.c (crl_cache_reload_crl): .. here and made global.
1246
1247         * certcache.c (cert_compute_fpr): Renamed from computer_fpr and
1248         made global.
1249         (find_cert_bysn): Try to lookup missing certs.
1250         (cert_cache_init): Intialize using opt.HOMEDIR_DATA.
1251
1252
1253 2004-11-19  Werner Koch  <wk@g10code.com>
1254
1255         * dirmngr-client.c (status_cb): New.  Use it in very verbose mode.
1256
1257         * server.c (start_command_handler): Malloc the control structure
1258         and properly release it.  Removed the primary_connection
1259         hack. Cleanup running wrappers.
1260         (dirmngr_status): Return an error code.
1261         (dirmngr_tick): Return an error code and detect a
1262         cancellation. Use wall time and not CPU time.
1263         * validate.c (validate_cert_chain): Add CTRL arg and changed callers.
1264         * crlcache.c (crl_cache_isvalid):
1265         * crlfetch.c (ca_cert_fetch, start_cert_fetch, crl_fetch_default)
1266         (crl_fetch): Ditto.
1267         * ldap.c (ldap_wrapper, run_ldap_wrapper, url_fetch_ldap)
1268         (attr_fetch_ldap, start_cert_fetch_ldap): Ditto.
1269         (ldap_wrapper_release_context): Reset the stored CTRL.
1270         (reader_callback): Periodically call dirmngr_tick.
1271         (ldap_wrapper_release_context): Print an error message for read
1272         errors.
1273         (ldap_wrapper_connection_cleanup): New.
1274
1275 2004-11-18  Werner Koch  <wk@g10code.com>
1276
1277         * dirmngr.c (main): Do not cd / if not running detached.
1278
1279         * dirmngr-client.c: New options --cache-cert and --validate.
1280         (do_cache, do_validate): New.
1281         * server.c (cmd_cachecert, cmd_validate): New.
1282
1283         * crlcache.c (get_issuer_cert): Make use of the certificate cache.
1284         (crl_parse_insert): Validate the issuer certificate.
1285
1286         * dirmngr.c (handle_signal): Reinitialize the certificate cache on
1287         a HUP.
1288         (struct opts): Add --homedir to enable the already implemented code.
1289         (handle_signal): Print stats on SIGUSR1.
1290
1291         * certcache.c (clean_cache_slot, cert_cache_init)
1292         (cert_cache_deinit): New.
1293         (acquire_cache_read_lock, acquire_cache_write_lock)
1294         (release_cache_lock): New.  Use them where needed.
1295         (put_cert): Renamed from put_loaded_cert.
1296         (cache_cert): New.
1297         (cert_cache_print_stats): New.
1298         (compare_serialno): Fixed.
1299
1300 2004-11-16  Werner Koch  <wk@g10code.com>
1301
1302         * Makefile.am (AM_CPPFLAGS): Define DIRMNGR_SYSCONFDIR and
1303         DIRMNGR_LIBEXECDIR.
1304
1305         * misc.c (dump_isotime, dump_string, dump_cert): New.  Taken from
1306         gnupg 1.9.
1307         (dump_serial): New.
1308
1309 2004-11-15  Werner Koch  <wk@g10code.com>
1310
1311         * validate.c: New. Based on gnupg's certchain.c
1312
1313         * ldap.c (get_cert_ldap): Removed.
1314         (read_buffer): New.
1315         (start_cert_fetch_ldap, fetch_next_cert_ldap)
1316         (end_cert_fetch_ldap): Rewritten to make use of the ldap wrapper.
1317
1318 2004-11-12  Werner Koch  <wk@g10code.com>
1319
1320         * http.c (insert_escapes): Print the percent sign too.
1321
1322         * dirmngr-client.c (inq_cert): Ignore "SENDCERT" and
1323         "SENDISSUERCERT".
1324
1325         * server.c (do_get_cert_local): Limit the length of a retruned
1326         certificate.  Return NULL without an error if an empry value has
1327         been received.
1328
1329         * crlfetch.c (ca_cert_fetch): Use the ksba_reader_object.
1330         (setup_funopen, fun_reader, fun_closer): Removed.
1331
1332         * crlcache.c (get_issuer_cert): Adjust accordingly.
1333
1334         * ldap.c (attr_fetch_ldap_internal, attr_fetch_fun_closer)
1335         (attr_fetch_fun_reader, url_fetch_ldap_internal)
1336         (get_attr_from_result_ldap): Removed.
1337         (destroy_wrapper, print_log_line, ldap_wrapper_thread)
1338         (ldap_wrapper_release_context, reader_callback, ldap_wrapper)
1339         (run_ldap_wrapper): New.
1340         (url_fetch_ldap): Make use of the new ldap wrapper and return a
1341         ksba reader object instead of a stdio stream.
1342         (attr_fetch_ldap): Ditto.
1343         (make_url, escape4url): New.
1344
1345 2004-11-11  Werner Koch  <wk@g10code.com>
1346
1347         * dirmngr.c (launch_ripper_thread): New.
1348         (main): Start it wheere appropriate.  Always ignore SIGPIPE.
1349         (start_connection_thread): Maintain a connection count.
1350         (handle_signal, handle_connections): Use it here instead of the
1351         thread count.
1352
1353         * crlcache.c (crl_cache_insert): Changed to use ksba reader
1354         object.  Changed all callers to pass this argument.
1355
1356 2004-11-08  Werner Koch  <wk@g10code.com>
1357
1358         * dirmngr_ldap.c: New.
1359
1360         * crlcache.c (crl_cache_init): Don't return a cache object but
1361         keep it module local.  We only need one.
1362         (crl_cache_deinit): Don't take cache object but work on existing
1363         one.
1364         (get_current_cache): New.
1365         (crl_cache_insert, crl_cache_list, crl_cache_load): Use the global
1366         cache object and removed the cache arg.  Changed all callers.
1367
1368         * dirmngr-client.c: New option --ping.
1369
1370         * dirmngr.c (main): New option --daemon. Initialize PTH.
1371         (handle_connections, start_connection_thread): New.
1372         (handle_signal): New.
1373         (parse_rereadable_options): New. Changed main to make use of it.
1374         (set_debug): Don't bail out on invalid debug levels.
1375         (main): Init the crl_chache for server and daemon mode.
1376
1377         * server.c (start_command_handler): New arg FD.  Changed callers.
1378
1379 2004-11-06  Werner Koch  <wk@g10code.com>
1380
1381         * server.c (map_assuan_err): Factored out to ..
1382         * maperror.c: .. new file.
1383         * util.h: Add prototype
1384
1385 2004-11-05  Werner Koch  <wk@g10code.com>
1386
1387         * no-libgcrypt.c: New, used as helper for dirmngr-client which
1388         does not need libgcrypt proper but jnlib references the memory
1389         functions.  Taken from gnupg 1.9.12.
1390
1391         * dirmngr.h: Factored i18n and xmalloc code out to ..
1392         * i18n.h, util.h: .. New.
1393
1394         * dirmngr-client.c: New.  Some code taken from gnupg 1.9.12.
1395         * Makefile.am (bin_PROGRAMS) Add dirmngr-client.
1396
1397 2004-11-04  Werner Koch  <wk@g10code.com>
1398
1399         * src/server.c (get_fingerprint_from_line, cmd_checkcrl)
1400         (cmd_checkocsp): New.
1401         (register_commands): Register new commands.
1402         (inquire_cert_and_load_crl): Factored most code out to ..
1403         (reload_crl): .. new function.
1404         * src/certcache.h, src/certcache.c: New.
1405         * src/Makefile.am (dirmngr_SOURCES): Add new files.
1406
1407 2004-11-04  Werner Koch  <wk@g10code.com>
1408
1409         Please note that earlier entries are found in the top level
1410         ChangeLog.
1411         [Update after merge with GnuPG: see ./ChangeLog.1]
1412
1413
1414  Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010 g10 Code GmbH
1415
1416  This file is free software; as a special exception the author gives
1417  unlimited permission to copy and/or distribute it, with or without
1418  modifications, as long as this notice is preserved.
1419
1420  This file is distributed in the hope that it will be useful, but
1421  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1422  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.