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