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