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