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