Fixed bug#907.
[gnupg.git] / sm / ChangeLog
1 2008-05-06  Werner Koch  <wk@g10code.com>
2
3         * keylist.c (list_external_keys): Ignore NOT FOUND error code.
4         This is bug#907.
5
6 2008-04-23  Werner Koch  <wk@g10code.com>
7
8         * certchain.c (find_up): Make correct C89 code.  Declare variable
9         at the top of the block.  Reported by Alain Guibert.
10
11 2008-04-09  Werner Koch  <wk@g10code.com>
12
13         * verify.c (gpgsm_verify): Print the message hash values on error.
14
15 2008-03-31  Werner Koch  <wk@g10code.com>
16
17         * call-dirmngr.c (start_dirmngr): Use log_info instead of
18         log_error when falling back to start dirmngr.
19
20 2008-03-20  Werner Koch  <wk@g10code.com>
21
22         * certlist.c (gpgsm_add_to_certlist): Always save the first
23         subject and issuer.  Initialize issuer with issuer and not with
24         subject.
25         (same_subject_issuer): Set issuer2 to issuer and not to subject.
26
27 2008-03-17  Werner Koch  <wk@g10code.com>
28
29         * certdump.c (my_funopen_hook_size_t): New.
30         (format_name_writer): Use it.
31
32 2008-03-13  Werner Koch  <wk@g10code.com>
33
34         * certdump.c (gpgsm_fpr_and_name_for_status): Fix signed/unsigned
35         char issue.
36         (gpgsm_format_keydesc): Remove superfluous test.  Add expire date
37         to the prompt.
38
39 2008-02-18  Werner Koch  <wk@g10code.com>
40
41         * certchain.c (gpgsm_is_root_cert): Factor code out to ...
42         (is_root_cert): New.  Extend test for self-issued certificates
43         signed by other CAs.
44         (do_validate_chain, gpgsm_basic_cert_check)
45         (gpgsm_walk_cert_chain): Use it here.
46
47         * gpgsm.c: Add option --no-common-certs-import.
48         
49         * certchain.c (find_up_dirmngr, find_up, do_validate_chain)
50         (check_cert_policy): Be more silent with --quiet.
51
52         * gpgsm.c: Add option --disable-dirmngr.
53         * gpgsm.h (opt): Add field DISABLE_DIRMNGR.
54         * call-dirmngr.c (start_dirmngr): Implement option.
55
56 2008-02-14  Werner Koch  <wk@g10code.com>
57
58         * server.c (option_handler): Add option allow-pinentry-notify.
59         (gpgsm_proxy_pinentry_notify): New.
60         * call-agent.c (default_inq_cb): New.
61         (gpgsm_agent_pksign, gpgsm_scd_pksign, gpgsm_agent_readkey) 
62         (gpgsm_agent_istrusted, gpgsm_agent_marktrusted) 
63         (gpgsm_agent_passwd, gpgsm_agent_get_confirmation): Call it.
64         (struct cipher_parm_s, struct genkey_parm_s): Add field CTRL.
65         (inq_ciphertext_cb): Test keyword and fallback to default_inq_cb.
66         (inq_genkey_parms): Ditto.
67         (start_agent): Tell agent to send us the pinentry notifications.
68
69 2008-02-13  Werner Koch  <wk@g10code.com>
70
71         * call-dirmngr.c (gpgsm_dirmngr_lookup): Add arg CACHE_ONLY.
72         * keylist.c (list_external_keys): Pass false for new arg.
73         * certchain.c (find_up_dirmngr): New.
74         (find_up): Also try to read from the dirmngr cache.
75         (find_up, find_up_external, gpgsm_walk_cert_chain)
76         (gpgsm_basic_cert_check, allowed_ca): Add arg CTRL and changed all
77         callers.
78         * call-agent.c (struct learn_parm_s): Add field CTRL.
79         (gpgsm_agent_learn): Set it.
80
81 2008-02-11  Werner Koch  <wk@g10code.com>
82
83         * server.c (cmd_getinfo): New.
84         (gpgsm_server): Register GETINFO.
85
86 2008-01-29  Marcus Brinkmann  <marcus@g10code.de>
87
88         * keylist.c (list_internal_keys): New variable lastcert.  Use it
89         to suppress duplicates which immediately follow each other.
90
91 2008-01-27  Werner Koch  <wk@g10code.com>
92
93         * import.c (popen_protect_tool): Set bit 7 in the flags for
94         gnupg_spawn_process so that under W32 no window appears.
95         * export.c (popen_protect_tool): Ditto.
96
97 2007-12-13  Werner Koch  <wk@g10code.com>
98
99         * gpgsm.c (main): Add option --extra-digest-algo.
100         * gpgsm.h (struct): Add EXTRA_DIGEST_ALGO.
101         * verify.c (gpgsm_verify): Use it.  Use the hash algorithm from
102         the signature value.
103
104 2007-12-11  Werner Koch  <wk@g10code.com>
105
106         * certchain.c (do_validate_chain): Log AUDIT_ROOT_TRUSTED.
107
108         * server.c (cmd_sign, cmd_decrypt, cmd_encrypt): Start audit log.
109         (cmd_recipient): Start audit session.
110
111         * gpgsm.c (main): Revamp creation of the audit log.
112
113         * gpgsm.h (struct server_control_s): Add AGENT_SEEN and DIRMNGR_SEEN.
114         * call-agent.c (start_agent): Record an audit event.
115         * call-dirmngr.c (start_dirmngr): Ditto. Add new arg CTRL and pass
116         it from all callers.
117         (prepare_dirmngr): New helper for start_dirmngr.
118
119         * encrypt.c (gpgsm_encrypt): Add calls to audit_log.
120
121 2007-12-03  Werner Koch  <wk@g10code.com>
122
123         * gpgsm.c (main): Call gnupg_reopen_std.
124
125 h2007-11-22  Werner Koch  <wk@g10code.com>
126
127         * server.c (cmd_getauditlog): New.
128         (register_commands): Register GETAUDITLOG.
129
130 2007-11-19  Werner Koch  <wk@g10code.com>
131
132         * server.c (cmd_recipient, cmd_signer): Add error reason 11.
133
134         * gpgsm.c (main): Print a warning if --audit-log is used.
135
136 2007-11-15  Werner Koch  <wk@g10code.com>
137
138         * gpgsm.h (struct): Add XAUTHORITY and PINENTRY_USER_DATA.
139         * misc.c (setup_pinentry_env): Add XAUTHORITY and PINENTRY_USER_DATA.
140         * gpgsm.c (main): New option --xauthority.
141         * call-agent.c (start_agent): Adjust for changed start_new_gpg_agent.
142         * server.c (option_handler): Ad the new options.
143
144 2007-11-07  Werner Koch  <wk@g10code.com>
145
146         * gpgsm.c (main): New option --audit-log.
147         * server.c (option_handler): New option enable-audit-log.
148         (start_audit_session): New.
149         (cmd_verify): Create audit context.
150         (gpgsm_server): Release the context.
151
152         * gpgsm.h (struct server_control_s): Add member AUDIT, include
153         audit.h.
154         * certdump.c (gpgsm_format_sn_issuer): New.
155         * verify.c (hash_data): Return an error code.
156         (gpgsm_verify): Add calls to audit_log.
157
158         * gpgsm.c (get_status_string): Remove.
159         * gpgsm.h: Include status.h instead of errors.h.
160         
161 2007-10-19  Werner Koch  <wk@g10code.com>
162
163         * qualified.c (gpgsm_qualified_consent): Use i18N-swicth functions.
164         (gpgsm_not_qualified_warning): Ditto.
165         * certdump.c (gpgsm_format_keydesc): Ditto.
166
167 2007-09-14  Werner Koch  <wk@g10code.com>
168
169         * gpgsm.c (build_lib_list): New.
170         (my_strusage): Print lib info.
171
172 2007-08-24  Werner Koch  <wk@g10code.com>
173
174         * Makefile.am (common_libs): Swap libkeybox and jnlib. 
175
176 2007-08-23  Werner Koch  <wk@g10code.com>
177
178         * certlist.c (gpgsm_certs_identical_p): New.
179         (gpgsm_add_to_certlist): Ignore duplicate certificates in
180         ambigious name detection.
181         (gpgsm_find_cert): Ditto.
182         * export.c (gpgsm_p12_export): Ditto.
183
184 2007-08-22  Werner Koch  <wk@g10code.com>
185
186         * certreqgen.c (create_request): Replace open coding by bin2hex.
187
188         * certreqgen-ui.c (gpgsm_gencertreq_tty): Use es_fopenmem.
189
190 2007-08-21  Werner Koch  <wk@g10code.com>
191
192         * import.c (parse_p12): Use gnupg_tmpfile.
193         * export.c (export_p12): Ditto.
194         
195 2007-08-20  Werner Koch  <wk@g10code.com>
196
197         * certreqgen.c (read_parameters): Change FP to an estream_t.
198         (gpgsm_genkey): Replace in_fd and in_stream by a estream_t.
199         * server.c (cmd_genkey): Adjust for that.
200         * certreqgen-ui.c (gpgsm_gencertreq_tty): Use es_open_memstream
201         instead of a temporary file.
202
203 2007-08-14  Werner Koch  <wk@g10code.com>
204
205         * call-dirmngr.c (start_dirmngr): Use dirmngr_socket_name.  change
206         the way infostr is xstrdupped.
207
208         * gpgsm.c (main) [W32]: Make --prefer-system-dirmngr a dummy under
209         Windows.
210
211 2007-08-13  Werner Koch  <wk@g10code.com>
212
213         * gpgsm.c (do_add_recipient): Add RECP_REQUIRED and make error
214         message depend on that.
215         (main): Add avriable RECP_REQUIRED, set ift for encryption
216         commands and pass it to do_add_recipient.
217         (our_pk_test_algo, our_cipher_test_algo, our_md_test_algo): Implement.
218
219 2007-08-09  Werner Koch  <wk@g10code.com>
220
221         * gpgsm.c (main) [W32]: Enable CRL check by default.
222         (main): Update the default control structure after reading the
223         options.
224         (gpgsm_parse_validation_model, parse_validation_model): New.
225         (main): New option --validation-model.
226         * certchain.c (gpgsm_validate_chain): Implement this option.
227         * server.c (option_handler): Ditto.
228
229         * certchain.c (is_cert_still_valid): Reformatted.  Add arg
230         FORCE_OCSP.  Changed callers to set this flag when using the chain
231         model.
232
233 2007-08-08  Werner Koch  <wk@g10code.com>
234
235         * certdump.c (gpgsm_print_serial): Fixed brown paper bag style bugs
236         which prefixed the output with a 3A and cut it off at a 00.
237
238         * keylist.c (list_cert_raw): Print the certificate ID first and
239         rename "Serial number" to "S/N".
240         (list_cert_std): Ditto.
241
242 2007-08-07  Werner Koch  <wk@g10code.com>
243
244         * gpgsm.c (main): Allow a string for --faked-system-time.
245
246 2007-08-06  Werner Koch  <wk@g10code.com>
247
248         Implementation of the chain model.
249         
250         * gpgsm.h (struct rootca_flags_s): Define new members VALID and
251         CHAIN_MODEL.
252         * call-agent.c (gpgsm_agent_istrusted): Mark ROOTCA_FLAGS valid.
253         (istrusted_status_cb): Set CHAIN_MODEL.
254         * certchain.c (gpgsm_validate_chain): Replace LM alias by LISTMODE
255         and FP by LISTFP.
256         (gpgsm_validate_chain): Factor some code out to ...
257         (check_validity_period, ask_marktrusted): .. new.
258         (check_validity_cm_basic, check_validity_cm_main): New.
259         (do_validate_chain): New with all code from gpgsm_validate_chain.
260         New arg ROOTCA_FLAGS.
261         (gpgsm_validate_chain): Provide ROOTCA_FLAGS and fallback to chain
262         model.  Add RETFLAGS arg and changed all callers to pass NULL. Add
263         CHECKTIME arg and changed all callers to pass a nil value.
264         (has_validity_model_chain): New.
265         * verify.c (gpgsm_verify): Check for chain model and return as
266         part of the trust status.
267
268         * gpgsm.h (VALIDATE_FLAG_NO_DIRMNGR): New.
269         (VALIDATE_FLAG_NO_DIRMNGR): New.
270         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use constant here.
271
272 2007-08-03  Werner Koch  <wk@g10code.com>
273
274         * keylist.c (list_cert_colon): Avoid duplicate listing of kludge
275         uids.
276
277         * verify.c (gpgsm_verify): Make STATUS_VERIFY return the hash and
278         pk algo.
279         * certcheck.c (gpgsm_check_cms_signature): Add arg R_PKALGO.
280
281 2007-08-02  Werner Koch  <wk@g10code.com>
282
283         * gpgsm.c (main): Factored GC_OPT_FLAGS out to gc-opt-flags.h.
284
285 2007-07-17  Werner Koch  <wk@g10code.com>
286
287         * gpgsm.c (main): Implement --default-key.
288         (main) <gpgconf-list>: Declare --default-key and --encrypt-to.
289
290 2007-07-16  Werner Koch  <wk@g10code.com>
291
292         * server.c (cmd_message): Use gnupg_fd_t to avoid dependecy on
293         newer assuan versions.
294
295 2007-07-12  Werner Koch  <wk@g10code.com>
296
297         * gpgsm.c (check_special_filename): Use translate_sys2libc_fd_int
298         when passing an int value.
299         * server.c (cmd_encrypt, cmd_decrypt, cmd_verify, cmd_import)
300         (cmd_export, cmd_message, cmd_genkey):  Translate file descriptors.
301         
302 2007-07-05  Werner Koch  <wk@g10code.com>
303
304         * Makefile.am (common_libs): Changed order of libs.
305
306 2007-07-04  Werner Koch  <wk@g10code.com>
307
308         * certchain.c (check_cert_policy): Remove extra checks for
309         GPG_ERR_NO_VALUE.  They are not needed since libksba 1.0.1.
310         * keylist.c (print_capabilities, list_cert_raw, list_cert_std): Ditto.
311         * certlist.c (cert_usage_p, cert_usage_p): Ditto.
312
313 2007-06-26  Werner Koch  <wk@g10code.com>
314
315         * gpgsm.c (main): Call gnupg_rl_initialize.
316         * Makefile.am (gpgsm_LDADD): Add LIBREADLINE and libgpgrl.a.
317
318 2007-06-25  Werner Koch  <wk@g10code.com>
319
320         * gpgsm.c (check_special_filename): Use translate_sys2libc_fd and
321         add new arg FOR_WRITE.  Change callers to pass new arg.
322
323 2007-06-24  Werner Koch  <wk@g10code.com>
324
325         * gpgsm.c (open_es_fwrite): Avoid the dup by using the new
326         es_fdopen_nc().  
327
328 2007-06-21  Werner Koch  <wk@g10code.com>
329
330         * certreqgen-ui.c: New.
331         * gpgsm.c (main): Let --gen-key call it.
332         * certreqgen.c (gpgsm_genkey): Add optional IN_STREAM arg and
333         adjusted caller.
334
335         * gpgsm.h (ctrl_t): Remove.  It is now declared in ../common/util.h.
336
337         * call-agent.c (start_agent): Factored almost all code out to
338         ../common/asshelp.c.
339
340 2007-06-20  Werner Koch  <wk@g10code.com>
341
342         * call-agent.c (start_agent) [W32]: Start the agent on the fly.
343
344 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
345
346         * gpgsm.c (main): Percent escape output of --gpgconf-list.
347
348 2007-06-14  Werner Koch  <wk@g10code.com>
349
350         * call-agent.c (start_agent): Use gnupg_module_name.
351         * call-dirmngr.c (start_dirmngr): Ditto.
352         * export.c (export_p12): Ditto.
353         * import.c (parse_p12): Ditto.
354         * gpgsm.c (run_protect_tool): Ditto.
355
356 2007-06-12  Werner Koch  <wk@g10code.com>
357
358         * gpgsm.c (main): Replace some calls by init_common_subsystems.
359         (main): Use gnupg_datadir.
360         * qualified.c (read_list): Use gnupg-datadir.
361
362 2007-06-11  Werner Koch  <wk@g10code.com>
363
364         * Makefile.am (common_libs): Use libcommaonstd macr.
365
366         * gpgsm.c (main) [W32]: Call pth_init.
367
368 2007-06-06  Werner Koch  <wk@g10code.com>
369
370         * qualified.c (gpgsm_not_qualified_warning) [!ENABLE_NLS]: Do not
371         define orig_codeset.
372         * certdump.c (gpgsm_format_keydesc) [!ENABLE_NLS]: Do not define
373         orig_codeset.
374         (format_name_writer): Define only if funopen et al is available.
375
376         * gpgsm.c (i18n_init): Remove.
377
378 2007-05-29  Werner Koch  <wk@g10code.com>
379
380         * export.c (gpgsm_p12_export): Print passphrase encoding info only
381         in PEM mode.
382
383 2007-05-18  Marcus Brinkmann  <marcus@g10code.de>
384
385         * qualified.c (gpgsm_qualified_consent,
386         gpgsm_not_qualified_warning): Free ORIG_CODESET on error.
387         * certdump.c (gpgsm_format_keydesc): Likewise.
388
389 2007-05-07  Werner Koch  <wk@g10code.com>
390
391         * certcheck.c (MY_GCRY_PK_ECDSA): New.
392
393 2007-04-20  Werner Koch  <wk@g10code.com>
394
395         * gpgsm.c (main): Parameterize failed versions check messages.
396
397 2007-04-19  Werner Koch  <wk@g10code.com>
398
399         * certcheck.c (do_encode_md): Add arg PKEY.  Add support for DSA2
400         and all ECDSA sizes.
401         (get_dsa_qbits): New.
402         (pk_algo_from_sexp): A key will never contain ecdsa as algorithm,
403         so remove that.
404
405 2007-04-18  Werner Koch  <wk@g10code.com>
406
407         * certcheck.c (do_encode_md): Support 160 bit ECDSA.
408
409 2007-04-13  Werner Koch  <wk@g10code.com>
410
411         * call-agent.c (start_agent): Don't use log_error when using the
412         fallback hack to start the agent.  This is bug 782.
413
414 2007-03-20  Werner Koch  <wk@g10code.com>
415
416         * fingerprint.c (gpgsm_get_fingerprint): Add caching.
417         (gpgsm_get_fingerprint_string): Use bin2hexcolon().
418         (gpgsm_get_fingerprint_hexstring): Use bin2hex and allocate only
419         as much memory as required.
420         (gpgsm_get_keygrip_hexstring): Use bin2hex.
421
422         * certchain.c (gpgsm_validate_chain): Keep track of the
423         certificate chain and reset the ephemeral flags.
424         * keydb.c (keydb_set_cert_flags): New args EPHEMERAL and MASK.
425         Changed caller to use a mask of ~0.  Return a proper error code if
426         the certificate is not available.
427
428         * gpgsm.c: Add option --p12-charset.
429         * gpgsm.h (struct opt): Add p12_charset. 
430         * export.c (popen_protect_tool): Use new option.
431
432 2007-03-19  Werner Koch  <wk@g10code.com>
433
434         Changes to let export and key listing use estream to help systems
435         without funopen.
436         
437         * keylist.c: Use estream in place of stdio functions.
438         * gpgsm.c (open_es_fwrite): New.
439         (main): Use it for the list commands.
440         * server.c (data_line_cookie_functions): New.
441         (data_line_cookie_write, data_line_cookie_close): New.
442         (do_listkeys): Use estream.
443
444         * certdump.c (gpgsm_print_serial): Changed to use estream.
445         (gpgsm_print_time): Ditto.
446         (pretty_es_print_sexp): New.
447         (gpgsm_es_print_name): New.
448         (print_dn_part): New arg STREAM.  Changed all callers.
449         (print_dn_parts): Ditto.
450         * certchain.c (gpgsm_validate_chain): Changed FP to type
451         estream_t.
452         (do_list, unknown_criticals, allowed_ca, check_cert_policy) 
453         (is_cert_still_valid): Ditto.
454
455         * export.c (gpgsm_export): New arg STREAM.
456         (do_putc, do_fputs): New.
457         (print_short_info): Allow printing to optional STREAM.
458         * server.c (cmd_export): Use stream.
459         * base64.c (do_putc, do_fputs): New.
460         (base64_writer_cb, base64_finish_write): Let them cope with an
461         alternate output function.
462         (plain_writer_cb): New.
463         (gpgsm_create_writer): New arg STREAM and call plain_writer_cb for
464         binary output to an estream.  Changed call callers.
465
466 2007-01-31  Werner Koch  <wk@g10code.com>
467
468         * gpgsm.c (main): Let --gen-key print a more informative error
469         message.
470
471 2007-01-25  Werner Koch  <wk@g10code.com>
472
473         * Makefile.am (gpgsm_LDADD): Add LIBICONV.  Noted by Billy Halsey.
474
475 2007-01-05  Werner Koch  <wk@g10code.com>
476
477         * certchain.c (unknown_criticals): Add subjectAltName.
478
479 2006-12-21  Werner Koch  <wk@g10code.com>
480
481         * gpgsm.c: Comment mtrace feature.
482
483 2006-12-21  Marcus Brinkmann  <marcus@g10code.de>
484
485         * certchain.c (gpgsm_basic_cert_check): Release SUBJECT.
486
487         * encrypt.c (encrypt_dek): Release S_CIPH.
488
489 2006-12-20  Marcus Brinkmann  <marcus@g10code.de>
490
491         * server.c (gpgsm_server): Release CTRL->server_local.
492
493         * base64.c: Add new members READER and WRITER in union U2.
494         (gpgsm_create_reader): Initialise CTX->u2.reader.
495         (gpgsm_destroy_reader): Invoke ksba_reader_release.  Return early
496         if CTX is NULL.
497         (gpgsm_create_writer): Initialise CTX->u2.writer.
498         (gpgsm_destroy_writer): Invoke ksba_writer_release.  Return early
499         if CTX is NULL.
500
501 2006-12-18  Marcus Brinkmann  <marcus@g10code.de>
502
503         * fingerprint.c (gpgsm_get_fingerprint): Close MD.
504
505 2006-11-24  Werner Koch  <wk@g10code.com>
506
507         * certdump.c (parse_dn_part): Take '#' as a special character only
508         at the beginning of a string.
509
510 2006-11-21  Werner Koch  <wk@g10code.com>
511
512         * certdump.c (my_funopen_hook_ret_t): New.
513         (format_name_writer): Use it for the return value.
514
515 2006-11-14  Werner Koch  <wk@g10code.com>
516
517         * server.c (skip_options): Skip leading spaces.
518         (has_option): Honor "--".
519         (cmd_export): Add option --data to do an inline export.  Skip all
520         options.
521
522         * certdump.c (gpgsm_fpr_and_name_for_status): New.
523         * verify.c (gpgsm_verify): Use it to print correct status messages.
524
525 2006-11-11  Werner Koch  <wk@g10code.com>
526
527         * server.c (skip_options): New.
528
529 2006-10-24  Marcus Brinkmann  <marcus@g10code.de>
530
531         * Makefile.am (AM_CFLAGS): Add $(LIBASSUAN_CFLAGS).
532
533 2006-10-23  Werner Koch  <wk@g10code.com>
534
535         * gpgsm.c (main): Remap common cipher algo names to their OIDs.
536         (main): New command --gpgconf-test.
537
538 2006-10-20  Werner Koch  <wk@g10code.com>
539
540         * keydb.c (classify_user_id): Parse keygrip for the '&' identifier.
541
542 2006-10-18  Werner Koch  <wk@g10code.com>
543
544         * keylist.c (list_cert_raw): Also test for GPG_ERR_NO_VALUE when
545         testing for GPG_ERR_NO_DATA.
546         * certlist.c (cert_usage_p, gpgsm_find_cert): Ditto.
547         * certchain.c (check_cert_policy): Ditto.
548
549         * keylist.c (list_cert_std, list_cert_raw): Print "none" for no
550         chain length available.
551
552 2006-10-17  Werner Koch  <wk@g10code.com>
553
554         * gpgsm.c: No need for pth.h.  
555         (main): or to init it. It used to be hack for W32.
556
557         * sign.c (gpgsm_get_default_cert): Changed to return only
558         certificates usable for signing.
559
560 2006-10-16  Werner Koch  <wk@g10code.com>
561
562         * certchain.c (already_asked_marktrusted) 
563         (set_already_asked_marktrusted): New.
564         (gpgsm_validate_chain) <not trusted>: Keep track of certificates
565         we already asked for.
566
567 2006-10-11  Werner Koch  <wk@g10code.com>
568
569         * certreqgen.c (proc_parameters, create_request): Allow for
570         creation directly from a card.
571         * call-agent.c (gpgsm_agent_readkey): New arg FROMCARD.
572         (gpgsm_scd_pksign): New.
573
574 2006-10-06  Werner Koch  <wk@g10code.com>
575
576         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
577         (gpgsm_LDADD): Ditto.
578
579 2006-10-05  Werner Koch  <wk@g10code.com>
580
581         * certcheck.c (do_encode_md): Check that the has algo is valid.
582
583 2006-10-02  Marcus Brinkmann  <marcus@g10code.de>
584
585         * server.c (register_commands): New commands DUMPKEYS and
586         DUMPSECRETKEYS.
587         (cmd_dumpkeys, cmd_dumpsecretkeys): New functions.
588         (option_handler): Support with-key-data option.
589
590 2006-09-26  Werner Koch  <wk@g10code.com>
591
592         * certchain.c (gpgsm_validate_chain): More changes for the relax
593         feature.  Use certificate reference counting instead of the old
594         explicit tests. Added a missing free. 
595
596 2006-09-25  Werner Koch  <wk@g10code.com>
597
598         * gpgsm.h (struct rootca_flags_s): New.
599         * call-agent.c (istrusted_status_cb): New.
600         (gpgsm_agent_istrusted): New arg ROOTCA_FLAGS.
601         * keylist.c (list_cert_colon): Use dummy for new arg.
602         * certchain.c (gpgsm_validate_chain): Make use of the relax flag
603         for root certificates.
604         (unknown_criticals): Ignore a GPG_ERR_NO_VALUE.
605
606 2006-09-20  Werner Koch  <wk@g10code.com>
607
608         * gpgsm.c: Add alias command --dump-cert.
609
610         * Makefile.am:  Changes to allow parallel make runs.
611
612 2006-09-18  Werner Koch  <wk@g10code.com>
613
614         * gpgsm.c (main): Use this to import standard certificates.
615         * keydb.c (keydb_add_resource): New arg AUTO_CREATED.
616
617 2006-09-14  Werner Koch  <wk@g10code.com>
618
619         Replaced all call gpg_error_from_errno(errno) by
620         gpg_error_from_syserror().
621
622 2006-09-13  Werner Koch  <wk@g10code.com>
623
624         * keylist.c (list_internal_keys): Print marker line to FP and not
625         to stdout.
626
627         * gpgsm.c (main): All list key list commands now make ose of
628         --output. Cleaned up calls to list modes.  New command
629         --dump-chain.  Renamed --list-sigs to --list-chain and added an
630         alias for the old one.
631
632         * server.c (cmd_message): Changed to use assuan_command_parse_fd.
633         (option_handler): New option list-to-output.
634         (do_listkeys): Use it.
635
636 2006-09-06  Werner Koch  <wk@g10code.com>
637
638         * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
639         out_of_core.
640         (CTRL): Removed and changed everywhere to ctrl_t.
641         (CERTLIST): Ditto.
642
643         Replaced all Assuan error codes by libgpg-error codes.  Removed
644         all map_to_assuan_status and map_assuan_err.
645         
646         * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
647         switch to gpg-error codes.  
648         * server.c (set_error): Adjusted.
649
650 2006-08-29  Werner Koch  <wk@g10code.com>
651
652         * call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
653         complete S-expressions as implemented by the current gpg-agent.
654
655         * gpgsm.c (main): Implement --output for encrypt, decrypt, sign
656         and export.
657
658 2006-07-03  Werner Koch  <wk@g10code.com>
659
660         * certreqgen.c (proc_parameters): Print the component label of a
661         faulty DN.
662
663 2006-06-26  Werner Koch  <wk@g10code.com>
664
665         * certdump.c (gpgsm_cert_log_name): New.
666         * certchain.c (is_cert_still_valid): Log the name of the certificate.
667
668 2006-06-20  Werner Koch  <wk@g10code.com>
669
670         * gpgsm.c (gpgsm_init_default_ctrl): Take care of the command line
671         option --include-certs.
672
673         * keylist.c (list_cert_raw): Print the certid.
674
675 2006-05-23  Werner Koch  <wk@g10code.com>
676
677         * keydb.c (hextobyte): Deleted as it is now defined in jnlib.
678
679         * Makefile.am (gpgsm_LDADD): Include ZLIBS.
680
681 2006-05-19  Marcus Brinkmann  <marcus@g10code.de>
682
683         * keydb.c (keydb_insert_cert): Do not lock here, but only check if
684         it is locked.
685         (keydb_store_cert): Lock here.
686
687         * keydb.h (keydb_delete): Accept new argument UNLOCK.
688         * keydb.c (keydb_delete): Likewise.  Only unlock if this is set.
689         * delete.c (delete_one): Add new argument to invocation of
690         keydb_delete.
691         
692 2006-05-15  Werner Koch  <wk@g10code.com>
693
694         * keylist.c (print_names_raw): Sanitize URI.
695
696 2006-03-21  Werner Koch  <wk@g10code.com>
697
698         * certchain.c (get_regtp_ca_info): New.
699         (allowed_ca): Use it.
700
701 2006-03-20  Werner Koch  <wk@g10code.com>
702
703         * qualified.c (gpgsm_is_in_qualified_list): New optional arg COUNTRY.
704
705 2006-02-17  Werner Koch  <wk@g10code.com>
706
707         * call-dirmngr.c (start_dirmngr): Print name of dirmngr to be started.
708
709 2005-11-23  Werner Koch  <wk@g10code.com>
710
711         * gpgsm.h: New member QUALSIG_APPROVAL.
712         * sign.c (gpgsm_sign): Print a warning if a certificate is not
713         qualified.
714         * qualified.c (gpgsm_qualified_consent): Include a note that this
715         is not approved software.
716         (gpgsm_not_qualified_warning): New.
717         * gpgsm.c (main): Prepared to print a note whether the software
718         has been approved.
719
720 2005-11-13  Werner Koch  <wk@g10code.com>
721
722         * call-agent.c (gpgsm_agent_get_confirmation): New.
723
724         * keylist.c (list_cert_std): Print qualified status.
725         * qualified.c: New.
726         * certchain.c (gpgsm_validate_chain): Check for qualified
727         certificates.
728
729         * certchain.c (gpgsm_basic_cert_check): Release keydb handle when
730         no-chain-validation is used.
731
732 2005-11-11  Werner Koch  <wk@g10code.com>
733
734         * keylist.c (print_capabilities): Print is_qualified status.
735
736 2005-10-28  Werner Koch  <wk@g10code.com>
737
738         * certdump.c (pretty_print_sexp): New.
739         (gpgsm_print_name2): Use it here.  This allows proper printing of
740         DNS names as used with server certificates.
741
742 2005-10-10  Werner Koch  <wk@g10code.com>
743
744         * keylist.c: Add pkaAdress OID as reference.
745
746 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
747
748         * Makefile.am (gpgsm_LDADD): Add ../gl/libgnu.a after
749         ../common/libcommon.a.
750
751 2005-09-13  Werner Koch  <wk@g10code.com>
752
753         * verify.c (gpgsm_verify): Print a note if the unknown algorithm
754         is MD2.
755         * sign.c (gpgsm_sign): Ditto.
756         * certcheck.c (gpgsm_check_cert_sig): Ditto.
757
758 2005-09-08  Werner Koch  <wk@g10code.com>
759
760         * export.c (popen_protect_tool): Add option --have-cert.  We
761         probably lost this option with 1.9.14 due to restructuring of
762         export.c.
763
764 2005-07-21  Werner Koch  <wk@g10code.com>
765
766         * gpgsm.c (main): New options --no-log-file and --debug-none.
767
768         * certreqgen.c (get_parameter, get_parameter_value): Add SEQ arg
769         to allow enumeration.  Changed all callers.
770         (create_request): Process DNS and URI parameters.
771
772 2005-07-20  Werner Koch  <wk@g10code.com>
773
774         * keylist.c (email_kludge): Reworked.
775
776         * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
777         arg to unsigned.
778         * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
779
780 2005-07-19  Werner Koch  <wk@g10code.com>
781
782         * fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
783         Bug accidently introduced while solving the #$%^& gcc
784         signed/unsigned char* warnings.
785
786 2005-06-15  Werner Koch  <wk@g10code.com>
787
788         * delete.c (delete_one): Changed FPR to unsigned.
789         * encrypt.c (encrypt_dek): Made ENCVAL unsigned.
790         (gpgsm_encrypt): Ditto.
791         * sign.c (gpgsm_sign): Made SIGVAL unsigned.
792         * base64.c (base64_reader_cb): Need to use some casting to get
793         around signed/unsigned char* warnings.
794         * certcheck.c (gpgsm_check_cms_signature): Ditto.
795         (gpgsm_create_cms_signature): Changed arg R_SIGVAL to unsigned char*.
796         (do_encode_md): Made NFRAME a size_t.
797         * certdump.c (gpgsm_print_serial): Fixed signed/unsigned warning.
798         (gpgsm_dump_serial): Ditto.
799         (gpgsm_format_serial): Ditto.
800         (gpgsm_dump_string): Ditto.
801         (gpgsm_dump_cert): Ditto.
802         (parse_dn_part): Ditto.
803         (gpgsm_print_name2): Ditto.
804         * keylist.c (email_kludge): Ditto.
805         * certreqgen.c (proc_parameters, create_request): Ditto.
806         (create_request): Ditto.
807         * call-agent.c (gpgsm_agent_pksign): Made arg R_BUF unsigned.
808         (struct cipher_parm_s): Made CIPHERTEXT unsigned.
809         (struct genkey_parm_s): Ditto.
810         * server.c (strcpy_escaped_plus): Made arg S signed char*.
811         * fingerprint.c (gpgsm_get_fingerprint): Made ARRAY unsigned.
812         (gpgsm_get_keygrip): Ditto.
813         * keydb.c (keydb_insert_cert): Made DIGEST unsigned.
814         (keydb_update_cert): Ditto.
815         (classify_user_id): Apply cast to signed/unsigned assignment.
816         (hextobyte): Ditto.
817
818 2005-06-01  Werner Koch  <wk@g10code.com>
819
820         * misc.c: Include setenv.h.
821
822 2005-04-21  Werner Koch  <wk@g10code.com>
823
824         * gpgsm.c: New options --{enable,disable}-trusted-cert-crl-check.
825         * certchain.c (gpgsm_validate_chain): Make use of it.
826
827         * certchain.c (gpgsm_validate_chain): Check revocations even for
828         expired certificates.  This is required because on signature
829         verification an expired key is fine whereas a revoked one is not.
830
831 2005-04-20  Werner Koch  <wk@g10code.com>
832
833         * Makefile.am (AM_CFLAGS): Add PTH_CFLAGS as noted by several folks.
834
835 2005-04-19  Werner Koch  <wk@g10code.com>
836
837         * certchain.c (check_cert_policy): Print the diagnostic for a open
838         failure of policies.txt only in verbose mode or when it is not
839         ENOENT.
840
841 2005-04-17  Werner Koch  <wk@g10code.com>
842
843         * call-dirmngr.c (inq_certificate): Add new inquire SENDCERT_SKI.
844         * certlist.c (gpgsm_find_cert): Add new arg KEYID and implement
845         this filter.  Changed all callers.
846
847         * certchain.c (find_up_search_by_keyid): New helper.
848         (find_up): Also try using the AKI.keyIdentifier.
849         (find_up_external): Ditto.
850
851 2005-04-15  Werner Koch  <wk@g10code.com>
852
853         * keylist.c (list_cert_raw): Print the subjectKeyIdentifier as
854         well as the keyIdentifier part of the authorityKeyIdentifier.
855
856 2005-03-31  Werner Koch  <wk@g10code.com>
857
858         * call-dirmngr.c (start_dirmngr): Use PATHSEP_C instead of ':'.
859         * call-agent.c (start_agent): Ditto.
860
861 2005-03-17  Werner Koch  <wk@g10code.com>
862
863         * certcheck.c: Fixed use of DBG_CRYPTO and DBG_X509.
864
865         * certchain.c (gpgsm_basic_cert_check): Dump certificates after a
866         failed gcry_pk_verify.
867         (find_up): Do an external lookup also for an authorityKeyIdentifier
868         lookup. Factored external lookup code out to ..
869         (find_up_external): .. new.
870
871 2005-03-03  Werner Koch  <wk@g10code.com>
872
873         * Makefile.am (gpgsm_LDADD): Added PTH_LIBS.  Noted by Kazu Yamamoto.
874
875 2005-01-13  Werner Koch  <wk@g10code.com>
876
877         * certreqgen.c (proc_parameters): Cast printf arg.
878
879 2004-12-22  Werner Koch  <wk@g10code.com>
880
881         * gpgsm.c (set_binary): New.
882         (main, open_read, open_fwrite): Use it.
883
884 2004-12-21  Werner Koch  <wk@g10code.com>
885
886         * gpgsm.c (main): Use default_homedir().
887         (main) [W32]: Default to disabled CRL checks.
888
889 2004-12-20  Werner Koch  <wk@g10code.com>
890
891         * call-agent.c (start_agent): Before starting a pipe server start
892         to connect to a server on the standard socket.  Use PATHSEP
893         * call-dirmngr.c (start_dirmngr): Use PATHSEP.
894
895         * import.c: Include unistd.h for dup and close.
896
897 2004-12-18  Werner Koch  <wk@g10code.com>
898
899         * gpgsm.h (map_assuan_err): Define in terms of
900         map_assuan_err_with_source.
901         * call-agent.c (start_agent): Pass error source to
902         send_pinentry_environment.
903
904 2004-12-17  Werner Koch  <wk@g10code.com>
905
906         * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
907         (run_command_status_cb): Return cancel status if gpgsm_status
908         returned an error.
909
910         * server.c (gpgsm_status, gpgsm_status2) 
911         (gpgsm_status_with_err_code): Return an error code.
912         (gpgsm_status2): Always call va_end().
913
914 2004-12-15  Werner Koch  <wk@g10code.com>
915
916         * call-dirmngr.c (lookup_status_cb): Send progress messages
917         upstream.
918         (isvalid_status_cb): Ditto.
919         (gpgsm_dirmngr_isvalid): Put CTRL into status CB parameters.
920         (gpgsm_dirmngr_run_command, run_command_status_cb): Pass CTRL to
921         status callback and handle PROGRESS.
922
923         * misc.c (setup_pinentry_env) [W32]: Don't use it.
924
925         * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
926         operations and to resolve libassuan symbols.
927         (run_protect_tool) [W32]: Disable it.
928
929         * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
930
931 2004-12-07  Werner Koch  <wk@g10code.com>
932
933         * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
934         under W32 we need the w32 pth code from jnlib.
935
936         * misc.c (setup_pinentry_env) [W32]: Disabled.
937
938 2004-12-06  Werner Koch  <wk@g10code.com>
939
940         * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
941
942         * import.c (popen_protect_tool): Simplified by making use of
943         gnupg_spawn_process.
944         (parse_p12): Likewise, using gnupg_wait_process.
945         * export.c (popen_protect_tool): Ditto.
946         (export_p12): Ditto.
947
948         * keydb.c: Don't define DIRSEP_S here.
949
950 2004-12-02  Werner Koch  <wk@g10code.com>
951
952         * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
953         signature for debugging.
954         (gpgsm_validate_chain): Ditto.
955
956 2004-11-29  Werner Koch  <wk@g10code.com>
957
958         * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
959         DEBUG_VALUE.
960         (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE.  This
961         now allows to add debug flags on top of a debug-level setting.
962
963 2004-11-23  Werner Koch  <wk@g10code.com>
964
965         * gpgsm.c: New option --prefer-system-dirmngr.
966         * call-dirmngr.c (start_dirmngr): Implement this option.
967
968 2004-10-22  Werner Koch  <wk@g10code.com>
969
970         * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
971         request PEM header.  This is according to the Sphinx standard.
972
973 2004-10-08  Moritz Schulte  <moritz@g10code.com>
974
975         * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
976         case the no_chain_validation-return-short-cut is used (fixes
977         memory leak).
978
979 2004-10-04  Werner Koch  <wk@g10code.com>
980
981         * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
982
983 2004-09-30  Werner Koch  <wk@g10code.com>
984
985         * gpgsm.c (i18n_init): Always use LC_ALL.
986
987         * certdump.c (gpgsm_format_name): Factored code out to ..
988         (gpgsm_format_name2): .. new.
989         (gpgsm_print_name): Factored code out to ..
990         (gpgsm_print_name2): .. new.
991         (print_dn_part): New arg TRANSLATE.  Changed all callers.
992         (print_dn_parts): Ditto.
993         (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
994         it to stay UTF-8 but we still want to filter out bad control
995         characters.
996
997         * Makefile.am: Adjusted for gettext 0.14.
998
999         * keylist.c (list_cert_colon): Make sure that the expired flag has
1000         a higher precedence than the invalid flag. 
1001
1002 2004-09-29  Werner Koch  <wk@g10code.com>
1003
1004         * import.c (parse_p12): Write an error status line for bad
1005         passphrases. Add new arg CTRL and changed caller.
1006         * export.c (export_p12): Likewise.
1007
1008 2004-09-14  Werner Koch  <wk@g10code.com>
1009
1010         * certchain.c (gpgsm_validate_chain): Give expired certificates a
1011         higher error precedence and don't bother to check any CRL in that
1012         case.
1013
1014 2004-08-24  Werner Koch  <wk@g10code.de>
1015
1016         * certlist.c: Fixed typo in ocsp OID.
1017
1018 2004-08-18  Werner Koch  <wk@g10code.de>
1019
1020         * certlist.c (gpgsm_cert_use_ocsp_p): New.
1021         (cert_usage_p): Support it here.
1022         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
1023
1024 2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
1025
1026         * import.c: Fix typo in last change.
1027
1028 2004-08-17  Werner Koch  <wk@g10code.de>
1029
1030         * import.c (check_and_store): Do a full validation if
1031         --with-validation is set.
1032
1033         * certchain.c (gpgsm_basic_cert_check): Print more detailed error
1034         messages.
1035         
1036         * certcheck.c (do_encode_md): Partly support DSA.  Add new arg
1037         PKALGO. Changed all callers to pass it.
1038         (pk_algo_from_sexp): New.
1039
1040 2004-08-16  Werner Koch  <wk@g10code.de>
1041
1042         * gpgsm.c: New option --fixed-passphrase.
1043         * import.c (popen_protect_tool): Pass it to the protect-tool.
1044
1045         * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
1046         for encrypt-to keys.
1047
1048 2004-08-06  Werner Koch  <wk@g10code.com>
1049
1050         * gpgsm.c: New option --with-ephemeral-keys.
1051         * keylist.c (list_internal_keys): Set it here.
1052         (list_cert_raw): And indicate those keys.  Changed all our callers
1053         to pass the new arg HD through.
1054
1055 2004-07-23  Werner Koch  <wk@g10code.de>
1056
1057         * certreqgen.c (proc_parameters): Do not allow key length below
1058         1024.
1059
1060 2004-07-22  Werner Koch  <wk@g10code.de>
1061
1062         * keylist.c (list_cert_raw): Print the keygrip.
1063
1064 2004-07-20  Werner Koch  <wk@gnupg.org>
1065
1066         * certchain.c (gpgsm_validate_chain): The trust check didn't
1067         worked anymore, probably due to the changes at 2003-03-04.  Fixed.
1068
1069 2004-06-06  Werner Koch  <wk@gnupg.org>
1070
1071         * certreqgen.c (get_parameter_uint, create_request): Create
1072         an extension for key usage when requested. 
1073
1074 2004-05-12  Werner Koch  <wk@gnupg.org>
1075
1076         * gpgsm.c (main): Install emergency_cleanup also as an atexit
1077         handler.
1078
1079         * verify.c (gpgsm_verify): Removed the separate error code
1080         handling for KSBA.  We use shared error codes anyway.
1081
1082         * export.c (export_p12): Removed debugging code.
1083
1084         * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
1085
1086 2004-05-11  Werner Koch  <wk@gnupg.org>
1087
1088         * sign.c (gpgsm_sign): Include the error source in the final error
1089         message.
1090         * decrypt.c (gpgsm_decrypt): Ditto.
1091
1092         * fingerprint.c (gpgsm_get_key_algo_info): New.
1093         * sign.c (gpgsm_sign): Don't assume RSA in the status line.
1094         * keylist.c (list_cert_colon): Really print the algorithm and key
1095         length.
1096         (list_cert_raw, list_cert_std): Ditto.
1097         (list_cert_colon): Reorganized to be able to tell whether a root
1098         certificate is trusted.
1099
1100         * gpgsm.c: New option --debug-allow-core-dump.
1101
1102         * gpgsm.h (opt): Add member CONFIG_FILENAME.
1103         * gpgsm.c (main): Use it here instead of the local var.
1104
1105         * server.c (gpgsm_server): Print some additional information with
1106         the hello in verbose mode.
1107
1108 2004-04-30  Werner Koch  <wk@gnupg.org>
1109
1110         * import.c (check_and_store): Do not update the stats for hidden
1111         imports of issuer certs.
1112         (popen_protect_tool): Request statusmessages from the protect-tool.
1113         (parse_p12): Detect status messages. Add new arg STATS and update them.
1114         (print_imported_summary): Include secret key stats.
1115
1116 2004-04-28  Werner Koch  <wk@gnupg.org>
1117
1118         * gpgsm.c: New command --keydb-clear-some-cert-flags.
1119         * keydb.c (keydb_clear_some_cert_flags): New.
1120         (keydb_update_keyblock, keydb_set_flags): Change error code
1121         CONFLICT to NOT_LOCKED.
1122
1123 2004-04-26  Werner Koch  <wk@gnupg.org>
1124
1125         * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
1126         filename.
1127
1128         * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt) 
1129         (gpgsm_agent_genkey, gpgsm_agent_istrusted) 
1130         (gpgsm_agent_marktrusted, gpgsm_agent_havekey) 
1131         (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
1132         (start_agent): New arg CTRL.  Send progress item when starting a
1133         new agent.
1134         * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
1135         CTRL to be passed down to the agent function.
1136         * decrypt.c (prepare_decryption): Ditto.
1137         * certreqgen.c (proc_parameters, read_parameters): Ditto.
1138         * certcheck.c (gpgsm_create_cms_signature): Ditto.
1139
1140 2004-04-23  Werner Koch  <wk@gnupg.org>
1141
1142         * keydb.c (keydb_add_resource): Try to compress the file on init.
1143
1144         * keylist.c (oidtranstbl): New.  OIDs collected from several sources.
1145         (print_name_raw, print_names_raw, list_cert_raw): New.
1146         (gpgsm_list_keys): Check the dump mode and pass it down as
1147         necessary.
1148
1149 2004-04-22  Werner Koch  <wk@gnupg.org>
1150
1151         * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
1152         --dump-secret-keys.
1153
1154 2004-04-13  Werner Koch  <wk@gnupg.org>
1155
1156         * misc.c (setup_pinentry_env): New.
1157         * import.c (popen_protect_tool): Call it.
1158         * export.c (popen_protect_tool): Call it.
1159
1160 2004-04-08  Werner Koch  <wk@gnupg.org>
1161
1162         * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
1163         encrypted message.
1164
1165 2004-04-07  Werner Koch  <wk@gnupg.org>
1166
1167         * gpgsm.c: New option --force-crl-refresh.
1168         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
1169
1170 2004-04-05  Werner Koch  <wk@gnupg.org>
1171
1172         * server.c (get_status_string): Add STATUS_NEWSIG.
1173         * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
1174
1175         * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
1176         not just warn if a cert is not suitable; bail out immediately.
1177
1178 2004-04-01  Werner Koch  <wk@gnupg.org>
1179
1180         * call-dirmngr.c (isvalid_status_cb): New.
1181         (unhexify_fpr): New. Taken from ../g10/call-agent.c
1182         (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
1183         it thru.  Detect need to check the respondert cert and do that.
1184         * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
1185         all callers.
1186
1187 2004-03-24  Werner Koch  <wk@gnupg.org>
1188
1189         * sign.c (gpgsm_sign): Include a short list of capabilities.
1190
1191 2004-03-17  Werner Koch  <wk@gnupg.org>
1192
1193         * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
1194
1195 2004-03-16  Werner Koch  <wk@gnupg.org>
1196
1197         * gpgsm.c (main): Implemented --gpgconf-list.
1198
1199 2004-03-15  Werner Koch  <wk@gnupg.org>
1200
1201         * keylist.c (list_cert_colon): Hack to set the expired flag.
1202
1203 2004-03-09  Werner Koch  <wk@gnupg.org>
1204
1205         * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
1206
1207         * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
1208
1209 2004-03-04  Werner Koch  <wk@gnupg.org>
1210
1211         * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
1212
1213         * certchain.c (is_cert_still_valid): New.  Code moved from ...
1214         (gpgsm_validate_chain): ... here because we now need to check at
1215         two places and at a later stage, so that we can pass the issuer
1216         cert down to the dirmngr.
1217
1218 2004-03-03  Werner Koch  <wk@gnupg.org>
1219
1220         * call-agent.c (start_agent): Replaced pinentry setup code by a
1221         call to a new common function.
1222
1223         * certdump.c (gpgsm_format_keydesc): Make sure the string is
1224         returned as utf-8.
1225
1226         * export.c (gpgsm_export): Make sure that we don't export more
1227         than one certificate.
1228
1229 2004-03-02  Werner Koch  <wk@gnupg.org>
1230
1231         * export.c (create_duptable, destroy_duptable)
1232         (insert_duptable): New.
1233         (gpgsm_export): Avoid duplicates.
1234
1235 2004-02-26  Werner Koch  <wk@gnupg.org>
1236
1237         * certchain.c (compare_certs): New.
1238         (gpgsm_validate_chain): Fixed infinite certificate checks after
1239         bad signatures.
1240
1241 2004-02-24  Werner Koch  <wk@gnupg.org>
1242
1243         * keylist.c (list_cert_colon): Print the fingerprint as the
1244         cert-id for root certificates.
1245
1246 2004-02-21  Werner Koch  <wk@gnupg.org>
1247
1248         * keylist.c (list_internal_keys): Return error codes.
1249         (list_external_keys, gpgsm_list_keys): Ditto.
1250         * server.c (do_listkeys): Ditto.
1251
1252         * gpgsm.c (main): Display a key description for --passwd.
1253         * call-agent.c (gpgsm_agent_passwd): New arg DESC.
1254
1255 2004-02-20  Werner Koch  <wk@gnupg.org>
1256
1257         * gpgsm.c (main): New option --debug-ignore-expiration.
1258         * certchain.c (gpgsm_validate_chain): Use it here.
1259
1260         * certlist.c (cert_usage_p): Apply extKeyUsage.
1261
1262 2004-02-19  Werner Koch  <wk@gnupg.org>
1263
1264         * export.c (export_p12, popen_protect_tool)
1265         (gpgsm_p12_export): New.
1266         * gpgsm.c (main): New command --export-secret-key-p12. 
1267
1268 2004-02-18  Werner Koch  <wk@gnupg.org>
1269
1270         * gpgsm.c (set_debug): Set the new --debug-level flags.
1271         (main): New option --gpgconf-list.  
1272         (main): Do not setup -u and -r keys when not required.
1273         (main): Setup the used character set.
1274
1275         * keydb.c (keydb_add_resource): Print a hint to start the
1276         gpg-agent.
1277
1278 2004-02-17  Werner Koch  <wk@gnupg.org>
1279
1280         * gpgsm.c: Fixed value parsing for --with-validation.
1281         * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
1282         * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
1283
1284         * gpgsm.c: New option --with-md5-fingerprint.
1285         * keylist.c (list_cert_std): Print MD5 fpr.
1286
1287         * gpgsm.c: New options --with-validation.
1288         * server.c (option_handler): New option "with-validation".
1289         * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
1290         WITH_VALIDATION. Changed callers to set it.
1291         (list_external_cb, list_external_keys): Pass CTRL to the callback.
1292         (list_cert_colon): Add arg CTRL.  Check validation if requested.
1293         * certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
1294         (gpgsm_validate_chain): New args LISTMODE and FP.
1295         (do_list): New helper for info output.
1296         (find_up): New arg FIND_NEXT.
1297         (gpgsm_validate_chain): After a bad signature try again with other
1298         CA certificates.
1299
1300         * import.c (print_imported_status): New arg NEW_CERT. Print
1301         additional STATUS_IMPORT_OK becuase that is what gpgme expects.
1302         (check_and_store): Always call above function after import.
1303         * server.c (get_status_string): Added STATUS_IMPORT_OK.
1304
1305 2004-02-13  Werner Koch  <wk@gnupg.org>
1306
1307         * certcheck.c (gpgsm_create_cms_signature): Format a description
1308         for use by the pinentry.
1309         * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
1310         * certdump.c (format_name_cookie, format_name_writer) 
1311         (gpgsm_format_name): New.
1312         (gpgsm_format_serial): New.
1313         (gpgsm_format_keydesc): New.
1314         * call-agent.c (gpgsm_agent_pksign): New arg DESC.
1315         (gpgsm_agent_pkdecrypt): Ditto.
1316
1317         * encrypt.c (init_dek): Check for too weak algorithms.
1318
1319         * import.c (parse_p12, popen_protect_tool): New.
1320
1321         * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
1322         Changed all callers.
1323         (base64_reader_cb): Handle it here.
1324         (gpgsm_reader_eof_seen): New.
1325         (base64_reader_cb): Set a flag for EOF.
1326         (simple_reader_cb): Ditto.
1327
1328 2004-02-12  Werner Koch  <wk@gnupg.org>
1329
1330         * gpgsm.h, gpgsm.c: New option --protect-tool-program.
1331         * gpgsm.c (run_protect_tool): Use it.
1332
1333 2004-02-11  Werner Koch  <wk@gnupg.org>
1334
1335         * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
1336         will allow to override directory names at make time.
1337
1338 2004-02-02  Werner Koch  <wk@gnupg.org>
1339
1340         * import.c (check_and_store): Import certificates even with
1341         missing issuer's cert.  Fixed an "depending on the verbose
1342         setting" bug.
1343
1344         * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
1345         keybox.
1346
1347         * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
1348         revoked flag.
1349         (list_internal_keys): Retrieve validity flag.
1350         (list_external_cb): Pass 0 as validity flag.
1351         * keydb.c (keydb_get_flags, keydb_set_flags): New.
1352         (keydb_set_cert_flags): New.
1353         (lock_all): Return a proper error code.
1354         (keydb_lock): New.
1355         (keydb_delete): Don't lock but check that it has been locked.
1356         (keydb_update_keyblock): Ditto.
1357         * delete.c (delete_one): Take a lock.
1358
1359 2004-01-30  Werner Koch  <wk@gnupg.org>
1360
1361         * certchain.c (check_cert_policy): Fixed read error checking.
1362         (check_cert_policy): With no critical policies issue only a
1363         warning if the policy file does not exists.
1364
1365         * sign.c (add_certificate_list): Decrement N for the first cert.
1366
1367 2004-01-29  Werner Koch  <wk@gnupg.org>
1368
1369         * certdump.c (parse_dn_part): Map common OIDs to human readable
1370         labels.  Make sure that a value won't get truncated if it includes
1371         a Nul.
1372
1373 2004-01-28  Werner Koch  <wk@gnupg.org>
1374
1375         * certchain.c (gpgsm_validate_chain): Changed the message printed
1376         for an untrusted root certificate.
1377
1378 2004-01-27  Werner Koch  <wk@gnupg.org>
1379
1380         * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
1381         (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
1382         multi-valued RDNs in a special way, i.e. in the order specified by
1383         the certificate.
1384         (print_dn_parts): Simplified. 
1385
1386 2004-01-16  Werner Koch  <wk@gnupg.org>
1387
1388         * sign.c (gpgsm_sign): Print an error message on all failures.
1389         * decrypt.c (gpgsm_decrypt): Ditto.
1390
1391 2003-12-17  Werner Koch  <wk@gnupg.org>
1392
1393         * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
1394         (cmd_encrypt): Add all enrypt-to marked certs to the list.
1395         * encrypt.c (gpgsm_encrypt): Check that real recipients are
1396         available.
1397         * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
1398         options work.  Pass the list of recients to gpgsm_server.
1399         * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
1400         (opt): Add NO_ENCRYPT_TO.
1401         * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
1402         Changed all callers and ignore duplicate entries.
1403         (is_cert_in_certlist): New.
1404         (gpgsm_add_cert_to_certlist): New.
1405
1406         * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
1407         (gpgsm_dump_serial): Ditto.
1408
1409         * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
1410
1411 2003-12-16  Werner Koch  <wk@gnupg.org>
1412
1413         * gpgsm.c (main): Set the prefixes for assuan logging.
1414
1415         * sign.c (gpgsm_sign): Add validation checks for the default
1416         certificate.
1417
1418         * gpgsm.c: Add -k as alias for --list-keys and -K for
1419         --list-secret-keys.
1420
1421 2003-12-15  Werner Koch  <wk@gnupg.org>
1422
1423         * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
1424         not need for real strong random here and it even better protect
1425         the random bits used for the key.
1426
1427 2003-12-01  Werner Koch  <wk@gnupg.org>
1428
1429         * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
1430         (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
1431         * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
1432         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
1433         proceed accordingly.
1434
1435 2003-11-19  Werner Koch  <wk@gnupg.org>
1436
1437         * verify.c (gpgsm_verify): Use "0" instead of an empty string for
1438         the VALIDSIG status.
1439
1440 2003-11-18  Werner Koch  <wk@gnupg.org>
1441
1442         * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
1443
1444         * certchain.c (unknown_criticals): Fixed an error code test.
1445
1446 2003-11-12  Werner Koch  <wk@gnupg.org>
1447
1448         Adjusted for API changes in Libksba.
1449
1450 2003-10-31  Werner Koch  <wk@gnupg.org>
1451
1452         * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
1453         * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
1454         * sign.c (gpgsm_sign): Ditto.
1455         * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
1456         * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
1457         Ditto.
1458
1459 2003-10-25  Werner Koch  <wk@gnupg.org>
1460
1461         * certreqgen.c (read_parameters): Fixed faulty of !spacep().
1462
1463 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
1464
1465         * encrypt.c (encode_session_key): Allocate enough space.  Cast key
1466         byte to unsigned char to prevent sign extension.
1467         (encrypt_dek): Check return value before error.
1468
1469 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
1470
1471         * encrypt.c (encode_session_key): Use new Libgcrypt interface.
1472         
1473 2003-07-31  Werner Koch  <wk@gnupg.org>
1474
1475         * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
1476
1477 2003-07-29  Werner Koch  <wk@gnupg.org>
1478
1479         * gpgsm.c (main): Add secmem features and set the random seed file.
1480         (gpgsm_exit): Update the random seed file and enable debug output.
1481
1482 2003-07-27  Werner Koch  <wk@gnupg.org>
1483
1484         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
1485
1486 2003-06-24  Werner Koch  <wk@gnupg.org>
1487
1488         * server.c (gpgsm_status_with_err_code): New.
1489         * verify.c (gpgsm_verify): Use it here instead of the old
1490         tokenizing version.
1491
1492         * verify.c (strtimestamp): Renamed to strtimestamp_r
1493
1494         Adjusted for changes in the libgcrypt API. Some more fixes for the
1495         libgpg-error stuff.  
1496
1497 2003-06-04  Werner Koch  <wk@gnupg.org>
1498
1499         * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
1500         Include new membuf header and changed used type.
1501
1502         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
1503
1504 2003-06-03  Werner Koch  <wk@gnupg.org>
1505
1506         Changed all error codes in all files to the new libgpg-error scheme.
1507
1508         * gpgsm.h: Include gpg-error.h .
1509         * Makefile.am: Link with libgpg-error.
1510
1511 2003-04-29  Werner Koch  <wk@gnupg.org>
1512
1513         * Makefile.am: Use libassuan.  Don't override LDFLAGS anymore.
1514         * server.c (register_commands): Adjust for new Assuan semantics.
1515
1516 2002-12-03  Werner Koch  <wk@gnupg.org>
1517
1518         * call-agent.c (gpgsm_agent_passwd): New.
1519         * gpgsm.c (main): New command --passwd and --call-protect-tool
1520         (run_protect_tool): New.
1521
1522 2002-11-25  Werner Koch  <wk@gnupg.org>
1523
1524         * verify.c (gpgsm_verify): Handle content-type attribute. 
1525
1526 2002-11-13  Werner Koch  <wk@gnupg.org>
1527
1528         * call-agent.c (start_agent): Try to use $GPG_TTY instead of
1529         ttyname.  Changed ttyname to test stdin becuase it can be assumed
1530         that output redirection is more common that input redirection.
1531
1532 2002-11-12  Werner Koch  <wk@gnupg.org>
1533
1534         * gpgsm.c: New command --call-dirmngr. 
1535         * call-dirmngr.c (gpgsm_dirmngr_run_command)
1536         (run_command_inq_cb,run_command_cb)
1537         (run_command_status_cb): New.
1538
1539 2002-11-11  Werner Koch  <wk@gnupg.org>
1540
1541         * certcheck.c (gpgsm_check_cms_signature): Don't double free
1542         s_sig but free s_pkey at leave.
1543
1544 2002-11-10  Werner Koch  <wk@gnupg.org>
1545
1546         * gpgsm.c: Removed duplicate --list-secret-key entry.
1547
1548 2002-09-19  Werner Koch  <wk@gnupg.org>
1549
1550         * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
1551
1552         * certchain.c (find_up): Print info when the cert was not found 
1553         by the autorithyKeyIdentifier.
1554
1555 2002-09-03  Werner Koch  <wk@gnupg.org>
1556
1557         * gpgsm.c (main): Disable the internal libgcrypt locking.
1558
1559 2002-08-21  Werner Koch  <wk@gnupg.org>
1560
1561         * import.c (print_imported_summary): Cleaned up.  Print new
1562         not_imported value.
1563         (check_and_store): Update non_imported counter.
1564         (print_import_problem): New.
1565         (check_and_store): Print error status message.
1566         * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
1567
1568 2002-08-20  Werner Koch  <wk@gnupg.org>
1569
1570         * gpgsm.c (main): Use the log file only in server mode.
1571
1572         * import.c (print_imported_summary): New.
1573         (check_and_store): Update the counters, take new argument.
1574         (import_one): Factored out core of gpgsm_import.
1575         (gpgsm_import): Print counters.
1576         (gpgsm_import_files): New.
1577         * gpgsm.c (main): Use the new function for import.
1578
1579 2002-08-19  Werner Koch  <wk@gnupg.org>
1580
1581         * decrypt.c (gpgsm_decrypt): Return a better error status token.
1582         * verify.c (gpgsm_verify): Don't error on messages with no signing
1583         time or no message digest.  This is only the case for messages
1584         without any signed attributes.
1585
1586 2002-08-16  Werner Koch  <wk@gnupg.org>
1587
1588         * certpath.c: Renamed to ..
1589         * certchain.c: this. Renamed all all other usages of "path" in the
1590         context of certificates to "chain".
1591
1592         * call-agent.c (learn_cb): Special treatment when the issuer
1593         certificate is missing.
1594
1595 2002-08-10  Werner Koch  <wk@gnupg.org>
1596
1597         * Makefile.am (INCLUDES): Add definition for localedir.
1598
1599         * keylist.c (list_cert_colon): Print the short fingerprint in the
1600         key ID field.
1601         * fingerprint.c (gpgsm_get_short_fingerprint): New.
1602         * verify.c (gpgsm_verify): Print more verbose info for a good
1603         signature.
1604
1605 2002-08-09  Werner Koch  <wk@gnupg.org>
1606
1607         * decrypt.c (prepare_decryption): Hack to detected already
1608         unpkcsedone keys.
1609
1610         * gpgsm.c (emergency_cleanup): New.
1611         (main): Initialize the signal handler.
1612
1613         * sign.c (gpgsm_sign): Reset the hash context for subsequent
1614         signers and release it at the end.
1615
1616 2002-08-05  Werner Koch  <wk@gnupg.org>
1617
1618         * server.c (cmd_signer): New command "SIGNER"
1619         (register_commands): Register it.
1620         (cmd_sign): Pass the signer list to gpgsm_sign.
1621         * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
1622         for secret key if set and changed all callers.
1623         * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
1624         multiple signers.
1625         * gpgsm.c (main): Support more than one -u.
1626         
1627         * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
1628         which is actually what gets returned from add_to_certlist.
1629         
1630 2002-07-26  Werner Koch  <wk@gnupg.org>
1631
1632         * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
1633         (gpgsm_check_cms_signature): Ditto.
1634
1635 2002-07-22  Werner Koch  <wk@gnupg.org>
1636
1637         * keydb.c (keydb_add_resource): Register a lock file.
1638         (lock_all, unlock_all): Implemented.
1639
1640         * delete.c: New.
1641         * gpgsm.c: Made --delete-key work.
1642         * server.c (cmd_delkeys): New.
1643         (register_commands): New command DELKEYS.
1644
1645         * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
1646         used and a STATUS_ERROR with the algorithm oid.
1647
1648 2002-07-03  Werner Koch  <wk@gnupg.org>
1649
1650         * server.c (gpgsm_status2): Insert a blank between all optional
1651         arguments when using assuan.
1652         * server.c (cmd_recipient): No more need for extra blank in constants.
1653         * import.c (print_imported_status): Ditto.
1654         * gpgsm.c (main): Ditto.
1655
1656 2002-07-02  Werner Koch  <wk@gnupg.org>
1657
1658         * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
1659         the fingerprint.
1660
1661         * certpath.c (check_cert_policy): Don't use log_error to print a
1662         warning.
1663
1664         * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
1665         all callers.
1666         * call-agent.c (learn_cb): Print info message only for real imports.
1667
1668         * import.c (gpgsm_import): Moved duplicated code to ...
1669         (check_and_store): new function.  Added magic to import the entire
1670         chain. Print status only for real imports and moved printing code
1671         to ..
1672         (print_imported_status): New.
1673
1674         * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
1675         call in very verbose mode.
1676
1677         * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
1678         with the server mode.
1679
1680 2002-06-29  Werner Koch  <wk@gnupg.org>
1681
1682         * gpgsm.c: New option --auto-issuer-key-retrieve.
1683         * certpath.c (find_up): Try to retrieve an issuer key from an
1684         external source and from the ephemeral key DB.
1685         (find_up_store_certs_cb): New.
1686
1687         * keydb.c (keydb_set_ephemeral): Does now return the old
1688         state.  Call the backend only when required.
1689
1690         * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
1691         (lookup_status_cb): Issue status only when CTRL is not NULL.
1692         (gpgsm_dirmngr_lookup): Document that CTRL is optional.
1693
1694         * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
1695
1696 2002-06-28  Werner Koch  <wk@gnupg.org>
1697
1698         * server.c (cmd_recipient): Add more reason codes.
1699
1700 2002-06-27  Werner Koch  <wk@gnupg.org>
1701
1702         * certpath.c (gpgsm_basic_cert_check): Use
1703         --debug-no-path-validation to also bypass this basic check.
1704
1705         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1706
1707         * call-agent.c (start_agent): Create and pass the list of FD to
1708         keep in the child to assuan.
1709         * call-dirmngr.c (start_dirmngr): Ditto.
1710
1711 2002-06-26  Werner Koch  <wk@gnupg.org>
1712
1713         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
1714
1715         * gpgsm.c: --debug-no-path-validation does not take an argument.
1716
1717 2002-06-25  Werner Koch  <wk@gnupg.org>
1718
1719         * certdump.c (print_dn_part): Always print a leading slash,
1720         removed NEED_DELIM arg and changed caller.
1721
1722         * export.c (gpgsm_export): Print LFs to FP and not stdout.
1723         (print_short_info): Ditto.  Make use of gpgsm_print_name.
1724
1725         * server.c (cmd_export): Use output-fd instead of data lines; this
1726         was actually the specified way.
1727
1728 2002-06-24  Werner Koch  <wk@gnupg.org>
1729
1730         * gpgsm.c: Removed duped help entry for --list-keys.
1731         
1732         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
1733
1734         * certpath.c (gpgsm_validate_path): Use it here instead of the
1735         debug flag hack.
1736
1737         * certpath.c (check_cert_policy): Return No_Policy_Match if the
1738         policy file could not be opened.
1739
1740 2002-06-20  Werner Koch  <wk@gnupg.org>
1741
1742         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
1743         certificate with the required key usage.
1744
1745         * gpgsm.c (main): Fixed a segv when using --outfile without an
1746         argument.
1747
1748         * keylist.c (print_capabilities): Also check for non-repudiation
1749         and data encipherment.
1750         * certlist.c (cert_usage_p): Test for signing and encryption was
1751         swapped.  Add a case for certification usage, handle
1752         non-repudiation and data encipherment.
1753         (gpgsm_cert_use_cert_p): New.
1754         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
1755         callers to pass it.
1756         * certpath.c (gpgsm_validate_path): Use it here to print a status
1757         message. Added a CTRL argument and changed all callers to pass it.
1758         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
1759         usage.
1760         * verify.c (gpgsm_verify): Ditto.
1761         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
1762
1763 2002-06-19  Werner Koch  <wk@gnupg.org>
1764
1765         * call-agent.c (learn_cb): Use log_info instead of log_error on
1766         successful import.
1767
1768         * keydb.c (keydb_set_ephemeral): New.
1769         (keydb_store_cert): New are ephemeral, changed all callers.
1770         * keylist.c (list_external_cb): Store cert as ephemeral.
1771         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
1772
1773         * gpgsm.c (main): New command --list-external-keys.
1774         
1775 2002-06-17  Werner Koch  <wk@gnupg.org>
1776
1777         * certreqgen.c (read_parameters): Improved error handling.
1778         (gpgsm_genkey): Print error message.
1779
1780 2002-06-13  Werner Koch  <wk@gnupg.org>
1781
1782         * gpgsm.c (main): New option --log-file.
1783
1784 2002-06-12  Werner Koch  <wk@gnupg.org>
1785
1786         * call-dirmngr.c (lookup_status_cb): New.
1787         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
1788         changed caller to pass it.
1789
1790         * gpgsm.c (open_fwrite): New.
1791         (main): Allow --output for --verify.
1792
1793         * sign.c (hash_and_copy_data): New.
1794         (gpgsm_sign): Implemented normal (non-detached) signatures.
1795         * gpgsm.c (main): Ditto.
1796         
1797         * certpath.c (gpgsm_validate_path): Special error handling for
1798         no policy match.
1799
1800 2002-06-10  Werner Koch  <wk@gnupg.org>
1801
1802         * server.c (get_status_string): Add STATUS_ERROR.
1803
1804         * certpath.c (gpgsm_validate_path): Tweaked the error checking to 
1805         return error codes in a more sensitive way.
1806         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
1807         CA certificate and when the certificate has been revoked.  Issue
1808         TRUST_FULLY even when the cert has expired.  Append an error token
1809         to these status lines.  Issue the new generic error status when a
1810         cert was not found and when leaving the function.
1811
1812 2002-06-04  Werner Koch  <wk@gnupg.org>
1813
1814         * gpgsm.c (main): New command --list-sigs
1815         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
1816         not used.
1817         (list_cert_chain): New.
1818
1819 2002-05-31  Werner Koch  <wk@gnupg.org>
1820
1821         * gpgsm.c (main): Don't print the "go ahead" message for an
1822         invalid command.
1823
1824 2002-05-23  Werner Koch  <wk@gnupg.org>
1825
1826         * import.c (gpgsm_import): Add error messages.
1827
1828 2002-05-21  Werner Koch  <wk@gnupg.org>
1829
1830         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
1831         (list_external_keys): New.
1832         (gpgsm_list_keys): Dispatcher for above.
1833         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
1834         (gpgsm_dirmngr_lookup): New.
1835         * server.c (option_handler): Handle new option --list-mode.
1836         (do_listkeys): Handle options and actually use the mode argument.
1837         (get_status_string): New code TRUNCATED.
1838
1839         * import.c (gpgsm_import): Try to identify the type of input and
1840         handle certs-only messages.
1841
1842 2002-05-14  Werner Koch  <wk@gnupg.org>
1843
1844         * gpgsm.c: New option --faked-system-time
1845         * sign.c (gpgsm_sign): And use it here.
1846         * certpath.c (gpgsm_validate_path): Ditto.
1847
1848 2002-05-03  Werner Koch  <wk@gnupg.org>
1849
1850         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
1851         all callers.
1852         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
1853         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
1854
1855 2002-04-26  Werner Koch  <wk@gnupg.org>
1856
1857         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
1858         Changed all users.
1859
1860         * call-agent.c (start_agent): Be more silent without -v.
1861         * call-dirmngr.c (start_dirmngr): Ditto.
1862
1863 2002-04-25  Werner Koch  <wk@gnupg.org>
1864
1865         * call-agent.c (start_agent): Make copies of old locales and check
1866         for setlocale.
1867
1868 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1869
1870         * call-agent.c (start_agent): Fix error handling logic so the
1871         locale is always correctly reset.
1872
1873 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1874
1875         * server.c (option_handler): Accept display, ttyname, ttytype,
1876         lc_ctype and lc_messages options.
1877         * gpgsm.c (main): Allocate memory for these options.
1878         * gpgsm.h (struct opt): Make corresponding members non-const.
1879
1880 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
1881
1882         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
1883         lc_ctype, lc_messages.
1884         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
1885         oTTYname, oTTYtype, oLCctype, oLCmessages.
1886         (opts): New entries for these options.
1887         (main): Handle these new options.
1888         * call-agent.c (start_agent): Set the various display and tty
1889         parameter after resetting.
1890
1891 2002-04-18  Werner Koch  <wk@gnupg.org>
1892
1893         * certreqgen.c (gpgsm_genkey): Write status output on success.
1894
1895 2002-04-15  Werner Koch  <wk@gnupg.org>
1896
1897         * gpgsm.c (main): Check ksba version.
1898
1899         * certpath.c (find_up): New to use the authorithKeyIdentifier.
1900         Use it in all other functions to locate the signing cert..
1901
1902 2002-04-11  Werner Koch  <wk@gnupg.org>
1903
1904         * certlist.c (cert_usable_p): New.
1905         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
1906         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
1907         (gpgsm_add_to_certlist): Check the key usage.
1908         * sign.c (gpgsm_sign): Ditto.
1909         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
1910         certificate was used.
1911         * decrypt.c (gpgsm_decrypt): Ditto
1912         * keylist.c (print_capabilities): Determine values from the cert.
1913
1914 2002-03-28  Werner Koch  <wk@gnupg.org>
1915
1916         * keylist.c (list_cert_colon): Fixed listing of crt record; the
1917         issuer is not at the right place.  Print a chainingID.
1918         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
1919         common errors.
1920
1921 2002-03-21  Werner Koch  <wk@gnupg.org>
1922
1923         * export.c: New.
1924         * gpgsm.c: Add command --export.
1925         * server.c (cmd_export): New.
1926         
1927 2002-03-13  Werner Koch  <wk@gnupg.org>
1928
1929         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
1930
1931 2002-03-12  Werner Koch  <wk@gnupg.org>
1932
1933         * certpath.c (check_cert_policy): Print the policy list.
1934
1935         * verify.c (gpgsm_verify): Detect certs-only message.
1936
1937 2002-03-11  Werner Koch  <wk@gnupg.org>
1938
1939         * import.c (gpgsm_import): Print a notice about imported certificates
1940         when in verbose mode.
1941
1942         * gpgsm.c (main): Print INV_RECP status.
1943         * server.c (cmd_recipient): Ditto.
1944
1945         * server.c (gpgsm_status2): New.  Allows for a list of strings.
1946         (gpgsm_status): Divert to gpgsm_status2.
1947
1948         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
1949         recipients are given.  Print a NO_RECP status.
1950
1951 2002-03-06  Werner Koch  <wk@gnupg.org>
1952
1953         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
1954         (do_listkeys): new.  Add pattern parsing.
1955
1956         * keylist.c (gpgsm_list_keys): Handle selection pattern.
1957
1958         * gpgsm.c: New command --learn-card
1959         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
1960
1961         * gpgsm.c (main): Print error messages for non-implemented commands.
1962
1963         * base64.c (base64_reader_cb): Use case insensitive compare of the
1964         Content-Type string to detect plain base-64.
1965
1966 2002-03-05  Werner Koch  <wk@gnupg.org>
1967
1968         * gpgsm.c, gpgsm.h: Add local_user.
1969         * sign.c (gpgsm_get_default_cert): New.
1970         (get_default_signer): Use the new function if local_user is not
1971         set otherwise used that value.
1972         * encrypt.c (get_default_recipient): Removed.
1973         (gpgsm_encrypt): Use gpgsm_get_default_cert.
1974
1975         * verify.c (gpgsm_verify): Better error text for a bad signature
1976         found by comparing the hashs.
1977
1978 2002-02-27  Werner Koch  <wk@gnupg.org>
1979
1980         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
1981         of assuan_transact.
1982
1983 2002-02-25  Werner Koch  <wk@gnupg.org>
1984
1985         * server.c (option_handler): Allow to use -2 for "send all certs
1986         except the root cert".
1987         * sign.c (add_certificate_list): Implement it here.
1988         * certpath.c (gpgsm_is_root_cert): New.
1989
1990 2002-02-19  Werner Koch  <wk@gnupg.org>
1991
1992         * certpath.c (check_cert_policy): New.
1993         (gpgsm_validate_path): And call it from here.
1994         * gpgsm.c (main): New options --policy-file,
1995         --disable-policy-checks and --enable-policy-checks.
1996         * gpgsm.h (opt): Added policy_file, no_policy_checks.
1997
1998 2002-02-18  Werner Koch  <wk@gnupg.org>
1999
2000         * certpath.c (gpgsm_validate_path): Ask the agent to add the
2001         certificate into the trusted list.
2002         * call-agent.c (gpgsm_agent_marktrusted): New.
2003
2004 2002-02-07  Werner Koch  <wk@gnupg.org>
2005
2006         * certlist.c (gpgsm_add_to_certlist): Check that the specified
2007         name identifies a certificate unambiguously.
2008         (gpgsm_find_cert): Ditto.
2009
2010         * server.c (cmd_listkeys): Check that the data stream is available.
2011         (cmd_listsecretkeys): Ditto.
2012         (has_option): New.
2013         (cmd_sign): Fix ambiguousity in option recognition.
2014
2015         * gpgsm.c (main): Enable --logger-fd.
2016
2017         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
2018         performance.
2019
2020         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
2021         the agent.
2022
2023         * keylist.c (list_cert_colon): Filter out control characters.
2024
2025 2002-02-06  Werner Koch  <wk@gnupg.org>
2026
2027         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
2028
2029         * server.c (reset_notify): Close input and output FDs.
2030         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
2031         (cmd_genkey): Close the FDs and release the recipient list even in
2032         the error case.
2033
2034 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
2035
2036         * sign.c (gpgsm_sign): Do not release certificate twice.
2037
2038 2002-01-29  Werner Koch  <wk@gnupg.org>
2039
2040         * call-agent.c (gpgsm_agent_havekey): New.
2041         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
2042         when we know that the secret key is available.
2043         (gpgsm_list_keys): New arg MODE, check whether a secret key is
2044         available.  Changed all callers.
2045         * gpgsm.c (main): New command --list-secret-keys.
2046         * server.c (cmd_listsecretkeys): New.
2047         (cmd_listkeys): Return secret keys with "crs" record.
2048
2049 2002-01-28  Werner Koch  <wk@gnupg.org>
2050
2051         * certreqgen.c (create_request): Store the email address in the req.
2052
2053 2002-01-25  Werner Koch  <wk@gnupg.org>
2054
2055         * gpgsm.c (main): Disable core dumps.
2056
2057         * sign.c (add_certificate_list): New.
2058         (gpgsm_sign): Add the certificates to the CMS object.
2059         * certpath.c (gpgsm_walk_cert_chain): New.
2060         * gpgsm.h (server_control_s): Add included_certs.
2061         * gpgsm.c: Add option --include-certs.
2062         (gpgsm_init_default_ctrl): New.
2063         (main): Call it.
2064         * server.c (gpgsm_server): Ditto.
2065         (option_handler): Support --include-certs.
2066
2067 2002-01-23  Werner Koch  <wk@gnupg.org>
2068
2069         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
2070         * certdump.c (gpgsm_dump_string): New.
2071         (print_dn): Replaced by above.
2072
2073 2002-01-22  Werner Koch  <wk@gnupg.org>
2074
2075         * certpath.c (unknown_criticals): New.
2076         (allowed_ca): New.
2077         (gpgsm_validate_path): Check validity, CA attribute, path length
2078         and unknown critical extensions.
2079
2080 2002-01-21  Werner Koch  <wk@gnupg.org>
2081
2082         * gpgsm.c: Add option --enable-crl-checks.
2083
2084         * call-agent.c (start_agent): Implemented socket based access.
2085         * call-dirmngr.c (start_dirmngr): Ditto.
2086
2087 2002-01-20  Werner Koch  <wk@gnupg.org>
2088
2089         * server.c (option_handler): New.
2090         (gpgsm_server): Register it with assuan.
2091
2092 2002-01-19  Werner Koch  <wk@gnupg.org>
2093
2094         * server.c (gpgsm_server): Use assuan_deinit_server and setup
2095         assuan logging if enabled.
2096         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
2097         an Assuan log file.
2098
2099         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
2100
2101 2002-01-15  Werner Koch  <wk@gnupg.org>
2102
2103         * import.c (gpgsm_import): Just do a basic cert check before
2104         storing it.
2105         * certpath.c (gpgsm_basic_cert_check): New.
2106
2107         * keydb.c (keydb_store_cert): New.
2108         * import.c (store_cert): Removed and change all caller to use
2109         the new function.
2110         * verify.c (store_cert): Ditto.
2111
2112         * certlist.c (gpgsm_add_to_certlist): Validate the path
2113
2114         * certpath.c (gpgsm_validate_path): Check the trust list.
2115         * call-agent.c (gpgsm_agent_istrusted): New.
2116
2117 2002-01-14  Werner Koch  <wk@gnupg.org>
2118
2119         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
2120         * certlist.c (gpgsm_find_cert): New.
2121
2122 2002-01-13  Werner Koch  <wk@gnupg.org>
2123
2124         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
2125         hash after the dot.
2126
2127 2002-01-11  Werner Koch  <wk@gnupg.org>
2128
2129         * call-dirmngr.c: New.
2130         * certpath.c (gpgsm_validate_path): Check the CRL here.
2131         * fingerprint.c (gpgsm_get_certid): New.
2132         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
2133
2134 2002-01-10  Werner Koch  <wk@gnupg.org>
2135
2136         * base64.c (gpgsm_create_writer): Allow to set the object name
2137
2138 2002-01-08  Werner Koch  <wk@gnupg.org>
2139
2140         * keydb.c (spacep): Removed because it is now in util.c
2141
2142         * server.c (cmd_genkey): New.
2143         * certreqgen.c: New.  The parameter handling code has been taken
2144         from gnupg/g10/keygen.c version 1.0.6.
2145         * call-agent.c (gpgsm_agent_genkey): New.
2146
2147 2002-01-02  Werner Koch  <wk@gnupg.org>
2148
2149         * server.c (rc_to_assuan_status): Removed and changed all callers
2150         to use map_to_assuan_status.
2151
2152 2001-12-20  Werner Koch  <wk@gnupg.org>
2153
2154         * verify.c (gpgsm_verify): Implemented non-detached signature
2155         verification.  Add OUT_FP arg, initialize a writer and changed all
2156         callers.
2157         * server.c (cmd_verify): Pass an out_fp if one has been set.
2158
2159         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
2160
2161         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
2162         global.
2163         (print_time): Renamed to gpgsm_dump_time, made global.
2164         (gpgsm_dump_serial): Take a real S-Expression as argument and
2165         print the first item.
2166         * keylist.c (list_cert_colon): Ditto.
2167         * keydb.c (keydb_search_issuer_sn): Ditto.
2168         * decrypt.c (print_integer_sexp): Removed and made callers 
2169         use gpgsm_dump_serial.
2170         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
2171         
2172 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
2173
2174         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
2175
2176 2001-12-18  Werner Koch  <wk@gnupg.org>
2177
2178         * verify.c (print_integer_sexp): Renamed from print_integer and
2179         print the serial number according to the S-Exp rules.
2180         * decrypt.c (print_integer_sexp): Ditto.
2181
2182 2001-12-17  Werner Koch  <wk@gnupg.org>
2183
2184         * keylist.c (list_cert_colon): Changed for new return value of
2185         get_serial.
2186         * keydb.c (keydb_search_issuer_sn): Ditto.
2187         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
2188         returingin functions.
2189         * fingerprint.c (gpgsm_get_keygrip): Ditto.
2190         * encrypt.c (encrypt_dek): Ditto
2191         * certcheck.c (gpgsm_check_cms_signature): Ditto
2192         * decrypt.c (prepare_decryption): Ditto.
2193         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
2194         use KsbaSexp type and calculate the length.
2195
2196         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
2197
2198         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
2199
2200         * fingerprint.c (gpgsm_get_keygrip): Use the new
2201         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
2202         therefore the grip values changed.
2203
2204 2001-12-15  Werner Koch  <wk@gnupg.org>
2205
2206         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
2207         kludge.
2208         (gpgsm_create_cms_signature): Removed the commented fake key
2209         code.  This makes the function pretty simple.
2210
2211         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
2212
2213         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
2214         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
2215
2216 2001-12-14  Werner Koch  <wk@gnupg.org>
2217
2218         * keylist.c (list_cert_colon): Kludge to show an email address
2219         encoded in the subject's DN.
2220
2221         * verify.c (gpgsm_verify): Add hash debug helpers
2222         * sign.c (gpgsm_sign): Ditto.
2223
2224         * base64.c (base64_reader_cb): Reset the linelen when we need to
2225         skip the line and adjusted test; I somehow forgot about DeMorgan.
2226
2227         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
2228         (cmd_import): Close the FDs on success.
2229         (close_message_fd): New.
2230         (input_notify): Setting autodetect_encoding to 0 after initializing
2231         it to 0 is pretty pointless.  Easy to fix.
2232
2233         * gpgsm.c (main): New option --debug-wait n, so that it is
2234         possible to attach gdb when used in server mode.
2235
2236         * sign.c (get_default_signer): Use keydb_classify_name here.
2237
2238 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2239
2240         * call-agent.c (LINELENGTH): Removed.
2241         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
2242         (gpgsm_agent_pkdecrypt): Likewise.
2243
2244 2001-12-13  Werner Koch  <wk@gnupg.org>
2245
2246         * keylist.c (list_cert_colon): Print alternative names of subject
2247         and a few other values.
2248
2249 2001-12-12  Werner Koch  <wk@gnupg.org>
2250
2251         * gpgsm.c (main): New options --assume-{armor,base64,binary}. 
2252         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
2253
2254 2001-12-04  Werner Koch  <wk@gnupg.org>
2255
2256         * call-agent.c (read_from_agent): Check for inquire responses.
2257         (request_reply): Handle them using a new callback arg, changed all
2258         callers.
2259         (gpgsm_agent_pkdecrypt): New.
2260
2261 2001-11-27  Werner Koch  <wk@gnupg.org>
2262
2263         * base64.c: New.  Changed all other functions to use this instead
2264         of direct creation of ksba_reader/writer.
2265         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
2266
2267 2001-11-26  Werner Koch  <wk@gnupg.org>
2268
2269         * gpgsm.c: New option --agent-program
2270         * call-agent.c (start_agent): Allow to override the default path
2271         to the agent.
2272
2273         * keydb.c (keydb_add_resource): Create keybox
2274
2275         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
2276
2277         * server.c (rc_to_assuan_status): New.  Use it for all commands.
2278
2279         
2280  Copyright 2001, 2002, 2003, 2004, 2005, 2006,
2281            2007, 2008 Free Software Foundation, Inc.
2282
2283  This file is free software; as a special exception the author gives
2284  unlimited permission to copy and/or distribute it, with or without
2285  modifications, as long as this notice is preserved.
2286
2287  This file is distributed in the hope that it will be useful, but
2288  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2289  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.