1 2007-05-18 Marcus Brinkmann <marcus@g10code.de>
3 * qualified.c (gpgsm_qualified_consent,
4 gpgsm_not_qualified_warning): Free ORIG_CODESET on error.
5 * certdump.c (gpgsm_format_keydesc): Likewise.
7 2007-05-07 Werner Koch <wk@g10code.com>
9 * certcheck.c (MY_GCRY_PK_ECDSA): New.
11 2007-04-20 Werner Koch <wk@g10code.com>
13 * gpgsm.c (main): Parameterize failed versions check messages.
15 2007-04-19 Werner Koch <wk@g10code.com>
17 * certcheck.c (do_encode_md): Add arg PKEY. Add support for DSA2
20 (pk_algo_from_sexp): A key will never contain ecdsa as algorithm,
23 2007-04-18 Werner Koch <wk@g10code.com>
25 * certcheck.c (do_encode_md): Support 160 bit ECDSA.
27 2007-04-13 Werner Koch <wk@g10code.com>
29 * call-agent.c (start_agent): Don't use log_error when using the
30 fallback hack to start the agent. This is bug 782.
32 2007-03-20 Werner Koch <wk@g10code.com>
34 * fingerprint.c (gpgsm_get_fingerprint): Add caching.
35 (gpgsm_get_fingerprint_string): Use bin2hexcolon().
36 (gpgsm_get_fingerprint_hexstring): Use bin2hex and allocate only
37 as much memory as required.
38 (gpgsm_get_keygrip_hexstring): Use bin2hex.
40 * certchain.c (gpgsm_validate_chain): Keep track of the
41 certificate chain and reset the ephemeral flags.
42 * keydb.c (keydb_set_cert_flags): New args EPHEMERAL and MASK.
43 Changed caller to use a mask of ~0. Return a proper error code if
44 the certificate is not available.
46 * gpgsm.c: Add option --p12-charset.
47 * gpgsm.h (struct opt): Add p12_charset.
48 * export.c (popen_protect_tool): Use new option.
50 2007-03-19 Werner Koch <wk@g10code.com>
52 Changes to let export and key listing use estream to help systems
55 * keylist.c: Use estream in place of stdio functions.
56 * gpgsm.c (open_es_fwrite): New.
57 (main): Use it for the list commands.
58 * server.c (data_line_cookie_functions): New.
59 (data_line_cookie_write, data_line_cookie_close): New.
60 (do_listkeys): Use estream.
62 * certdump.c (gpgsm_print_serial): Changed to use estream.
63 (gpgsm_print_time): Ditto.
64 (pretty_es_print_sexp): New.
65 (gpgsm_es_print_name): New.
66 (print_dn_part): New arg STREAM. Changed all callers.
67 (print_dn_parts): Ditto.
68 * certchain.c (gpgsm_validate_chain): Changed FP to type
70 (do_list, unknown_criticals, allowed_ca, check_cert_policy)
71 (is_cert_still_valid): Ditto.
73 * export.c (gpgsm_export): New arg STREAM.
74 (do_putc, do_fputs): New.
75 (print_short_info): Allow printing to optional STREAM.
76 * server.c (cmd_export): Use stream.
77 * base64.c (do_putc, do_fputs): New.
78 (base64_writer_cb, base64_finish_write): Let them cope with an
79 alternate output function.
80 (plain_writer_cb): New.
81 (gpgsm_create_writer): New arg STREAM and call plain_writer_cb for
82 binary output to an estream. Changed call callers.
84 2007-01-31 Werner Koch <wk@g10code.com>
86 * gpgsm.c (main): Let --gen-key print a more informative error
89 2007-01-25 Werner Koch <wk@g10code.com>
91 * Makefile.am (gpgsm_LDADD): Add LIBICONV. Noted by Billy Halsey.
93 2007-01-05 Werner Koch <wk@g10code.com>
95 * certchain.c (unknown_criticals): Add subjectAltName.
97 2006-12-21 Werner Koch <wk@g10code.com>
99 * gpgsm.c: Comment mtrace feature.
101 2006-12-21 Marcus Brinkmann <marcus@g10code.de>
103 * certchain.c (gpgsm_basic_cert_check): Release SUBJECT.
105 * encrypt.c (encrypt_dek): Release S_CIPH.
107 2006-12-20 Marcus Brinkmann <marcus@g10code.de>
109 * server.c (gpgsm_server): Release CTRL->server_local.
111 * base64.c: Add new members READER and WRITER in union U2.
112 (gpgsm_create_reader): Initialise CTX->u2.reader.
113 (gpgsm_destroy_reader): Invoke ksba_reader_release. Return early
115 (gpgsm_create_writer): Initialise CTX->u2.writer.
116 (gpgsm_destroy_writer): Invoke ksba_writer_release. Return early
119 2006-12-18 Marcus Brinkmann <marcus@g10code.de>
121 * fingerprint.c (gpgsm_get_fingerprint): Close MD.
123 2006-11-24 Werner Koch <wk@g10code.com>
125 * certdump.c (parse_dn_part): Take '#' as a special character only
126 at the beginning of a string.
128 2006-11-21 Werner Koch <wk@g10code.com>
130 * certdump.c (my_funopen_hook_ret_t): New.
131 (format_name_writer): Use it for the return value.
133 2006-11-14 Werner Koch <wk@g10code.com>
135 * server.c (skip_options): Skip leading spaces.
136 (has_option): Honor "--".
137 (cmd_export): Add option --data to do an inline export. Skip all
140 * certdump.c (gpgsm_fpr_and_name_for_status): New.
141 * verify.c (gpgsm_verify): Use it to print correct status messages.
143 2006-11-11 Werner Koch <wk@g10code.com>
145 * server.c (skip_options): New.
147 2006-10-24 Marcus Brinkmann <marcus@g10code.de>
149 * Makefile.am (AM_CFLAGS): Add $(LIBASSUAN_CFLAGS).
151 2006-10-23 Werner Koch <wk@g10code.com>
153 * gpgsm.c (main): Remap common cipher algo names to their OIDs.
154 (main): New command --gpgconf-test.
156 2006-10-20 Werner Koch <wk@g10code.com>
158 * keydb.c (classify_user_id): Parse keygrip for the '&' identifier.
160 2006-10-18 Werner Koch <wk@g10code.com>
162 * keylist.c (list_cert_raw): Also test for GPG_ERR_NO_VALUE when
163 testing for GPG_ERR_NO_DATA.
164 * certlist.c (cert_usage_p, gpgsm_find_cert): Ditto.
165 * certchain.c (check_cert_policy): Ditto.
167 * keylist.c (list_cert_std, list_cert_raw): Print "none" for no
168 chain length available.
170 2006-10-17 Werner Koch <wk@g10code.com>
172 * gpgsm.c: No need for pth.h.
173 (main): or to init it. It used to be hack for W32.
175 * sign.c (gpgsm_get_default_cert): Changed to return only
176 certificates usable for signing.
178 2006-10-16 Werner Koch <wk@g10code.com>
180 * certchain.c (already_asked_marktrusted)
181 (set_already_asked_marktrusted): New.
182 (gpgsm_validate_chain) <not trusted>: Keep track of certificates
183 we already asked for.
185 2006-10-11 Werner Koch <wk@g10code.com>
187 * certreqgen.c (proc_parameters, create_request): Allow for
188 creation directly from a card.
189 * call-agent.c (gpgsm_agent_readkey): New arg FROMCARD.
190 (gpgsm_scd_pksign): New.
192 2006-10-06 Werner Koch <wk@g10code.com>
194 * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
195 (gpgsm_LDADD): Ditto.
197 2006-10-05 Werner Koch <wk@g10code.com>
199 * certcheck.c (do_encode_md): Check that the has algo is valid.
201 2006-10-02 Marcus Brinkmann <marcus@g10code.de>
203 * server.c (register_commands): New commands DUMPKEYS and
205 (cmd_dumpkeys, cmd_dumpsecretkeys): New functions.
206 (option_handler): Support with-key-data option.
208 2006-09-26 Werner Koch <wk@g10code.com>
210 * certchain.c (gpgsm_validate_chain): More changes for the relax
211 feature. Use certificate reference counting instead of the old
212 explicit tests. Added a missing free.
214 2006-09-25 Werner Koch <wk@g10code.com>
216 * gpgsm.h (struct rootca_flags_s): New.
217 * call-agent.c (istrusted_status_cb): New.
218 (gpgsm_agent_istrusted): New arg ROOTCA_FLAGS.
219 * keylist.c (list_cert_colon): Use dummy for new arg.
220 * certchain.c (gpgsm_validate_chain): Make use of the relax flag
221 for root certificates.
222 (unknown_criticals): Ignore a GPG_ERR_NO_VALUE.
224 2006-09-20 Werner Koch <wk@g10code.com>
226 * gpgsm.c: Add alias command --dump-cert.
228 * Makefile.am: Changes to allow parallel make runs.
230 2006-09-18 Werner Koch <wk@g10code.com>
232 * gpgsm.c (main): Use this to import standard certificates.
233 * keydb.c (keydb_add_resource): New arg AUTO_CREATED.
235 2006-09-14 Werner Koch <wk@g10code.com>
237 Replaced all call gpg_error_from_errno(errno) by
238 gpg_error_from_syserror().
240 2006-09-13 Werner Koch <wk@g10code.com>
242 * keylist.c (list_internal_keys): Print marker line to FP and not
245 * gpgsm.c (main): All list key list commands now make ose of
246 --output. Cleaned up calls to list modes. New command
247 --dump-chain. Renamed --list-sigs to --list-chain and added an
248 alias for the old one.
250 * server.c (cmd_message): Changed to use assuan_command_parse_fd.
251 (option_handler): New option list-to-output.
252 (do_listkeys): Use it.
254 2006-09-06 Werner Koch <wk@g10code.com>
256 * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
258 (CTRL): Removed and changed everywhere to ctrl_t.
261 Replaced all Assuan error codes by libgpg-error codes. Removed
262 all map_to_assuan_status and map_assuan_err.
264 * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
265 switch to gpg-error codes.
266 * server.c (set_error): Adjusted.
268 2006-08-29 Werner Koch <wk@g10code.com>
270 * call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
271 complete S-expressions as implemented by the current gpg-agent.
273 * gpgsm.c (main): Implement --output for encrypt, decrypt, sign
276 2006-07-03 Werner Koch <wk@g10code.com>
278 * certreqgen.c (proc_parameters): Print the component label of a
281 2006-06-26 Werner Koch <wk@g10code.com>
283 * certdump.c (gpgsm_cert_log_name): New.
284 * certchain.c (is_cert_still_valid): Log the name of the certificate.
286 2006-06-20 Werner Koch <wk@g10code.com>
288 * gpgsm.c (gpgsm_init_default_ctrl): Take care of the command line
289 option --include-certs.
291 * keylist.c (list_cert_raw): Print the certid.
293 2006-05-23 Werner Koch <wk@g10code.com>
295 * keydb.c (hextobyte): Deleted as it is now defined in jnlib.
297 * Makefile.am (gpgsm_LDADD): Include ZLIBS.
299 2006-05-19 Marcus Brinkmann <marcus@g10code.de>
301 * keydb.c (keydb_insert_cert): Do not lock here, but only check if
303 (keydb_store_cert): Lock here.
305 * keydb.h (keydb_delete): Accept new argument UNLOCK.
306 * keydb.c (keydb_delete): Likewise. Only unlock if this is set.
307 * delete.c (delete_one): Add new argument to invocation of
310 2006-05-15 Werner Koch <wk@g10code.com>
312 * keylist.c (print_names_raw): Sanitize URI.
314 2006-03-21 Werner Koch <wk@g10code.com>
316 * certchain.c (get_regtp_ca_info): New.
317 (allowed_ca): Use it.
319 2006-03-20 Werner Koch <wk@g10code.com>
321 * qualified.c (gpgsm_is_in_qualified_list): New optional arg COUNTRY.
323 2006-02-17 Werner Koch <wk@g10code.com>
325 * call-dirmngr.c (start_dirmngr): Print name of dirmngr to be started.
327 2005-11-23 Werner Koch <wk@g10code.com>
329 * gpgsm.h: New member QUALSIG_APPROVAL.
330 * sign.c (gpgsm_sign): Print a warning if a certificate is not
332 * qualified.c (gpgsm_qualified_consent): Include a note that this
333 is not approved software.
334 (gpgsm_not_qualified_warning): New.
335 * gpgsm.c (main): Prepared to print a note whether the software
338 2005-11-13 Werner Koch <wk@g10code.com>
340 * call-agent.c (gpgsm_agent_get_confirmation): New.
342 * keylist.c (list_cert_std): Print qualified status.
344 * certchain.c (gpgsm_validate_chain): Check for qualified
347 * certchain.c (gpgsm_basic_cert_check): Release keydb handle when
348 no-chain-validation is used.
350 2005-11-11 Werner Koch <wk@g10code.com>
352 * keylist.c (print_capabilities): Print is_qualified status.
354 2005-10-28 Werner Koch <wk@g10code.com>
356 * certdump.c (pretty_print_sexp): New.
357 (gpgsm_print_name2): Use it here. This allows proper printing of
358 DNS names as used with server certificates.
360 2005-10-10 Werner Koch <wk@g10code.com>
362 * keylist.c: Add pkaAdress OID as reference.
364 2005-10-08 Marcus Brinkmann <marcus@g10code.de>
366 * Makefile.am (gpgsm_LDADD): Add ../gl/libgnu.a after
367 ../common/libcommon.a.
369 2005-09-13 Werner Koch <wk@g10code.com>
371 * verify.c (gpgsm_verify): Print a note if the unknown algorithm
373 * sign.c (gpgsm_sign): Ditto.
374 * certcheck.c (gpgsm_check_cert_sig): Ditto.
376 2005-09-08 Werner Koch <wk@g10code.com>
378 * export.c (popen_protect_tool): Add option --have-cert. We
379 probably lost this option with 1.9.14 due to restructuring of
382 2005-07-21 Werner Koch <wk@g10code.com>
384 * gpgsm.c (main): New options --no-log-file and --debug-none.
386 * certreqgen.c (get_parameter, get_parameter_value): Add SEQ arg
387 to allow enumeration. Changed all callers.
388 (create_request): Process DNS and URI parameters.
390 2005-07-20 Werner Koch <wk@g10code.com>
392 * keylist.c (email_kludge): Reworked.
394 * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
396 * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
398 2005-07-19 Werner Koch <wk@g10code.com>
400 * fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
401 Bug accidently introduced while solving the #$%^& gcc
402 signed/unsigned char* warnings.
404 2005-06-15 Werner Koch <wk@g10code.com>
406 * delete.c (delete_one): Changed FPR to unsigned.
407 * encrypt.c (encrypt_dek): Made ENCVAL unsigned.
408 (gpgsm_encrypt): Ditto.
409 * sign.c (gpgsm_sign): Made SIGVAL unsigned.
410 * base64.c (base64_reader_cb): Need to use some casting to get
411 around signed/unsigned char* warnings.
412 * certcheck.c (gpgsm_check_cms_signature): Ditto.
413 (gpgsm_create_cms_signature): Changed arg R_SIGVAL to unsigned char*.
414 (do_encode_md): Made NFRAME a size_t.
415 * certdump.c (gpgsm_print_serial): Fixed signed/unsigned warning.
416 (gpgsm_dump_serial): Ditto.
417 (gpgsm_format_serial): Ditto.
418 (gpgsm_dump_string): Ditto.
419 (gpgsm_dump_cert): Ditto.
420 (parse_dn_part): Ditto.
421 (gpgsm_print_name2): Ditto.
422 * keylist.c (email_kludge): Ditto.
423 * certreqgen.c (proc_parameters, create_request): Ditto.
424 (create_request): Ditto.
425 * call-agent.c (gpgsm_agent_pksign): Made arg R_BUF unsigned.
426 (struct cipher_parm_s): Made CIPHERTEXT unsigned.
427 (struct genkey_parm_s): Ditto.
428 * server.c (strcpy_escaped_plus): Made arg S signed char*.
429 * fingerprint.c (gpgsm_get_fingerprint): Made ARRAY unsigned.
430 (gpgsm_get_keygrip): Ditto.
431 * keydb.c (keydb_insert_cert): Made DIGEST unsigned.
432 (keydb_update_cert): Ditto.
433 (classify_user_id): Apply cast to signed/unsigned assignment.
436 2005-06-01 Werner Koch <wk@g10code.com>
438 * misc.c: Include setenv.h.
440 2005-04-21 Werner Koch <wk@g10code.com>
442 * gpgsm.c: New options --{enable,disable}-trusted-cert-crl-check.
443 * certchain.c (gpgsm_validate_chain): Make use of it.
445 * certchain.c (gpgsm_validate_chain): Check revocations even for
446 expired certificates. This is required because on signature
447 verification an expired key is fine whereas a revoked one is not.
449 2005-04-20 Werner Koch <wk@g10code.com>
451 * Makefile.am (AM_CFLAGS): Add PTH_CFLAGS as noted by several folks.
453 2005-04-19 Werner Koch <wk@g10code.com>
455 * certchain.c (check_cert_policy): Print the diagnostic for a open
456 failure of policies.txt only in verbose mode or when it is not
459 2005-04-17 Werner Koch <wk@g10code.com>
461 * call-dirmngr.c (inq_certificate): Add new inquire SENDCERT_SKI.
462 * certlist.c (gpgsm_find_cert): Add new arg KEYID and implement
463 this filter. Changed all callers.
465 * certchain.c (find_up_search_by_keyid): New helper.
466 (find_up): Also try using the AKI.keyIdentifier.
467 (find_up_external): Ditto.
469 2005-04-15 Werner Koch <wk@g10code.com>
471 * keylist.c (list_cert_raw): Print the subjectKeyIdentifier as
472 well as the keyIdentifier part of the authorityKeyIdentifier.
474 2005-03-31 Werner Koch <wk@g10code.com>
476 * call-dirmngr.c (start_dirmngr): Use PATHSEP_C instead of ':'.
477 * call-agent.c (start_agent): Ditto.
479 2005-03-17 Werner Koch <wk@g10code.com>
481 * certcheck.c: Fixed use of DBG_CRYPTO and DBG_X509.
483 * certchain.c (gpgsm_basic_cert_check): Dump certificates after a
484 failed gcry_pk_verify.
485 (find_up): Do an external lookup also for an authorityKeyIdentifier
486 lookup. Factored external lookup code out to ..
487 (find_up_external): .. new.
489 2005-03-03 Werner Koch <wk@g10code.com>
491 * Makefile.am (gpgsm_LDADD): Added PTH_LIBS. Noted by Kazu Yamamoto.
493 2005-01-13 Werner Koch <wk@g10code.com>
495 * certreqgen.c (proc_parameters): Cast printf arg.
497 2004-12-22 Werner Koch <wk@g10code.com>
499 * gpgsm.c (set_binary): New.
500 (main, open_read, open_fwrite): Use it.
502 2004-12-21 Werner Koch <wk@g10code.com>
504 * gpgsm.c (main): Use default_homedir().
505 (main) [W32]: Default to disabled CRL checks.
507 2004-12-20 Werner Koch <wk@g10code.com>
509 * call-agent.c (start_agent): Before starting a pipe server start
510 to connect to a server on the standard socket. Use PATHSEP
511 * call-dirmngr.c (start_dirmngr): Use PATHSEP.
513 * import.c: Include unistd.h for dup and close.
515 2004-12-18 Werner Koch <wk@g10code.com>
517 * gpgsm.h (map_assuan_err): Define in terms of
518 map_assuan_err_with_source.
519 * call-agent.c (start_agent): Pass error source to
520 send_pinentry_environment.
522 2004-12-17 Werner Koch <wk@g10code.com>
524 * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
525 (run_command_status_cb): Return cancel status if gpgsm_status
528 * server.c (gpgsm_status, gpgsm_status2)
529 (gpgsm_status_with_err_code): Return an error code.
530 (gpgsm_status2): Always call va_end().
532 2004-12-15 Werner Koch <wk@g10code.com>
534 * call-dirmngr.c (lookup_status_cb): Send progress messages
536 (isvalid_status_cb): Ditto.
537 (gpgsm_dirmngr_isvalid): Put CTRL into status CB parameters.
538 (gpgsm_dirmngr_run_command, run_command_status_cb): Pass CTRL to
539 status callback and handle PROGRESS.
541 * misc.c (setup_pinentry_env) [W32]: Don't use it.
543 * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
544 operations and to resolve libassuan symbols.
545 (run_protect_tool) [W32]: Disable it.
547 * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
549 2004-12-07 Werner Koch <wk@g10code.com>
551 * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
552 under W32 we need the w32 pth code from jnlib.
554 * misc.c (setup_pinentry_env) [W32]: Disabled.
556 2004-12-06 Werner Koch <wk@g10code.com>
558 * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
560 * import.c (popen_protect_tool): Simplified by making use of
562 (parse_p12): Likewise, using gnupg_wait_process.
563 * export.c (popen_protect_tool): Ditto.
566 * keydb.c: Don't define DIRSEP_S here.
568 2004-12-02 Werner Koch <wk@g10code.com>
570 * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
571 signature for debugging.
572 (gpgsm_validate_chain): Ditto.
574 2004-11-29 Werner Koch <wk@g10code.com>
576 * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
578 (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE. This
579 now allows to add debug flags on top of a debug-level setting.
581 2004-11-23 Werner Koch <wk@g10code.com>
583 * gpgsm.c: New option --prefer-system-dirmngr.
584 * call-dirmngr.c (start_dirmngr): Implement this option.
586 2004-10-22 Werner Koch <wk@g10code.com>
588 * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
589 request PEM header. This is according to the Sphinx standard.
591 2004-10-08 Moritz Schulte <moritz@g10code.com>
593 * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
594 case the no_chain_validation-return-short-cut is used (fixes
597 2004-10-04 Werner Koch <wk@g10code.com>
599 * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
601 2004-09-30 Werner Koch <wk@g10code.com>
603 * gpgsm.c (i18n_init): Always use LC_ALL.
605 * certdump.c (gpgsm_format_name): Factored code out to ..
606 (gpgsm_format_name2): .. new.
607 (gpgsm_print_name): Factored code out to ..
608 (gpgsm_print_name2): .. new.
609 (print_dn_part): New arg TRANSLATE. Changed all callers.
610 (print_dn_parts): Ditto.
611 (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
612 it to stay UTF-8 but we still want to filter out bad control
615 * Makefile.am: Adjusted for gettext 0.14.
617 * keylist.c (list_cert_colon): Make sure that the expired flag has
618 a higher precedence than the invalid flag.
620 2004-09-29 Werner Koch <wk@g10code.com>
622 * import.c (parse_p12): Write an error status line for bad
623 passphrases. Add new arg CTRL and changed caller.
624 * export.c (export_p12): Likewise.
626 2004-09-14 Werner Koch <wk@g10code.com>
628 * certchain.c (gpgsm_validate_chain): Give expired certificates a
629 higher error precedence and don't bother to check any CRL in that
632 2004-08-24 Werner Koch <wk@g10code.de>
634 * certlist.c: Fixed typo in ocsp OID.
636 2004-08-18 Werner Koch <wk@g10code.de>
638 * certlist.c (gpgsm_cert_use_ocsp_p): New.
639 (cert_usage_p): Support it here.
640 * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
642 2004-08-17 Marcus Brinkmann <marcus@g10code.de>
644 * import.c: Fix typo in last change.
646 2004-08-17 Werner Koch <wk@g10code.de>
648 * import.c (check_and_store): Do a full validation if
649 --with-validation is set.
651 * certchain.c (gpgsm_basic_cert_check): Print more detailed error
654 * certcheck.c (do_encode_md): Partly support DSA. Add new arg
655 PKALGO. Changed all callers to pass it.
656 (pk_algo_from_sexp): New.
658 2004-08-16 Werner Koch <wk@g10code.de>
660 * gpgsm.c: New option --fixed-passphrase.
661 * import.c (popen_protect_tool): Pass it to the protect-tool.
663 * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
666 2004-08-06 Werner Koch <wk@g10code.com>
668 * gpgsm.c: New option --with-ephemeral-keys.
669 * keylist.c (list_internal_keys): Set it here.
670 (list_cert_raw): And indicate those keys. Changed all our callers
671 to pass the new arg HD through.
673 2004-07-23 Werner Koch <wk@g10code.de>
675 * certreqgen.c (proc_parameters): Do not allow key length below
678 2004-07-22 Werner Koch <wk@g10code.de>
680 * keylist.c (list_cert_raw): Print the keygrip.
682 2004-07-20 Werner Koch <wk@gnupg.org>
684 * certchain.c (gpgsm_validate_chain): The trust check didn't
685 worked anymore, probably due to the changes at 2003-03-04. Fixed.
687 2004-06-06 Werner Koch <wk@gnupg.org>
689 * certreqgen.c (get_parameter_uint, create_request): Create
690 an extension for key usage when requested.
692 2004-05-12 Werner Koch <wk@gnupg.org>
694 * gpgsm.c (main): Install emergency_cleanup also as an atexit
697 * verify.c (gpgsm_verify): Removed the separate error code
698 handling for KSBA. We use shared error codes anyway.
700 * export.c (export_p12): Removed debugging code.
702 * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
704 2004-05-11 Werner Koch <wk@gnupg.org>
706 * sign.c (gpgsm_sign): Include the error source in the final error
708 * decrypt.c (gpgsm_decrypt): Ditto.
710 * fingerprint.c (gpgsm_get_key_algo_info): New.
711 * sign.c (gpgsm_sign): Don't assume RSA in the status line.
712 * keylist.c (list_cert_colon): Really print the algorithm and key
714 (list_cert_raw, list_cert_std): Ditto.
715 (list_cert_colon): Reorganized to be able to tell whether a root
716 certificate is trusted.
718 * gpgsm.c: New option --debug-allow-core-dump.
720 * gpgsm.h (opt): Add member CONFIG_FILENAME.
721 * gpgsm.c (main): Use it here instead of the local var.
723 * server.c (gpgsm_server): Print some additional information with
724 the hello in verbose mode.
726 2004-04-30 Werner Koch <wk@gnupg.org>
728 * import.c (check_and_store): Do not update the stats for hidden
729 imports of issuer certs.
730 (popen_protect_tool): Request statusmessages from the protect-tool.
731 (parse_p12): Detect status messages. Add new arg STATS and update them.
732 (print_imported_summary): Include secret key stats.
734 2004-04-28 Werner Koch <wk@gnupg.org>
736 * gpgsm.c: New command --keydb-clear-some-cert-flags.
737 * keydb.c (keydb_clear_some_cert_flags): New.
738 (keydb_update_keyblock, keydb_set_flags): Change error code
739 CONFLICT to NOT_LOCKED.
741 2004-04-26 Werner Koch <wk@gnupg.org>
743 * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
746 * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt)
747 (gpgsm_agent_genkey, gpgsm_agent_istrusted)
748 (gpgsm_agent_marktrusted, gpgsm_agent_havekey)
749 (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
750 (start_agent): New arg CTRL. Send progress item when starting a
752 * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
753 CTRL to be passed down to the agent function.
754 * decrypt.c (prepare_decryption): Ditto.
755 * certreqgen.c (proc_parameters, read_parameters): Ditto.
756 * certcheck.c (gpgsm_create_cms_signature): Ditto.
758 2004-04-23 Werner Koch <wk@gnupg.org>
760 * keydb.c (keydb_add_resource): Try to compress the file on init.
762 * keylist.c (oidtranstbl): New. OIDs collected from several sources.
763 (print_name_raw, print_names_raw, list_cert_raw): New.
764 (gpgsm_list_keys): Check the dump mode and pass it down as
767 2004-04-22 Werner Koch <wk@gnupg.org>
769 * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
772 2004-04-13 Werner Koch <wk@gnupg.org>
774 * misc.c (setup_pinentry_env): New.
775 * import.c (popen_protect_tool): Call it.
776 * export.c (popen_protect_tool): Call it.
778 2004-04-08 Werner Koch <wk@gnupg.org>
780 * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a
783 2004-04-07 Werner Koch <wk@gnupg.org>
785 * gpgsm.c: New option --force-crl-refresh.
786 * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
788 2004-04-05 Werner Koch <wk@gnupg.org>
790 * server.c (get_status_string): Add STATUS_NEWSIG.
791 * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
793 * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
794 not just warn if a cert is not suitable; bail out immediately.
796 2004-04-01 Werner Koch <wk@gnupg.org>
798 * call-dirmngr.c (isvalid_status_cb): New.
799 (unhexify_fpr): New. Taken from ../g10/call-agent.c
800 (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
801 it thru. Detect need to check the respondert cert and do that.
802 * certchain.c (gpgsm_validate_chain): Add new arg FLAGS. Changed
805 2004-03-24 Werner Koch <wk@gnupg.org>
807 * sign.c (gpgsm_sign): Include a short list of capabilities.
809 2004-03-17 Werner Koch <wk@gnupg.org>
811 * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
813 2004-03-16 Werner Koch <wk@gnupg.org>
815 * gpgsm.c (main): Implemented --gpgconf-list.
817 2004-03-15 Werner Koch <wk@gnupg.org>
819 * keylist.c (list_cert_colon): Hack to set the expired flag.
821 2004-03-09 Werner Koch <wk@gnupg.org>
823 * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
825 * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
827 2004-03-04 Werner Koch <wk@gnupg.org>
829 * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
831 * certchain.c (is_cert_still_valid): New. Code moved from ...
832 (gpgsm_validate_chain): ... here because we now need to check at
833 two places and at a later stage, so that we can pass the issuer
834 cert down to the dirmngr.
836 2004-03-03 Werner Koch <wk@gnupg.org>
838 * call-agent.c (start_agent): Replaced pinentry setup code by a
839 call to a new common function.
841 * certdump.c (gpgsm_format_keydesc): Make sure the string is
844 * export.c (gpgsm_export): Make sure that we don't export more
845 than one certificate.
847 2004-03-02 Werner Koch <wk@gnupg.org>
849 * export.c (create_duptable, destroy_duptable)
850 (insert_duptable): New.
851 (gpgsm_export): Avoid duplicates.
853 2004-02-26 Werner Koch <wk@gnupg.org>
855 * certchain.c (compare_certs): New.
856 (gpgsm_validate_chain): Fixed infinite certificate checks after
859 2004-02-24 Werner Koch <wk@gnupg.org>
861 * keylist.c (list_cert_colon): Print the fingerprint as the
862 cert-id for root certificates.
864 2004-02-21 Werner Koch <wk@gnupg.org>
866 * keylist.c (list_internal_keys): Return error codes.
867 (list_external_keys, gpgsm_list_keys): Ditto.
868 * server.c (do_listkeys): Ditto.
870 * gpgsm.c (main): Display a key description for --passwd.
871 * call-agent.c (gpgsm_agent_passwd): New arg DESC.
873 2004-02-20 Werner Koch <wk@gnupg.org>
875 * gpgsm.c (main): New option --debug-ignore-expiration.
876 * certchain.c (gpgsm_validate_chain): Use it here.
878 * certlist.c (cert_usage_p): Apply extKeyUsage.
880 2004-02-19 Werner Koch <wk@gnupg.org>
882 * export.c (export_p12, popen_protect_tool)
883 (gpgsm_p12_export): New.
884 * gpgsm.c (main): New command --export-secret-key-p12.
886 2004-02-18 Werner Koch <wk@gnupg.org>
888 * gpgsm.c (set_debug): Set the new --debug-level flags.
889 (main): New option --gpgconf-list.
890 (main): Do not setup -u and -r keys when not required.
891 (main): Setup the used character set.
893 * keydb.c (keydb_add_resource): Print a hint to start the
896 2004-02-17 Werner Koch <wk@gnupg.org>
898 * gpgsm.c: Fixed value parsing for --with-validation.
899 * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
900 * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
902 * gpgsm.c: New option --with-md5-fingerprint.
903 * keylist.c (list_cert_std): Print MD5 fpr.
905 * gpgsm.c: New options --with-validation.
906 * server.c (option_handler): New option "with-validation".
907 * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
908 WITH_VALIDATION. Changed callers to set it.
909 (list_external_cb, list_external_keys): Pass CTRL to the callback.
910 (list_cert_colon): Add arg CTRL. Check validation if requested.
911 * certchain.c (unknown_criticals, allowed_ca, check_cert_policy)
912 (gpgsm_validate_chain): New args LISTMODE and FP.
913 (do_list): New helper for info output.
914 (find_up): New arg FIND_NEXT.
915 (gpgsm_validate_chain): After a bad signature try again with other
918 * import.c (print_imported_status): New arg NEW_CERT. Print
919 additional STATUS_IMPORT_OK becuase that is what gpgme expects.
920 (check_and_store): Always call above function after import.
921 * server.c (get_status_string): Added STATUS_IMPORT_OK.
923 2004-02-13 Werner Koch <wk@gnupg.org>
925 * certcheck.c (gpgsm_create_cms_signature): Format a description
926 for use by the pinentry.
927 * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
928 * certdump.c (format_name_cookie, format_name_writer)
929 (gpgsm_format_name): New.
930 (gpgsm_format_serial): New.
931 (gpgsm_format_keydesc): New.
932 * call-agent.c (gpgsm_agent_pksign): New arg DESC.
933 (gpgsm_agent_pkdecrypt): Ditto.
935 * encrypt.c (init_dek): Check for too weak algorithms.
937 * import.c (parse_p12, popen_protect_tool): New.
939 * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
941 (base64_reader_cb): Handle it here.
942 (gpgsm_reader_eof_seen): New.
943 (base64_reader_cb): Set a flag for EOF.
944 (simple_reader_cb): Ditto.
946 2004-02-12 Werner Koch <wk@gnupg.org>
948 * gpgsm.h, gpgsm.c: New option --protect-tool-program.
949 * gpgsm.c (run_protect_tool): Use it.
951 2004-02-11 Werner Koch <wk@gnupg.org>
953 * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
954 will allow to override directory names at make time.
956 2004-02-02 Werner Koch <wk@gnupg.org>
958 * import.c (check_and_store): Import certificates even with
959 missing issuer's cert. Fixed an "depending on the verbose
962 * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
965 * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
967 (list_internal_keys): Retrieve validity flag.
968 (list_external_cb): Pass 0 as validity flag.
969 * keydb.c (keydb_get_flags, keydb_set_flags): New.
970 (keydb_set_cert_flags): New.
971 (lock_all): Return a proper error code.
973 (keydb_delete): Don't lock but check that it has been locked.
974 (keydb_update_keyblock): Ditto.
975 * delete.c (delete_one): Take a lock.
977 2004-01-30 Werner Koch <wk@gnupg.org>
979 * certchain.c (check_cert_policy): Fixed read error checking.
980 (check_cert_policy): With no critical policies issue only a
981 warning if the policy file does not exists.
983 * sign.c (add_certificate_list): Decrement N for the first cert.
985 2004-01-29 Werner Koch <wk@gnupg.org>
987 * certdump.c (parse_dn_part): Map common OIDs to human readable
988 labels. Make sure that a value won't get truncated if it includes
991 2004-01-28 Werner Koch <wk@gnupg.org>
993 * certchain.c (gpgsm_validate_chain): Changed the message printed
994 for an untrusted root certificate.
996 2004-01-27 Werner Koch <wk@gnupg.org>
998 * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
999 (print_dn_part): Do not delimit multiple RDN by " + ". Handle
1000 multi-valued RDNs in a special way, i.e. in the order specified by
1002 (print_dn_parts): Simplified.
1004 2004-01-16 Werner Koch <wk@gnupg.org>
1006 * sign.c (gpgsm_sign): Print an error message on all failures.
1007 * decrypt.c (gpgsm_decrypt): Ditto.
1009 2003-12-17 Werner Koch <wk@gnupg.org>
1011 * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
1012 (cmd_encrypt): Add all enrypt-to marked certs to the list.
1013 * encrypt.c (gpgsm_encrypt): Check that real recipients are
1015 * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
1016 options work. Pass the list of recients to gpgsm_server.
1017 * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
1018 (opt): Add NO_ENCRYPT_TO.
1019 * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
1020 Changed all callers and ignore duplicate entries.
1021 (is_cert_in_certlist): New.
1022 (gpgsm_add_cert_to_certlist): New.
1024 * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
1025 (gpgsm_dump_serial): Ditto.
1027 * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
1029 2003-12-16 Werner Koch <wk@gnupg.org>
1031 * gpgsm.c (main): Set the prefixes for assuan logging.
1033 * sign.c (gpgsm_sign): Add validation checks for the default
1036 * gpgsm.c: Add -k as alias for --list-keys and -K for
1039 2003-12-15 Werner Koch <wk@gnupg.org>
1041 * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
1042 not need for real strong random here and it even better protect
1043 the random bits used for the key.
1045 2003-12-01 Werner Koch <wk@gnupg.org>
1047 * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
1048 (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
1049 * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
1050 * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
1051 proceed accordingly.
1053 2003-11-19 Werner Koch <wk@gnupg.org>
1055 * verify.c (gpgsm_verify): Use "0" instead of an empty string for
1056 the VALIDSIG status.
1058 2003-11-18 Werner Koch <wk@gnupg.org>
1060 * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
1062 * certchain.c (unknown_criticals): Fixed an error code test.
1064 2003-11-12 Werner Koch <wk@gnupg.org>
1066 Adjusted for API changes in Libksba.
1068 2003-10-31 Werner Koch <wk@gnupg.org>
1070 * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
1071 * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
1072 * sign.c (gpgsm_sign): Ditto.
1073 * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
1074 * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
1077 2003-10-25 Werner Koch <wk@gnupg.org>
1079 * certreqgen.c (read_parameters): Fixed faulty of !spacep().
1081 2003-08-20 Marcus Brinkmann <marcus@g10code.de>
1083 * encrypt.c (encode_session_key): Allocate enough space. Cast key
1084 byte to unsigned char to prevent sign extension.
1085 (encrypt_dek): Check return value before error.
1087 2003-08-14 Timo Schulz <twoaday@freakmail.de>
1089 * encrypt.c (encode_session_key): Use new Libgcrypt interface.
1091 2003-07-31 Werner Koch <wk@gnupg.org>
1093 * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
1095 2003-07-29 Werner Koch <wk@gnupg.org>
1097 * gpgsm.c (main): Add secmem features and set the random seed file.
1098 (gpgsm_exit): Update the random seed file and enable debug output.
1100 2003-07-27 Werner Koch <wk@gnupg.org>
1102 Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
1104 2003-06-24 Werner Koch <wk@gnupg.org>
1106 * server.c (gpgsm_status_with_err_code): New.
1107 * verify.c (gpgsm_verify): Use it here instead of the old
1110 * verify.c (strtimestamp): Renamed to strtimestamp_r
1112 Adjusted for changes in the libgcrypt API. Some more fixes for the
1115 2003-06-04 Werner Koch <wk@gnupg.org>
1117 * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
1118 Include new membuf header and changed used type.
1120 Renamed error codes from INVALID to INV and removed _ERROR suffixes.
1122 2003-06-03 Werner Koch <wk@gnupg.org>
1124 Changed all error codes in all files to the new libgpg-error scheme.
1126 * gpgsm.h: Include gpg-error.h .
1127 * Makefile.am: Link with libgpg-error.
1129 2003-04-29 Werner Koch <wk@gnupg.org>
1131 * Makefile.am: Use libassuan. Don't override LDFLAGS anymore.
1132 * server.c (register_commands): Adjust for new Assuan semantics.
1134 2002-12-03 Werner Koch <wk@gnupg.org>
1136 * call-agent.c (gpgsm_agent_passwd): New.
1137 * gpgsm.c (main): New command --passwd and --call-protect-tool
1138 (run_protect_tool): New.
1140 2002-11-25 Werner Koch <wk@gnupg.org>
1142 * verify.c (gpgsm_verify): Handle content-type attribute.
1144 2002-11-13 Werner Koch <wk@gnupg.org>
1146 * call-agent.c (start_agent): Try to use $GPG_TTY instead of
1147 ttyname. Changed ttyname to test stdin becuase it can be assumed
1148 that output redirection is more common that input redirection.
1150 2002-11-12 Werner Koch <wk@gnupg.org>
1152 * gpgsm.c: New command --call-dirmngr.
1153 * call-dirmngr.c (gpgsm_dirmngr_run_command)
1154 (run_command_inq_cb,run_command_cb)
1155 (run_command_status_cb): New.
1157 2002-11-11 Werner Koch <wk@gnupg.org>
1159 * certcheck.c (gpgsm_check_cms_signature): Don't double free
1160 s_sig but free s_pkey at leave.
1162 2002-11-10 Werner Koch <wk@gnupg.org>
1164 * gpgsm.c: Removed duplicate --list-secret-key entry.
1166 2002-09-19 Werner Koch <wk@gnupg.org>
1168 * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
1170 * certchain.c (find_up): Print info when the cert was not found
1171 by the autorithyKeyIdentifier.
1173 2002-09-03 Werner Koch <wk@gnupg.org>
1175 * gpgsm.c (main): Disable the internal libgcrypt locking.
1177 2002-08-21 Werner Koch <wk@gnupg.org>
1179 * import.c (print_imported_summary): Cleaned up. Print new
1181 (check_and_store): Update non_imported counter.
1182 (print_import_problem): New.
1183 (check_and_store): Print error status message.
1184 * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
1186 2002-08-20 Werner Koch <wk@gnupg.org>
1188 * gpgsm.c (main): Use the log file only in server mode.
1190 * import.c (print_imported_summary): New.
1191 (check_and_store): Update the counters, take new argument.
1192 (import_one): Factored out core of gpgsm_import.
1193 (gpgsm_import): Print counters.
1194 (gpgsm_import_files): New.
1195 * gpgsm.c (main): Use the new function for import.
1197 2002-08-19 Werner Koch <wk@gnupg.org>
1199 * decrypt.c (gpgsm_decrypt): Return a better error status token.
1200 * verify.c (gpgsm_verify): Don't error on messages with no signing
1201 time or no message digest. This is only the case for messages
1202 without any signed attributes.
1204 2002-08-16 Werner Koch <wk@gnupg.org>
1206 * certpath.c: Renamed to ..
1207 * certchain.c: this. Renamed all all other usages of "path" in the
1208 context of certificates to "chain".
1210 * call-agent.c (learn_cb): Special treatment when the issuer
1211 certificate is missing.
1213 2002-08-10 Werner Koch <wk@gnupg.org>
1215 * Makefile.am (INCLUDES): Add definition for localedir.
1217 * keylist.c (list_cert_colon): Print the short fingerprint in the
1219 * fingerprint.c (gpgsm_get_short_fingerprint): New.
1220 * verify.c (gpgsm_verify): Print more verbose info for a good
1223 2002-08-09 Werner Koch <wk@gnupg.org>
1225 * decrypt.c (prepare_decryption): Hack to detected already
1228 * gpgsm.c (emergency_cleanup): New.
1229 (main): Initialize the signal handler.
1231 * sign.c (gpgsm_sign): Reset the hash context for subsequent
1232 signers and release it at the end.
1234 2002-08-05 Werner Koch <wk@gnupg.org>
1236 * server.c (cmd_signer): New command "SIGNER"
1237 (register_commands): Register it.
1238 (cmd_sign): Pass the signer list to gpgsm_sign.
1239 * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
1240 for secret key if set and changed all callers.
1241 * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
1243 * gpgsm.c (main): Support more than one -u.
1245 * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
1246 which is actually what gets returned from add_to_certlist.
1248 2002-07-26 Werner Koch <wk@gnupg.org>
1250 * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
1251 (gpgsm_check_cms_signature): Ditto.
1253 2002-07-22 Werner Koch <wk@gnupg.org>
1255 * keydb.c (keydb_add_resource): Register a lock file.
1256 (lock_all, unlock_all): Implemented.
1259 * gpgsm.c: Made --delete-key work.
1260 * server.c (cmd_delkeys): New.
1261 (register_commands): New command DELKEYS.
1263 * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
1264 used and a STATUS_ERROR with the algorithm oid.
1266 2002-07-03 Werner Koch <wk@gnupg.org>
1268 * server.c (gpgsm_status2): Insert a blank between all optional
1269 arguments when using assuan.
1270 * server.c (cmd_recipient): No more need for extra blank in constants.
1271 * import.c (print_imported_status): Ditto.
1272 * gpgsm.c (main): Ditto.
1274 2002-07-02 Werner Koch <wk@gnupg.org>
1276 * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
1279 * certpath.c (check_cert_policy): Don't use log_error to print a
1282 * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
1284 * call-agent.c (learn_cb): Print info message only for real imports.
1286 * import.c (gpgsm_import): Moved duplicated code to ...
1287 (check_and_store): new function. Added magic to import the entire
1288 chain. Print status only for real imports and moved printing code
1290 (print_imported_status): New.
1292 * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
1293 call in very verbose mode.
1295 * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
1296 with the server mode.
1298 2002-06-29 Werner Koch <wk@gnupg.org>
1300 * gpgsm.c: New option --auto-issuer-key-retrieve.
1301 * certpath.c (find_up): Try to retrieve an issuer key from an
1302 external source and from the ephemeral key DB.
1303 (find_up_store_certs_cb): New.
1305 * keydb.c (keydb_set_ephemeral): Does now return the old
1306 state. Call the backend only when required.
1308 * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
1309 (lookup_status_cb): Issue status only when CTRL is not NULL.
1310 (gpgsm_dirmngr_lookup): Document that CTRL is optional.
1312 * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
1314 2002-06-28 Werner Koch <wk@gnupg.org>
1316 * server.c (cmd_recipient): Add more reason codes.
1318 2002-06-27 Werner Koch <wk@gnupg.org>
1320 * certpath.c (gpgsm_basic_cert_check): Use
1321 --debug-no-path-validation to also bypass this basic check.
1323 * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1325 * call-agent.c (start_agent): Create and pass the list of FD to
1326 keep in the child to assuan.
1327 * call-dirmngr.c (start_dirmngr): Ditto.
1329 2002-06-26 Werner Koch <wk@gnupg.org>
1331 * import.c (gpgsm_import): Print an STATUS_IMPORTED.
1333 * gpgsm.c: --debug-no-path-validation does not take an argument.
1335 2002-06-25 Werner Koch <wk@gnupg.org>
1337 * certdump.c (print_dn_part): Always print a leading slash,
1338 removed NEED_DELIM arg and changed caller.
1340 * export.c (gpgsm_export): Print LFs to FP and not stdout.
1341 (print_short_info): Ditto. Make use of gpgsm_print_name.
1343 * server.c (cmd_export): Use output-fd instead of data lines; this
1344 was actually the specified way.
1346 2002-06-24 Werner Koch <wk@gnupg.org>
1348 * gpgsm.c: Removed duped help entry for --list-keys.
1350 * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
1352 * certpath.c (gpgsm_validate_path): Use it here instead of the
1355 * certpath.c (check_cert_policy): Return No_Policy_Match if the
1356 policy file could not be opened.
1358 2002-06-20 Werner Koch <wk@gnupg.org>
1360 * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
1361 certificate with the required key usage.
1363 * gpgsm.c (main): Fixed a segv when using --outfile without an
1366 * keylist.c (print_capabilities): Also check for non-repudiation
1367 and data encipherment.
1368 * certlist.c (cert_usage_p): Test for signing and encryption was
1369 swapped. Add a case for certification usage, handle
1370 non-repudiation and data encipherment.
1371 (gpgsm_cert_use_cert_p): New.
1372 (gpgsm_add_to_certlist): Added a CTRL argument and changed all
1374 * certpath.c (gpgsm_validate_path): Use it here to print a status
1375 message. Added a CTRL argument and changed all callers to pass it.
1376 * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
1378 * verify.c (gpgsm_verify): Ditto.
1379 * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
1381 2002-06-19 Werner Koch <wk@gnupg.org>
1383 * call-agent.c (learn_cb): Use log_info instead of log_error on
1386 * keydb.c (keydb_set_ephemeral): New.
1387 (keydb_store_cert): New are ephemeral, changed all callers.
1388 * keylist.c (list_external_cb): Store cert as ephemeral.
1389 * export.c (gpgsm_export): Kludge to export epehmeral certificates.
1391 * gpgsm.c (main): New command --list-external-keys.
1393 2002-06-17 Werner Koch <wk@gnupg.org>
1395 * certreqgen.c (read_parameters): Improved error handling.
1396 (gpgsm_genkey): Print error message.
1398 2002-06-13 Werner Koch <wk@gnupg.org>
1400 * gpgsm.c (main): New option --log-file.
1402 2002-06-12 Werner Koch <wk@gnupg.org>
1404 * call-dirmngr.c (lookup_status_cb): New.
1405 (gpgsm_dirmngr_lookup): Use the status CB. Add new arg CTRL and
1406 changed caller to pass it.
1408 * gpgsm.c (open_fwrite): New.
1409 (main): Allow --output for --verify.
1411 * sign.c (hash_and_copy_data): New.
1412 (gpgsm_sign): Implemented normal (non-detached) signatures.
1413 * gpgsm.c (main): Ditto.
1415 * certpath.c (gpgsm_validate_path): Special error handling for
1418 2002-06-10 Werner Koch <wk@gnupg.org>
1420 * server.c (get_status_string): Add STATUS_ERROR.
1422 * certpath.c (gpgsm_validate_path): Tweaked the error checking to
1423 return error codes in a more sensitive way.
1424 * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
1425 CA certificate and when the certificate has been revoked. Issue
1426 TRUST_FULLY even when the cert has expired. Append an error token
1427 to these status lines. Issue the new generic error status when a
1428 cert was not found and when leaving the function.
1430 2002-06-04 Werner Koch <wk@gnupg.org>
1432 * gpgsm.c (main): New command --list-sigs
1433 * keylist.c (list_cert_std): New. Use it whenever colon mode is
1435 (list_cert_chain): New.
1437 2002-05-31 Werner Koch <wk@gnupg.org>
1439 * gpgsm.c (main): Don't print the "go ahead" message for an
1442 2002-05-23 Werner Koch <wk@gnupg.org>
1444 * import.c (gpgsm_import): Add error messages.
1446 2002-05-21 Werner Koch <wk@gnupg.org>
1448 * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
1449 (list_external_keys): New.
1450 (gpgsm_list_keys): Dispatcher for above.
1451 * call-dirmngr.c (lookup_cb,pattern_from_strlist)
1452 (gpgsm_dirmngr_lookup): New.
1453 * server.c (option_handler): Handle new option --list-mode.
1454 (do_listkeys): Handle options and actually use the mode argument.
1455 (get_status_string): New code TRUNCATED.
1457 * import.c (gpgsm_import): Try to identify the type of input and
1458 handle certs-only messages.
1460 2002-05-14 Werner Koch <wk@gnupg.org>
1462 * gpgsm.c: New option --faked-system-time
1463 * sign.c (gpgsm_sign): And use it here.
1464 * certpath.c (gpgsm_validate_path): Ditto.
1466 2002-05-03 Werner Koch <wk@gnupg.org>
1468 * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
1470 * verify.c (gpgsm_verify): Tweaked usage of log_debug and
1471 log_error. Return EXPSIG status and add expiretime to VALIDSIG.
1473 2002-04-26 Werner Koch <wk@gnupg.org>
1475 * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
1478 * call-agent.c (start_agent): Be more silent without -v.
1479 * call-dirmngr.c (start_dirmngr): Ditto.
1481 2002-04-25 Werner Koch <wk@gnupg.org>
1483 * call-agent.c (start_agent): Make copies of old locales and check
1486 2002-04-25 Marcus Brinkmann <marcus@g10code.de>
1488 * call-agent.c (start_agent): Fix error handling logic so the
1489 locale is always correctly reset.
1491 2002-04-25 Marcus Brinkmann <marcus@g10code.de>
1493 * server.c (option_handler): Accept display, ttyname, ttytype,
1494 lc_ctype and lc_messages options.
1495 * gpgsm.c (main): Allocate memory for these options.
1496 * gpgsm.h (struct opt): Make corresponding members non-const.
1498 2002-04-24 Marcus Brinkmann <marcus@g10code.de>
1500 * gpgsm.h (struct opt): New members display, ttyname, ttytype,
1501 lc_ctype, lc_messages.
1502 * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
1503 oTTYname, oTTYtype, oLCctype, oLCmessages.
1504 (opts): New entries for these options.
1505 (main): Handle these new options.
1506 * call-agent.c (start_agent): Set the various display and tty
1507 parameter after resetting.
1509 2002-04-18 Werner Koch <wk@gnupg.org>
1511 * certreqgen.c (gpgsm_genkey): Write status output on success.
1513 2002-04-15 Werner Koch <wk@gnupg.org>
1515 * gpgsm.c (main): Check ksba version.
1517 * certpath.c (find_up): New to use the authorithKeyIdentifier.
1518 Use it in all other functions to locate the signing cert..
1520 2002-04-11 Werner Koch <wk@gnupg.org>
1522 * certlist.c (cert_usable_p): New.
1523 (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
1524 (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
1525 (gpgsm_add_to_certlist): Check the key usage.
1526 * sign.c (gpgsm_sign): Ditto.
1527 * verify.c (gpgsm_verify): Print a message wehn an unsuitable
1528 certificate was used.
1529 * decrypt.c (gpgsm_decrypt): Ditto
1530 * keylist.c (print_capabilities): Determine values from the cert.
1532 2002-03-28 Werner Koch <wk@gnupg.org>
1534 * keylist.c (list_cert_colon): Fixed listing of crt record; the
1535 issuer is not at the right place. Print a chainingID.
1536 * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
1539 2002-03-21 Werner Koch <wk@gnupg.org>
1542 * gpgsm.c: Add command --export.
1543 * server.c (cmd_export): New.
1545 2002-03-13 Werner Koch <wk@gnupg.org>
1547 * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
1549 2002-03-12 Werner Koch <wk@gnupg.org>
1551 * certpath.c (check_cert_policy): Print the policy list.
1553 * verify.c (gpgsm_verify): Detect certs-only message.
1555 2002-03-11 Werner Koch <wk@gnupg.org>
1557 * import.c (gpgsm_import): Print a notice about imported certificates
1558 when in verbose mode.
1560 * gpgsm.c (main): Print INV_RECP status.
1561 * server.c (cmd_recipient): Ditto.
1563 * server.c (gpgsm_status2): New. Allows for a list of strings.
1564 (gpgsm_status): Divert to gpgsm_status2.
1566 * encrypt.c (gpgsm_encrypt): Don't use a default key when no
1567 recipients are given. Print a NO_RECP status.
1569 2002-03-06 Werner Koch <wk@gnupg.org>
1571 * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
1572 (do_listkeys): new. Add pattern parsing.
1574 * keylist.c (gpgsm_list_keys): Handle selection pattern.
1576 * gpgsm.c: New command --learn-card
1577 * call-agent.c (learn_cb,gpgsm_agent_learn): New.
1579 * gpgsm.c (main): Print error messages for non-implemented commands.
1581 * base64.c (base64_reader_cb): Use case insensitive compare of the
1582 Content-Type string to detect plain base-64.
1584 2002-03-05 Werner Koch <wk@gnupg.org>
1586 * gpgsm.c, gpgsm.h: Add local_user.
1587 * sign.c (gpgsm_get_default_cert): New.
1588 (get_default_signer): Use the new function if local_user is not
1589 set otherwise used that value.
1590 * encrypt.c (get_default_recipient): Removed.
1591 (gpgsm_encrypt): Use gpgsm_get_default_cert.
1593 * verify.c (gpgsm_verify): Better error text for a bad signature
1594 found by comparing the hashs.
1596 2002-02-27 Werner Koch <wk@gnupg.org>
1598 * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
1601 2002-02-25 Werner Koch <wk@gnupg.org>
1603 * server.c (option_handler): Allow to use -2 for "send all certs
1604 except the root cert".
1605 * sign.c (add_certificate_list): Implement it here.
1606 * certpath.c (gpgsm_is_root_cert): New.
1608 2002-02-19 Werner Koch <wk@gnupg.org>
1610 * certpath.c (check_cert_policy): New.
1611 (gpgsm_validate_path): And call it from here.
1612 * gpgsm.c (main): New options --policy-file,
1613 --disable-policy-checks and --enable-policy-checks.
1614 * gpgsm.h (opt): Added policy_file, no_policy_checks.
1616 2002-02-18 Werner Koch <wk@gnupg.org>
1618 * certpath.c (gpgsm_validate_path): Ask the agent to add the
1619 certificate into the trusted list.
1620 * call-agent.c (gpgsm_agent_marktrusted): New.
1622 2002-02-07 Werner Koch <wk@gnupg.org>
1624 * certlist.c (gpgsm_add_to_certlist): Check that the specified
1625 name identifies a certificate unambiguously.
1626 (gpgsm_find_cert): Ditto.
1628 * server.c (cmd_listkeys): Check that the data stream is available.
1629 (cmd_listsecretkeys): Ditto.
1631 (cmd_sign): Fix ambiguousity in option recognition.
1633 * gpgsm.c (main): Enable --logger-fd.
1635 * encrypt.c (gpgsm_encrypt): Increased buffer size for better
1638 * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
1641 * keylist.c (list_cert_colon): Filter out control characters.
1643 2002-02-06 Werner Koch <wk@gnupg.org>
1645 * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
1647 * server.c (reset_notify): Close input and output FDs.
1648 (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
1649 (cmd_genkey): Close the FDs and release the recipient list even in
1652 2002-02-01 Marcus Brinkmann <marcus@g10code.de>
1654 * sign.c (gpgsm_sign): Do not release certificate twice.
1656 2002-01-29 Werner Koch <wk@gnupg.org>
1658 * call-agent.c (gpgsm_agent_havekey): New.
1659 * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
1660 when we know that the secret key is available.
1661 (gpgsm_list_keys): New arg MODE, check whether a secret key is
1662 available. Changed all callers.
1663 * gpgsm.c (main): New command --list-secret-keys.
1664 * server.c (cmd_listsecretkeys): New.
1665 (cmd_listkeys): Return secret keys with "crs" record.
1667 2002-01-28 Werner Koch <wk@gnupg.org>
1669 * certreqgen.c (create_request): Store the email address in the req.
1671 2002-01-25 Werner Koch <wk@gnupg.org>
1673 * gpgsm.c (main): Disable core dumps.
1675 * sign.c (add_certificate_list): New.
1676 (gpgsm_sign): Add the certificates to the CMS object.
1677 * certpath.c (gpgsm_walk_cert_chain): New.
1678 * gpgsm.h (server_control_s): Add included_certs.
1679 * gpgsm.c: Add option --include-certs.
1680 (gpgsm_init_default_ctrl): New.
1682 * server.c (gpgsm_server): Ditto.
1683 (option_handler): Support --include-certs.
1685 2002-01-23 Werner Koch <wk@gnupg.org>
1687 * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
1688 * certdump.c (gpgsm_dump_string): New.
1689 (print_dn): Replaced by above.
1691 2002-01-22 Werner Koch <wk@gnupg.org>
1693 * certpath.c (unknown_criticals): New.
1695 (gpgsm_validate_path): Check validity, CA attribute, path length
1696 and unknown critical extensions.
1698 2002-01-21 Werner Koch <wk@gnupg.org>
1700 * gpgsm.c: Add option --enable-crl-checks.
1702 * call-agent.c (start_agent): Implemented socket based access.
1703 * call-dirmngr.c (start_dirmngr): Ditto.
1705 2002-01-20 Werner Koch <wk@gnupg.org>
1707 * server.c (option_handler): New.
1708 (gpgsm_server): Register it with assuan.
1710 2002-01-19 Werner Koch <wk@gnupg.org>
1712 * server.c (gpgsm_server): Use assuan_deinit_server and setup
1713 assuan logging if enabled.
1714 * call-agent.c (inq_ciphertext_cb): Don't show the session key in
1717 * gpgsm.c (my_strusage): Take bugreport address from configure.ac
1719 2002-01-15 Werner Koch <wk@gnupg.org>
1721 * import.c (gpgsm_import): Just do a basic cert check before
1723 * certpath.c (gpgsm_basic_cert_check): New.
1725 * keydb.c (keydb_store_cert): New.
1726 * import.c (store_cert): Removed and change all caller to use
1728 * verify.c (store_cert): Ditto.
1730 * certlist.c (gpgsm_add_to_certlist): Validate the path
1732 * certpath.c (gpgsm_validate_path): Check the trust list.
1733 * call-agent.c (gpgsm_agent_istrusted): New.
1735 2002-01-14 Werner Koch <wk@gnupg.org>
1737 * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
1738 * certlist.c (gpgsm_find_cert): New.
1740 2002-01-13 Werner Koch <wk@gnupg.org>
1742 * fingerprint.c (gpgsm_get_certid): Print the serial and not the
1745 2002-01-11 Werner Koch <wk@gnupg.org>
1747 * call-dirmngr.c: New.
1748 * certpath.c (gpgsm_validate_path): Check the CRL here.
1749 * fingerprint.c (gpgsm_get_certid): New.
1750 * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
1752 2002-01-10 Werner Koch <wk@gnupg.org>
1754 * base64.c (gpgsm_create_writer): Allow to set the object name
1756 2002-01-08 Werner Koch <wk@gnupg.org>
1758 * keydb.c (spacep): Removed because it is now in util.c
1760 * server.c (cmd_genkey): New.
1761 * certreqgen.c: New. The parameter handling code has been taken
1762 from gnupg/g10/keygen.c version 1.0.6.
1763 * call-agent.c (gpgsm_agent_genkey): New.
1765 2002-01-02 Werner Koch <wk@gnupg.org>
1767 * server.c (rc_to_assuan_status): Removed and changed all callers
1768 to use map_to_assuan_status.
1770 2001-12-20 Werner Koch <wk@gnupg.org>
1772 * verify.c (gpgsm_verify): Implemented non-detached signature
1773 verification. Add OUT_FP arg, initialize a writer and changed all
1775 * server.c (cmd_verify): Pass an out_fp if one has been set.
1777 * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
1779 * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
1781 (print_time): Renamed to gpgsm_dump_time, made global.
1782 (gpgsm_dump_serial): Take a real S-Expression as argument and
1783 print the first item.
1784 * keylist.c (list_cert_colon): Ditto.
1785 * keydb.c (keydb_search_issuer_sn): Ditto.
1786 * decrypt.c (print_integer_sexp): Removed and made callers
1787 use gpgsm_dump_serial.
1788 * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
1790 2001-12-19 Marcus Brinkmann <marcus@g10code.de>
1792 * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
1794 2001-12-18 Werner Koch <wk@gnupg.org>
1796 * verify.c (print_integer_sexp): Renamed from print_integer and
1797 print the serial number according to the S-Exp rules.
1798 * decrypt.c (print_integer_sexp): Ditto.
1800 2001-12-17 Werner Koch <wk@gnupg.org>
1802 * keylist.c (list_cert_colon): Changed for new return value of
1804 * keydb.c (keydb_search_issuer_sn): Ditto.
1805 * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
1806 returingin functions.
1807 * fingerprint.c (gpgsm_get_keygrip): Ditto.
1808 * encrypt.c (encrypt_dek): Ditto
1809 * certcheck.c (gpgsm_check_cms_signature): Ditto
1810 * decrypt.c (prepare_decryption): Ditto.
1811 * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
1812 use KsbaSexp type and calculate the length.
1814 * certdump.c (print_sexp): Remaned from print_integer, changed caller.
1816 * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
1818 * fingerprint.c (gpgsm_get_keygrip): Use the new
1819 gcry_pk_get_keygrip to calculate the grip - note the algorithm and
1820 therefore the grip values changed.
1822 2001-12-15 Werner Koch <wk@gnupg.org>
1824 * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
1826 (gpgsm_create_cms_signature): Removed the commented fake key
1827 code. This makes the function pretty simple.
1829 * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
1831 * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
1832 * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
1834 2001-12-14 Werner Koch <wk@gnupg.org>
1836 * keylist.c (list_cert_colon): Kludge to show an email address
1837 encoded in the subject's DN.
1839 * verify.c (gpgsm_verify): Add hash debug helpers
1840 * sign.c (gpgsm_sign): Ditto.
1842 * base64.c (base64_reader_cb): Reset the linelen when we need to
1843 skip the line and adjusted test; I somehow forgot about DeMorgan.
1845 * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify)
1846 (cmd_import): Close the FDs on success.
1847 (close_message_fd): New.
1848 (input_notify): Setting autodetect_encoding to 0 after initializing
1849 it to 0 is pretty pointless. Easy to fix.
1851 * gpgsm.c (main): New option --debug-wait n, so that it is
1852 possible to attach gdb when used in server mode.
1854 * sign.c (get_default_signer): Use keydb_classify_name here.
1856 2001-12-14 Marcus Brinkmann <marcus@g10code.de>
1858 * call-agent.c (LINELENGTH): Removed.
1859 (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
1860 (gpgsm_agent_pkdecrypt): Likewise.
1862 2001-12-13 Werner Koch <wk@gnupg.org>
1864 * keylist.c (list_cert_colon): Print alternative names of subject
1865 and a few other values.
1867 2001-12-12 Werner Koch <wk@gnupg.org>
1869 * gpgsm.c (main): New options --assume-{armor,base64,binary}.
1870 * base64.c (base64_reader_cb): Fixed non-autodetection mode.
1872 2001-12-04 Werner Koch <wk@gnupg.org>
1874 * call-agent.c (read_from_agent): Check for inquire responses.
1875 (request_reply): Handle them using a new callback arg, changed all
1877 (gpgsm_agent_pkdecrypt): New.
1879 2001-11-27 Werner Koch <wk@gnupg.org>
1881 * base64.c: New. Changed all other functions to use this instead
1882 of direct creation of ksba_reader/writer.
1883 * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
1885 2001-11-26 Werner Koch <wk@gnupg.org>
1887 * gpgsm.c: New option --agent-program
1888 * call-agent.c (start_agent): Allow to override the default path
1891 * keydb.c (keydb_add_resource): Create keybox
1893 * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
1895 * server.c (rc_to_assuan_status): New. Use it for all commands.
1898 Copyright 2001, 2002, 2003, 2004, 2005,
1899 2006 Free Software Foundation, Inc.
1901 This file is free software; as a special exception the author gives
1902 unlimited permission to copy and/or distribute it, with or without
1903 modifications, as long as this notice is preserved.
1905 This file is distributed in the hope that it will be useful, but
1906 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1907 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.