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