Finished implementation of the "relax" flag.
[gnupg.git] / sm / ChangeLog
1 2006-09-26  Werner Koch  <wk@g10code.com>
2
3         * certchain.c (gpgsm_validate_chain): More changes for the relax
4         feature.  Use certificate reference counting instead of the old
5         explicit tests. Added a missing free. 
6
7 2006-09-25  Werner Koch  <wk@g10code.com>
8
9         * gpgsm.h (struct rootca_flags_s): New.
10         * call-agent.c (istrusted_status_cb): New.
11         (gpgsm_agent_istrusted): New arg ROOTCA_FLAGS.
12         * keylist.c (list_cert_colon): Use dummy for new arg.
13         * certchain.c (gpgsm_validate_chain): Make use of the relax flag
14         for root certificates.
15         (unknown_criticals): Ignore a GPG_ERR_NO_VALUE.
16
17 2006-09-20  Werner Koch  <wk@g10code.com>
18
19         * gpgsm.c: Add alias command --dump-cert.
20
21         * Makefile.am:  Changes to allow parallel make runs.
22
23 2006-09-18  Werner Koch  <wk@g10code.com>
24
25         * gpgsm.c (main): Use this to import standard certificates.
26         * keydb.c (keydb_add_resource): New arg AUTO_CREATED.
27
28 2006-09-14  Werner Koch  <wk@g10code.com>
29
30         Replaced all call gpg_error_from_errno(errno) by
31         gpg_error_from_syserror().
32
33 2006-09-13  Werner Koch  <wk@g10code.com>
34
35         * keylist.c (list_internal_keys): Print marker line to FP and not
36         to stdout.
37
38         * gpgsm.c (main): All list key list commands now make ose of
39         --output. Cleaned up calls to list modes.  New command
40         --dump-chain.  Renamed --list-sigs to --list-chain and added an
41         alias for the old one.
42
43         * server.c (cmd_message): Changed to use assuan_command_parse_fd.
44         (option_handler): New option list-to-output.
45         (do_listkeys): Use it.
46
47 2006-09-06  Werner Koch  <wk@g10code.com>
48
49         * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
50         out_of_core.
51         (CTRL): Removed and changed everywhere to ctrl_t.
52         (CERTLIST): Ditto.
53
54         Replaced all Assuan error codes by libgpg-error codes.  Removed
55         all map_to_assuan_status and map_assuan_err.
56         
57         * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
58         switch to gpg-error codes.  
59         * server.c (set_error): Adjusted.
60
61 2006-08-29  Werner Koch  <wk@g10code.com>
62
63         * call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
64         complete S-expressions as implemented by the current gpg-agent.
65
66         * gpgsm.c (main): Implement --output for encrypt, decrypt, sign
67         and export.
68
69 2006-07-03  Werner Koch  <wk@g10code.com>
70
71         * certreqgen.c (proc_parameters): Print the component label of a
72         faulty DN.
73
74 2006-06-26  Werner Koch  <wk@g10code.com>
75
76         * certdump.c (gpgsm_cert_log_name): New.
77         * certchain.c (is_cert_still_valid): Log the name of the certificate.
78
79 2006-06-20  Werner Koch  <wk@g10code.com>
80
81         * gpgsm.c (gpgsm_init_default_ctrl): Take care of the command line
82         option --include-certs.
83
84         * keylist.c (list_cert_raw): Print the certid.
85
86 2006-05-23  Werner Koch  <wk@g10code.com>
87
88         * keydb.c (hextobyte): Deleted as it is now defined in jnlib.
89
90         * Makefile.am (gpgsm_LDADD): Include ZLIBS.
91
92 2006-05-19  Marcus Brinkmann  <marcus@g10code.de>
93
94         * keydb.c (keydb_insert_cert): Do not lock here, but only check if
95         it is locked.
96         (keydb_store_cert): Lock here.
97
98         * keydb.h (keydb_delete): Accept new argument UNLOCK.
99         * keydb.c (keydb_delete): Likewise.  Only unlock if this is set.
100         * delete.c (delete_one): Add new argument to invocation of
101         keydb_delete.
102         
103 2006-05-15  Werner Koch  <wk@g10code.com>
104
105         * keylist.c (print_names_raw): Sanitize URI.
106
107 2006-03-21  Werner Koch  <wk@g10code.com>
108
109         * certchain.c (get_regtp_ca_info): New.
110         (allowed_ca): Use it.
111
112 2006-03-20  Werner Koch  <wk@g10code.com>
113
114         * qualified.c (gpgsm_is_in_qualified_list): New optional arg COUNTRY.
115
116 2006-02-17  Werner Koch  <wk@g10code.com>
117
118         * call-dirmngr.c (start_dirmngr): Print name of dirmngr to be started.
119
120 2005-11-23  Werner Koch  <wk@g10code.com>
121
122         * gpgsm.h: New member QUALSIG_APPROVAL.
123         * sign.c (gpgsm_sign): Print a warning if a certificate is not
124         qualified.
125         * qualified.c (gpgsm_qualified_consent): Include a note that this
126         is not approved software.
127         (gpgsm_not_qualified_warning): New.
128         * gpgsm.c (main): Prepared to print a note whether the software
129         has been approved.
130
131 2005-11-13  Werner Koch  <wk@g10code.com>
132
133         * call-agent.c (gpgsm_agent_get_confirmation): New.
134
135         * keylist.c (list_cert_std): Print qualified status.
136         * qualified.c: New.
137         * certchain.c (gpgsm_validate_chain): Check for qualified
138         certificates.
139
140         * certchain.c (gpgsm_basic_cert_check): Release keydb handle when
141         no-chain-validation is used.
142
143 2005-11-11  Werner Koch  <wk@g10code.com>
144
145         * keylist.c (print_capabilities): Print is_qualified status.
146
147 2005-10-28  Werner Koch  <wk@g10code.com>
148
149         * certdump.c (pretty_print_sexp): New.
150         (gpgsm_print_name2): Use it here.  This allows proper printing of
151         DNS names as used with server certificates.
152
153 2005-10-10  Werner Koch  <wk@g10code.com>
154
155         * keylist.c: Add pkaAdress OID as reference.
156
157 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
158
159         * Makefile.am (gpgsm_LDADD): Add ../gl/libgnu.a after
160         ../common/libcommon.a.
161
162 2005-09-13  Werner Koch  <wk@g10code.com>
163
164         * verify.c (gpgsm_verify): Print a note if the unknown algorithm
165         is MD2.
166         * sign.c (gpgsm_sign): Ditto.
167         * certcheck.c (gpgsm_check_cert_sig): Ditto.
168
169 2005-09-08  Werner Koch  <wk@g10code.com>
170
171         * export.c (popen_protect_tool): Add option --have-cert.  We
172         probably lost this option with 1.9.14 due to restructuring of
173         export.c.
174
175 2005-07-21  Werner Koch  <wk@g10code.com>
176
177         * gpgsm.c (main): New options --no-log-file and --debug-none.
178
179         * certreqgen.c (get_parameter, get_parameter_value): Add SEQ arg
180         to allow enumeration.  Changed all callers.
181         (create_request): Process DNS and URI parameters.
182
183 2005-07-20  Werner Koch  <wk@g10code.com>
184
185         * keylist.c (email_kludge): Reworked.
186
187         * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
188         arg to unsigned.
189         * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
190
191 2005-07-19  Werner Koch  <wk@g10code.com>
192
193         * fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
194         Bug accidently introduced while solving the #$%^& gcc
195         signed/unsigned char* warnings.
196
197 2005-06-15  Werner Koch  <wk@g10code.com>
198
199         * delete.c (delete_one): Changed FPR to unsigned.
200         * encrypt.c (encrypt_dek): Made ENCVAL unsigned.
201         (gpgsm_encrypt): Ditto.
202         * sign.c (gpgsm_sign): Made SIGVAL unsigned.
203         * base64.c (base64_reader_cb): Need to use some casting to get
204         around signed/unsigned char* warnings.
205         * certcheck.c (gpgsm_check_cms_signature): Ditto.
206         (gpgsm_create_cms_signature): Changed arg R_SIGVAL to unsigned char*.
207         (do_encode_md): Made NFRAME a size_t.
208         * certdump.c (gpgsm_print_serial): Fixed signed/unsigned warning.
209         (gpgsm_dump_serial): Ditto.
210         (gpgsm_format_serial): Ditto.
211         (gpgsm_dump_string): Ditto.
212         (gpgsm_dump_cert): Ditto.
213         (parse_dn_part): Ditto.
214         (gpgsm_print_name2): Ditto.
215         * keylist.c (email_kludge): Ditto.
216         * certreqgen.c (proc_parameters, create_request): Ditto.
217         (create_request): Ditto.
218         * call-agent.c (gpgsm_agent_pksign): Made arg R_BUF unsigned.
219         (struct cipher_parm_s): Made CIPHERTEXT unsigned.
220         (struct genkey_parm_s): Ditto.
221         * server.c (strcpy_escaped_plus): Made arg S signed char*.
222         * fingerprint.c (gpgsm_get_fingerprint): Made ARRAY unsigned.
223         (gpgsm_get_keygrip): Ditto.
224         * keydb.c (keydb_insert_cert): Made DIGEST unsigned.
225         (keydb_update_cert): Ditto.
226         (classify_user_id): Apply cast to signed/unsigned assignment.
227         (hextobyte): Ditto.
228
229 2005-06-01  Werner Koch  <wk@g10code.com>
230
231         * misc.c: Include setenv.h.
232
233 2005-04-21  Werner Koch  <wk@g10code.com>
234
235         * gpgsm.c: New options --{enable,disable}-trusted-cert-crl-check.
236         * certchain.c (gpgsm_validate_chain): Make use of it.
237
238         * certchain.c (gpgsm_validate_chain): Check revocations even for
239         expired certificates.  This is required because on signature
240         verification an expired key is fine whereas a revoked one is not.
241
242 2005-04-20  Werner Koch  <wk@g10code.com>
243
244         * Makefile.am (AM_CFLAGS): Add PTH_CFLAGS as noted by several folks.
245
246 2005-04-19  Werner Koch  <wk@g10code.com>
247
248         * certchain.c (check_cert_policy): Print the diagnostic for a open
249         failure of policies.txt only in verbose mode or when it is not
250         ENOENT.
251
252 2005-04-17  Werner Koch  <wk@g10code.com>
253
254         * call-dirmngr.c (inq_certificate): Add new inquire SENDCERT_SKI.
255         * certlist.c (gpgsm_find_cert): Add new arg KEYID and implement
256         this filter.  Changed all callers.
257
258         * certchain.c (find_up_search_by_keyid): New helper.
259         (find_up): Also try using the AKI.keyIdentifier.
260         (find_up_external): Ditto.
261
262 2005-04-15  Werner Koch  <wk@g10code.com>
263
264         * keylist.c (list_cert_raw): Print the subjectKeyIdentifier as
265         well as the keyIdentifier part of the authorityKeyIdentifier.
266
267 2005-03-31  Werner Koch  <wk@g10code.com>
268
269         * call-dirmngr.c (start_dirmngr): Use PATHSEP_C instead of ':'.
270         * call-agent.c (start_agent): Ditto.
271
272 2005-03-17  Werner Koch  <wk@g10code.com>
273
274         * certcheck.c: Fixed use of DBG_CRYPTO and DBG_X509.
275
276         * certchain.c (gpgsm_basic_cert_check): Dump certificates after a
277         failed gcry_pk_verify.
278         (find_up): Do an external lookup also for an authorityKeyIdentifier
279         lookup. Factored external lookup code out to ..
280         (find_up_external): .. new.
281
282 2005-03-03  Werner Koch  <wk@g10code.com>
283
284         * Makefile.am (gpgsm_LDADD): Added PTH_LIBS.  Noted by Kazu Yamamoto.
285
286 2005-01-13  Werner Koch  <wk@g10code.com>
287
288         * certreqgen.c (proc_parameters): Cast printf arg.
289
290 2004-12-22  Werner Koch  <wk@g10code.com>
291
292         * gpgsm.c (set_binary): New.
293         (main, open_read, open_fwrite): Use it.
294
295 2004-12-21  Werner Koch  <wk@g10code.com>
296
297         * gpgsm.c (main): Use default_homedir().
298         (main) [W32]: Default to disabled CRL checks.
299
300 2004-12-20  Werner Koch  <wk@g10code.com>
301
302         * call-agent.c (start_agent): Before starting a pipe server start
303         to connect to a server on the standard socket.  Use PATHSEP
304         * call-dirmngr.c (start_dirmngr): Use PATHSEP.
305
306         * import.c: Include unistd.h for dup and close.
307
308 2004-12-18  Werner Koch  <wk@g10code.com>
309
310         * gpgsm.h (map_assuan_err): Define in terms of
311         map_assuan_err_with_source.
312         * call-agent.c (start_agent): Pass error source to
313         send_pinentry_environment.
314
315 2004-12-17  Werner Koch  <wk@g10code.com>
316
317         * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
318         (run_command_status_cb): Return cancel status if gpgsm_status
319         returned an error.
320
321         * server.c (gpgsm_status, gpgsm_status2) 
322         (gpgsm_status_with_err_code): Return an error code.
323         (gpgsm_status2): Always call va_end().
324
325 2004-12-15  Werner Koch  <wk@g10code.com>
326
327         * call-dirmngr.c (lookup_status_cb): Send progress messages
328         upstream.
329         (isvalid_status_cb): Ditto.
330         (gpgsm_dirmngr_isvalid): Put CTRL into status CB parameters.
331         (gpgsm_dirmngr_run_command, run_command_status_cb): Pass CTRL to
332         status callback and handle PROGRESS.
333
334         * misc.c (setup_pinentry_env) [W32]: Don't use it.
335
336         * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
337         operations and to resolve libassuan symbols.
338         (run_protect_tool) [W32]: Disable it.
339
340         * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
341
342 2004-12-07  Werner Koch  <wk@g10code.com>
343
344         * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
345         under W32 we need the w32 pth code from jnlib.
346
347         * misc.c (setup_pinentry_env) [W32]: Disabled.
348
349 2004-12-06  Werner Koch  <wk@g10code.com>
350
351         * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
352
353         * import.c (popen_protect_tool): Simplified by making use of
354         gnupg_spawn_process.
355         (parse_p12): Likewise, using gnupg_wait_process.
356         * export.c (popen_protect_tool): Ditto.
357         (export_p12): Ditto.
358
359         * keydb.c: Don't define DIRSEP_S here.
360
361 2004-12-02  Werner Koch  <wk@g10code.com>
362
363         * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
364         signature for debugging.
365         (gpgsm_validate_chain): Ditto.
366
367 2004-11-29  Werner Koch  <wk@g10code.com>
368
369         * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
370         DEBUG_VALUE.
371         (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE.  This
372         now allows to add debug flags on top of a debug-level setting.
373
374 2004-11-23  Werner Koch  <wk@g10code.com>
375
376         * gpgsm.c: New option --prefer-system-dirmngr.
377         * call-dirmngr.c (start_dirmngr): Implement this option.
378
379 2004-10-22  Werner Koch  <wk@g10code.com>
380
381         * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
382         request PEM header.  This is according to the Sphinx standard.
383
384 2004-10-08  Moritz Schulte  <moritz@g10code.com>
385
386         * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
387         case the no_chain_validation-return-short-cut is used (fixes
388         memory leak).
389
390 2004-10-04  Werner Koch  <wk@g10code.com>
391
392         * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
393
394 2004-09-30  Werner Koch  <wk@g10code.com>
395
396         * gpgsm.c (i18n_init): Always use LC_ALL.
397
398         * certdump.c (gpgsm_format_name): Factored code out to ..
399         (gpgsm_format_name2): .. new.
400         (gpgsm_print_name): Factored code out to ..
401         (gpgsm_print_name2): .. new.
402         (print_dn_part): New arg TRANSLATE.  Changed all callers.
403         (print_dn_parts): Ditto.
404         (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
405         it to stay UTF-8 but we still want to filter out bad control
406         characters.
407
408         * Makefile.am: Adjusted for gettext 0.14.
409
410         * keylist.c (list_cert_colon): Make sure that the expired flag has
411         a higher precedence than the invalid flag. 
412
413 2004-09-29  Werner Koch  <wk@g10code.com>
414
415         * import.c (parse_p12): Write an error status line for bad
416         passphrases. Add new arg CTRL and changed caller.
417         * export.c (export_p12): Likewise.
418
419 2004-09-14  Werner Koch  <wk@g10code.com>
420
421         * certchain.c (gpgsm_validate_chain): Give expired certificates a
422         higher error precedence and don't bother to check any CRL in that
423         case.
424
425 2004-08-24  Werner Koch  <wk@g10code.de>
426
427         * certlist.c: Fixed typo in ocsp OID.
428
429 2004-08-18  Werner Koch  <wk@g10code.de>
430
431         * certlist.c (gpgsm_cert_use_ocsp_p): New.
432         (cert_usage_p): Support it here.
433         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
434
435 2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
436
437         * import.c: Fix typo in last change.
438
439 2004-08-17  Werner Koch  <wk@g10code.de>
440
441         * import.c (check_and_store): Do a full validation if
442         --with-validation is set.
443
444         * certchain.c (gpgsm_basic_cert_check): Print more detailed error
445         messages.
446         
447         * certcheck.c (do_encode_md): Partly support DSA.  Add new arg
448         PKALGO. Changed all callers to pass it.
449         (pk_algo_from_sexp): New.
450
451 2004-08-16  Werner Koch  <wk@g10code.de>
452
453         * gpgsm.c: New option --fixed-passphrase.
454         * import.c (popen_protect_tool): Pass it to the protect-tool.
455
456         * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
457         for encrypt-to keys.
458
459 2004-08-06  Werner Koch  <wk@g10code.com>
460
461         * gpgsm.c: New option --with-ephemeral-keys.
462         * keylist.c (list_internal_keys): Set it here.
463         (list_cert_raw): And indicate those keys.  Changed all our callers
464         to pass the new arg HD through.
465
466 2004-07-23  Werner Koch  <wk@g10code.de>
467
468         * certreqgen.c (proc_parameters): Do not allow key length below
469         1024.
470
471 2004-07-22  Werner Koch  <wk@g10code.de>
472
473         * keylist.c (list_cert_raw): Print the keygrip.
474
475 2004-07-20  Werner Koch  <wk@gnupg.org>
476
477         * certchain.c (gpgsm_validate_chain): The trust check didn't
478         worked anymore, probably due to the changes at 2003-03-04.  Fixed.
479
480 2004-06-06  Werner Koch  <wk@gnupg.org>
481
482         * certreqgen.c (get_parameter_uint, create_request): Create
483         an extension for key usage when requested. 
484
485 2004-05-12  Werner Koch  <wk@gnupg.org>
486
487         * gpgsm.c (main): Install emergency_cleanup also as an atexit
488         handler.
489
490         * verify.c (gpgsm_verify): Removed the separate error code
491         handling for KSBA.  We use shared error codes anyway.
492
493         * export.c (export_p12): Removed debugging code.
494
495         * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
496
497 2004-05-11  Werner Koch  <wk@gnupg.org>
498
499         * sign.c (gpgsm_sign): Include the error source in the final error
500         message.
501         * decrypt.c (gpgsm_decrypt): Ditto.
502
503         * fingerprint.c (gpgsm_get_key_algo_info): New.
504         * sign.c (gpgsm_sign): Don't assume RSA in the status line.
505         * keylist.c (list_cert_colon): Really print the algorithm and key
506         length.
507         (list_cert_raw, list_cert_std): Ditto.
508         (list_cert_colon): Reorganized to be able to tell whether a root
509         certificate is trusted.
510
511         * gpgsm.c: New option --debug-allow-core-dump.
512
513         * gpgsm.h (opt): Add member CONFIG_FILENAME.
514         * gpgsm.c (main): Use it here instead of the local var.
515
516         * server.c (gpgsm_server): Print some additional information with
517         the hello in verbose mode.
518
519 2004-04-30  Werner Koch  <wk@gnupg.org>
520
521         * import.c (check_and_store): Do not update the stats for hidden
522         imports of issuer certs.
523         (popen_protect_tool): Request statusmessages from the protect-tool.
524         (parse_p12): Detect status messages. Add new arg STATS and update them.
525         (print_imported_summary): Include secret key stats.
526
527 2004-04-28  Werner Koch  <wk@gnupg.org>
528
529         * gpgsm.c: New command --keydb-clear-some-cert-flags.
530         * keydb.c (keydb_clear_some_cert_flags): New.
531         (keydb_update_keyblock, keydb_set_flags): Change error code
532         CONFLICT to NOT_LOCKED.
533
534 2004-04-26  Werner Koch  <wk@gnupg.org>
535
536         * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
537         filename.
538
539         * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt) 
540         (gpgsm_agent_genkey, gpgsm_agent_istrusted) 
541         (gpgsm_agent_marktrusted, gpgsm_agent_havekey) 
542         (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
543         (start_agent): New arg CTRL.  Send progress item when starting a
544         new agent.
545         * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
546         CTRL to be passed down to the agent function.
547         * decrypt.c (prepare_decryption): Ditto.
548         * certreqgen.c (proc_parameters, read_parameters): Ditto.
549         * certcheck.c (gpgsm_create_cms_signature): Ditto.
550
551 2004-04-23  Werner Koch  <wk@gnupg.org>
552
553         * keydb.c (keydb_add_resource): Try to compress the file on init.
554
555         * keylist.c (oidtranstbl): New.  OIDs collected from several sources.
556         (print_name_raw, print_names_raw, list_cert_raw): New.
557         (gpgsm_list_keys): Check the dump mode and pass it down as
558         necessary.
559
560 2004-04-22  Werner Koch  <wk@gnupg.org>
561
562         * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
563         --dump-secret-keys.
564
565 2004-04-13  Werner Koch  <wk@gnupg.org>
566
567         * misc.c (setup_pinentry_env): New.
568         * import.c (popen_protect_tool): Call it.
569         * export.c (popen_protect_tool): Call it.
570
571 2004-04-08  Werner Koch  <wk@gnupg.org>
572
573         * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
574         encrypted message.
575
576 2004-04-07  Werner Koch  <wk@gnupg.org>
577
578         * gpgsm.c: New option --force-crl-refresh.
579         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
580
581 2004-04-05  Werner Koch  <wk@gnupg.org>
582
583         * server.c (get_status_string): Add STATUS_NEWSIG.
584         * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
585
586         * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
587         not just warn if a cert is not suitable; bail out immediately.
588
589 2004-04-01  Werner Koch  <wk@gnupg.org>
590
591         * call-dirmngr.c (isvalid_status_cb): New.
592         (unhexify_fpr): New. Taken from ../g10/call-agent.c
593         (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
594         it thru.  Detect need to check the respondert cert and do that.
595         * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
596         all callers.
597
598 2004-03-24  Werner Koch  <wk@gnupg.org>
599
600         * sign.c (gpgsm_sign): Include a short list of capabilities.
601
602 2004-03-17  Werner Koch  <wk@gnupg.org>
603
604         * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
605
606 2004-03-16  Werner Koch  <wk@gnupg.org>
607
608         * gpgsm.c (main): Implemented --gpgconf-list.
609
610 2004-03-15  Werner Koch  <wk@gnupg.org>
611
612         * keylist.c (list_cert_colon): Hack to set the expired flag.
613
614 2004-03-09  Werner Koch  <wk@gnupg.org>
615
616         * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
617
618         * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
619
620 2004-03-04  Werner Koch  <wk@gnupg.org>
621
622         * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
623
624         * certchain.c (is_cert_still_valid): New.  Code moved from ...
625         (gpgsm_validate_chain): ... here because we now need to check at
626         two places and at a later stage, so that we can pass the issuer
627         cert down to the dirmngr.
628
629 2004-03-03  Werner Koch  <wk@gnupg.org>
630
631         * call-agent.c (start_agent): Replaced pinentry setup code by a
632         call to a new common function.
633
634         * certdump.c (gpgsm_format_keydesc): Make sure the string is
635         returned as utf-8.
636
637         * export.c (gpgsm_export): Make sure that we don't export more
638         than one certificate.
639
640 2004-03-02  Werner Koch  <wk@gnupg.org>
641
642         * export.c (create_duptable, destroy_duptable)
643         (insert_duptable): New.
644         (gpgsm_export): Avoid duplicates.
645
646 2004-02-26  Werner Koch  <wk@gnupg.org>
647
648         * certchain.c (compare_certs): New.
649         (gpgsm_validate_chain): Fixed infinite certificate checks after
650         bad signatures.
651
652 2004-02-24  Werner Koch  <wk@gnupg.org>
653
654         * keylist.c (list_cert_colon): Print the fingerprint as the
655         cert-id for root certificates.
656
657 2004-02-21  Werner Koch  <wk@gnupg.org>
658
659         * keylist.c (list_internal_keys): Return error codes.
660         (list_external_keys, gpgsm_list_keys): Ditto.
661         * server.c (do_listkeys): Ditto.
662
663         * gpgsm.c (main): Display a key description for --passwd.
664         * call-agent.c (gpgsm_agent_passwd): New arg DESC.
665
666 2004-02-20  Werner Koch  <wk@gnupg.org>
667
668         * gpgsm.c (main): New option --debug-ignore-expiration.
669         * certchain.c (gpgsm_validate_chain): Use it here.
670
671         * certlist.c (cert_usage_p): Apply extKeyUsage.
672
673 2004-02-19  Werner Koch  <wk@gnupg.org>
674
675         * export.c (export_p12, popen_protect_tool)
676         (gpgsm_p12_export): New.
677         * gpgsm.c (main): New command --export-secret-key-p12. 
678
679 2004-02-18  Werner Koch  <wk@gnupg.org>
680
681         * gpgsm.c (set_debug): Set the new --debug-level flags.
682         (main): New option --gpgconf-list.  
683         (main): Do not setup -u and -r keys when not required.
684         (main): Setup the used character set.
685
686         * keydb.c (keydb_add_resource): Print a hint to start the
687         gpg-agent.
688
689 2004-02-17  Werner Koch  <wk@gnupg.org>
690
691         * gpgsm.c: Fixed value parsing for --with-validation.
692         * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
693         * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
694
695         * gpgsm.c: New option --with-md5-fingerprint.
696         * keylist.c (list_cert_std): Print MD5 fpr.
697
698         * gpgsm.c: New options --with-validation.
699         * server.c (option_handler): New option "with-validation".
700         * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
701         WITH_VALIDATION. Changed callers to set it.
702         (list_external_cb, list_external_keys): Pass CTRL to the callback.
703         (list_cert_colon): Add arg CTRL.  Check validation if requested.
704         * certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
705         (gpgsm_validate_chain): New args LISTMODE and FP.
706         (do_list): New helper for info output.
707         (find_up): New arg FIND_NEXT.
708         (gpgsm_validate_chain): After a bad signature try again with other
709         CA certificates.
710
711         * import.c (print_imported_status): New arg NEW_CERT. Print
712         additional STATUS_IMPORT_OK becuase that is what gpgme expects.
713         (check_and_store): Always call above function after import.
714         * server.c (get_status_string): Added STATUS_IMPORT_OK.
715
716 2004-02-13  Werner Koch  <wk@gnupg.org>
717
718         * certcheck.c (gpgsm_create_cms_signature): Format a description
719         for use by the pinentry.
720         * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
721         * certdump.c (format_name_cookie, format_name_writer) 
722         (gpgsm_format_name): New.
723         (gpgsm_format_serial): New.
724         (gpgsm_format_keydesc): New.
725         * call-agent.c (gpgsm_agent_pksign): New arg DESC.
726         (gpgsm_agent_pkdecrypt): Ditto.
727
728         * encrypt.c (init_dek): Check for too weak algorithms.
729
730         * import.c (parse_p12, popen_protect_tool): New.
731
732         * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
733         Changed all callers.
734         (base64_reader_cb): Handle it here.
735         (gpgsm_reader_eof_seen): New.
736         (base64_reader_cb): Set a flag for EOF.
737         (simple_reader_cb): Ditto.
738
739 2004-02-12  Werner Koch  <wk@gnupg.org>
740
741         * gpgsm.h, gpgsm.c: New option --protect-tool-program.
742         * gpgsm.c (run_protect_tool): Use it.
743
744 2004-02-11  Werner Koch  <wk@gnupg.org>
745
746         * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
747         will allow to override directory names at make time.
748
749 2004-02-02  Werner Koch  <wk@gnupg.org>
750
751         * import.c (check_and_store): Import certificates even with
752         missing issuer's cert.  Fixed an "depending on the verbose
753         setting" bug.
754
755         * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
756         keybox.
757
758         * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
759         revoked flag.
760         (list_internal_keys): Retrieve validity flag.
761         (list_external_cb): Pass 0 as validity flag.
762         * keydb.c (keydb_get_flags, keydb_set_flags): New.
763         (keydb_set_cert_flags): New.
764         (lock_all): Return a proper error code.
765         (keydb_lock): New.
766         (keydb_delete): Don't lock but check that it has been locked.
767         (keydb_update_keyblock): Ditto.
768         * delete.c (delete_one): Take a lock.
769
770 2004-01-30  Werner Koch  <wk@gnupg.org>
771
772         * certchain.c (check_cert_policy): Fixed read error checking.
773         (check_cert_policy): With no critical policies issue only a
774         warning if the policy file does not exists.
775
776         * sign.c (add_certificate_list): Decrement N for the first cert.
777
778 2004-01-29  Werner Koch  <wk@gnupg.org>
779
780         * certdump.c (parse_dn_part): Map common OIDs to human readable
781         labels.  Make sure that a value won't get truncated if it includes
782         a Nul.
783
784 2004-01-28  Werner Koch  <wk@gnupg.org>
785
786         * certchain.c (gpgsm_validate_chain): Changed the message printed
787         for an untrusted root certificate.
788
789 2004-01-27  Werner Koch  <wk@gnupg.org>
790
791         * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
792         (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
793         multi-valued RDNs in a special way, i.e. in the order specified by
794         the certificate.
795         (print_dn_parts): Simplified. 
796
797 2004-01-16  Werner Koch  <wk@gnupg.org>
798
799         * sign.c (gpgsm_sign): Print an error message on all failures.
800         * decrypt.c (gpgsm_decrypt): Ditto.
801
802 2003-12-17  Werner Koch  <wk@gnupg.org>
803
804         * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
805         (cmd_encrypt): Add all enrypt-to marked certs to the list.
806         * encrypt.c (gpgsm_encrypt): Check that real recipients are
807         available.
808         * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
809         options work.  Pass the list of recients to gpgsm_server.
810         * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
811         (opt): Add NO_ENCRYPT_TO.
812         * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
813         Changed all callers and ignore duplicate entries.
814         (is_cert_in_certlist): New.
815         (gpgsm_add_cert_to_certlist): New.
816
817         * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
818         (gpgsm_dump_serial): Ditto.
819
820         * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
821
822 2003-12-16  Werner Koch  <wk@gnupg.org>
823
824         * gpgsm.c (main): Set the prefixes for assuan logging.
825
826         * sign.c (gpgsm_sign): Add validation checks for the default
827         certificate.
828
829         * gpgsm.c: Add -k as alias for --list-keys and -K for
830         --list-secret-keys.
831
832 2003-12-15  Werner Koch  <wk@gnupg.org>
833
834         * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
835         not need for real strong random here and it even better protect
836         the random bits used for the key.
837
838 2003-12-01  Werner Koch  <wk@gnupg.org>
839
840         * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
841         (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
842         * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
843         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
844         proceed accordingly.
845
846 2003-11-19  Werner Koch  <wk@gnupg.org>
847
848         * verify.c (gpgsm_verify): Use "0" instead of an empty string for
849         the VALIDSIG status.
850
851 2003-11-18  Werner Koch  <wk@gnupg.org>
852
853         * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
854
855         * certchain.c (unknown_criticals): Fixed an error code test.
856
857 2003-11-12  Werner Koch  <wk@gnupg.org>
858
859         Adjusted for API changes in Libksba.
860
861 2003-10-31  Werner Koch  <wk@gnupg.org>
862
863         * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
864         * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
865         * sign.c (gpgsm_sign): Ditto.
866         * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
867         * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
868         Ditto.
869
870 2003-10-25  Werner Koch  <wk@gnupg.org>
871
872         * certreqgen.c (read_parameters): Fixed faulty of !spacep().
873
874 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
875
876         * encrypt.c (encode_session_key): Allocate enough space.  Cast key
877         byte to unsigned char to prevent sign extension.
878         (encrypt_dek): Check return value before error.
879
880 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
881
882         * encrypt.c (encode_session_key): Use new Libgcrypt interface.
883         
884 2003-07-31  Werner Koch  <wk@gnupg.org>
885
886         * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
887
888 2003-07-29  Werner Koch  <wk@gnupg.org>
889
890         * gpgsm.c (main): Add secmem features and set the random seed file.
891         (gpgsm_exit): Update the random seed file and enable debug output.
892
893 2003-07-27  Werner Koch  <wk@gnupg.org>
894
895         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
896
897 2003-06-24  Werner Koch  <wk@gnupg.org>
898
899         * server.c (gpgsm_status_with_err_code): New.
900         * verify.c (gpgsm_verify): Use it here instead of the old
901         tokenizing version.
902
903         * verify.c (strtimestamp): Renamed to strtimestamp_r
904
905         Adjusted for changes in the libgcrypt API. Some more fixes for the
906         libgpg-error stuff.  
907
908 2003-06-04  Werner Koch  <wk@gnupg.org>
909
910         * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
911         Include new membuf header and changed used type.
912
913         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
914
915 2003-06-03  Werner Koch  <wk@gnupg.org>
916
917         Changed all error codes in all files to the new libgpg-error scheme.
918
919         * gpgsm.h: Include gpg-error.h .
920         * Makefile.am: Link with libgpg-error.
921
922 2003-04-29  Werner Koch  <wk@gnupg.org>
923
924         * Makefile.am: Use libassuan.  Don't override LDFLAGS anymore.
925         * server.c (register_commands): Adjust for new Assuan semantics.
926
927 2002-12-03  Werner Koch  <wk@gnupg.org>
928
929         * call-agent.c (gpgsm_agent_passwd): New.
930         * gpgsm.c (main): New command --passwd and --call-protect-tool
931         (run_protect_tool): New.
932
933 2002-11-25  Werner Koch  <wk@gnupg.org>
934
935         * verify.c (gpgsm_verify): Handle content-type attribute. 
936
937 2002-11-13  Werner Koch  <wk@gnupg.org>
938
939         * call-agent.c (start_agent): Try to use $GPG_TTY instead of
940         ttyname.  Changed ttyname to test stdin becuase it can be assumed
941         that output redirection is more common that input redirection.
942
943 2002-11-12  Werner Koch  <wk@gnupg.org>
944
945         * gpgsm.c: New command --call-dirmngr. 
946         * call-dirmngr.c (gpgsm_dirmngr_run_command)
947         (run_command_inq_cb,run_command_cb)
948         (run_command_status_cb): New.
949
950 2002-11-11  Werner Koch  <wk@gnupg.org>
951
952         * certcheck.c (gpgsm_check_cms_signature): Don't double free
953         s_sig but free s_pkey at leave.
954
955 2002-11-10  Werner Koch  <wk@gnupg.org>
956
957         * gpgsm.c: Removed duplicate --list-secret-key entry.
958
959 2002-09-19  Werner Koch  <wk@gnupg.org>
960
961         * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
962
963         * certchain.c (find_up): Print info when the cert was not found 
964         by the autorithyKeyIdentifier.
965
966 2002-09-03  Werner Koch  <wk@gnupg.org>
967
968         * gpgsm.c (main): Disable the internal libgcrypt locking.
969
970 2002-08-21  Werner Koch  <wk@gnupg.org>
971
972         * import.c (print_imported_summary): Cleaned up.  Print new
973         not_imported value.
974         (check_and_store): Update non_imported counter.
975         (print_import_problem): New.
976         (check_and_store): Print error status message.
977         * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
978
979 2002-08-20  Werner Koch  <wk@gnupg.org>
980
981         * gpgsm.c (main): Use the log file only in server mode.
982
983         * import.c (print_imported_summary): New.
984         (check_and_store): Update the counters, take new argument.
985         (import_one): Factored out core of gpgsm_import.
986         (gpgsm_import): Print counters.
987         (gpgsm_import_files): New.
988         * gpgsm.c (main): Use the new function for import.
989
990 2002-08-19  Werner Koch  <wk@gnupg.org>
991
992         * decrypt.c (gpgsm_decrypt): Return a better error status token.
993         * verify.c (gpgsm_verify): Don't error on messages with no signing
994         time or no message digest.  This is only the case for messages
995         without any signed attributes.
996
997 2002-08-16  Werner Koch  <wk@gnupg.org>
998
999         * certpath.c: Renamed to ..
1000         * certchain.c: this. Renamed all all other usages of "path" in the
1001         context of certificates to "chain".
1002
1003         * call-agent.c (learn_cb): Special treatment when the issuer
1004         certificate is missing.
1005
1006 2002-08-10  Werner Koch  <wk@gnupg.org>
1007
1008         * Makefile.am (INCLUDES): Add definition for localedir.
1009
1010         * keylist.c (list_cert_colon): Print the short fingerprint in the
1011         key ID field.
1012         * fingerprint.c (gpgsm_get_short_fingerprint): New.
1013         * verify.c (gpgsm_verify): Print more verbose info for a good
1014         signature.
1015
1016 2002-08-09  Werner Koch  <wk@gnupg.org>
1017
1018         * decrypt.c (prepare_decryption): Hack to detected already
1019         unpkcsedone keys.
1020
1021         * gpgsm.c (emergency_cleanup): New.
1022         (main): Initialize the signal handler.
1023
1024         * sign.c (gpgsm_sign): Reset the hash context for subsequent
1025         signers and release it at the end.
1026
1027 2002-08-05  Werner Koch  <wk@gnupg.org>
1028
1029         * server.c (cmd_signer): New command "SIGNER"
1030         (register_commands): Register it.
1031         (cmd_sign): Pass the signer list to gpgsm_sign.
1032         * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
1033         for secret key if set and changed all callers.
1034         * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
1035         multiple signers.
1036         * gpgsm.c (main): Support more than one -u.
1037         
1038         * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
1039         which is actually what gets returned from add_to_certlist.
1040         
1041 2002-07-26  Werner Koch  <wk@gnupg.org>
1042
1043         * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
1044         (gpgsm_check_cms_signature): Ditto.
1045
1046 2002-07-22  Werner Koch  <wk@gnupg.org>
1047
1048         * keydb.c (keydb_add_resource): Register a lock file.
1049         (lock_all, unlock_all): Implemented.
1050
1051         * delete.c: New.
1052         * gpgsm.c: Made --delete-key work.
1053         * server.c (cmd_delkeys): New.
1054         (register_commands): New command DELKEYS.
1055
1056         * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
1057         used and a STATUS_ERROR with the algorithm oid.
1058
1059 2002-07-03  Werner Koch  <wk@gnupg.org>
1060
1061         * server.c (gpgsm_status2): Insert a blank between all optional
1062         arguments when using assuan.
1063         * server.c (cmd_recipient): No more need for extra blank in constants.
1064         * import.c (print_imported_status): Ditto.
1065         * gpgsm.c (main): Ditto.
1066
1067 2002-07-02  Werner Koch  <wk@gnupg.org>
1068
1069         * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
1070         the fingerprint.
1071
1072         * certpath.c (check_cert_policy): Don't use log_error to print a
1073         warning.
1074
1075         * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
1076         all callers.
1077         * call-agent.c (learn_cb): Print info message only for real imports.
1078
1079         * import.c (gpgsm_import): Moved duplicated code to ...
1080         (check_and_store): new function.  Added magic to import the entire
1081         chain. Print status only for real imports and moved printing code
1082         to ..
1083         (print_imported_status): New.
1084
1085         * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
1086         call in very verbose mode.
1087
1088         * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
1089         with the server mode.
1090
1091 2002-06-29  Werner Koch  <wk@gnupg.org>
1092
1093         * gpgsm.c: New option --auto-issuer-key-retrieve.
1094         * certpath.c (find_up): Try to retrieve an issuer key from an
1095         external source and from the ephemeral key DB.
1096         (find_up_store_certs_cb): New.
1097
1098         * keydb.c (keydb_set_ephemeral): Does now return the old
1099         state.  Call the backend only when required.
1100
1101         * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
1102         (lookup_status_cb): Issue status only when CTRL is not NULL.
1103         (gpgsm_dirmngr_lookup): Document that CTRL is optional.
1104
1105         * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
1106
1107 2002-06-28  Werner Koch  <wk@gnupg.org>
1108
1109         * server.c (cmd_recipient): Add more reason codes.
1110
1111 2002-06-27  Werner Koch  <wk@gnupg.org>
1112
1113         * certpath.c (gpgsm_basic_cert_check): Use
1114         --debug-no-path-validation to also bypass this basic check.
1115
1116         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1117
1118         * call-agent.c (start_agent): Create and pass the list of FD to
1119         keep in the child to assuan.
1120         * call-dirmngr.c (start_dirmngr): Ditto.
1121
1122 2002-06-26  Werner Koch  <wk@gnupg.org>
1123
1124         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
1125
1126         * gpgsm.c: --debug-no-path-validation does not take an argument.
1127
1128 2002-06-25  Werner Koch  <wk@gnupg.org>
1129
1130         * certdump.c (print_dn_part): Always print a leading slash,
1131         removed NEED_DELIM arg and changed caller.
1132
1133         * export.c (gpgsm_export): Print LFs to FP and not stdout.
1134         (print_short_info): Ditto.  Make use of gpgsm_print_name.
1135
1136         * server.c (cmd_export): Use output-fd instead of data lines; this
1137         was actually the specified way.
1138
1139 2002-06-24  Werner Koch  <wk@gnupg.org>
1140
1141         * gpgsm.c: Removed duped help entry for --list-keys.
1142         
1143         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
1144
1145         * certpath.c (gpgsm_validate_path): Use it here instead of the
1146         debug flag hack.
1147
1148         * certpath.c (check_cert_policy): Return No_Policy_Match if the
1149         policy file could not be opened.
1150
1151 2002-06-20  Werner Koch  <wk@gnupg.org>
1152
1153         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
1154         certificate with the required key usage.
1155
1156         * gpgsm.c (main): Fixed a segv when using --outfile without an
1157         argument.
1158
1159         * keylist.c (print_capabilities): Also check for non-repudiation
1160         and data encipherment.
1161         * certlist.c (cert_usage_p): Test for signing and encryption was
1162         swapped.  Add a case for certification usage, handle
1163         non-repudiation and data encipherment.
1164         (gpgsm_cert_use_cert_p): New.
1165         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
1166         callers to pass it.
1167         * certpath.c (gpgsm_validate_path): Use it here to print a status
1168         message. Added a CTRL argument and changed all callers to pass it.
1169         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
1170         usage.
1171         * verify.c (gpgsm_verify): Ditto.
1172         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
1173
1174 2002-06-19  Werner Koch  <wk@gnupg.org>
1175
1176         * call-agent.c (learn_cb): Use log_info instead of log_error on
1177         successful import.
1178
1179         * keydb.c (keydb_set_ephemeral): New.
1180         (keydb_store_cert): New are ephemeral, changed all callers.
1181         * keylist.c (list_external_cb): Store cert as ephemeral.
1182         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
1183
1184         * gpgsm.c (main): New command --list-external-keys.
1185         
1186 2002-06-17  Werner Koch  <wk@gnupg.org>
1187
1188         * certreqgen.c (read_parameters): Improved error handling.
1189         (gpgsm_genkey): Print error message.
1190
1191 2002-06-13  Werner Koch  <wk@gnupg.org>
1192
1193         * gpgsm.c (main): New option --log-file.
1194
1195 2002-06-12  Werner Koch  <wk@gnupg.org>
1196
1197         * call-dirmngr.c (lookup_status_cb): New.
1198         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
1199         changed caller to pass it.
1200
1201         * gpgsm.c (open_fwrite): New.
1202         (main): Allow --output for --verify.
1203
1204         * sign.c (hash_and_copy_data): New.
1205         (gpgsm_sign): Implemented normal (non-detached) signatures.
1206         * gpgsm.c (main): Ditto.
1207         
1208         * certpath.c (gpgsm_validate_path): Special error handling for
1209         no policy match.
1210
1211 2002-06-10  Werner Koch  <wk@gnupg.org>
1212
1213         * server.c (get_status_string): Add STATUS_ERROR.
1214
1215         * certpath.c (gpgsm_validate_path): Tweaked the error checking to 
1216         return error codes in a more sensitive way.
1217         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
1218         CA certificate and when the certificate has been revoked.  Issue
1219         TRUST_FULLY even when the cert has expired.  Append an error token
1220         to these status lines.  Issue the new generic error status when a
1221         cert was not found and when leaving the function.
1222
1223 2002-06-04  Werner Koch  <wk@gnupg.org>
1224
1225         * gpgsm.c (main): New command --list-sigs
1226         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
1227         not used.
1228         (list_cert_chain): New.
1229
1230 2002-05-31  Werner Koch  <wk@gnupg.org>
1231
1232         * gpgsm.c (main): Don't print the "go ahead" message for an
1233         invalid command.
1234
1235 2002-05-23  Werner Koch  <wk@gnupg.org>
1236
1237         * import.c (gpgsm_import): Add error messages.
1238
1239 2002-05-21  Werner Koch  <wk@gnupg.org>
1240
1241         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
1242         (list_external_keys): New.
1243         (gpgsm_list_keys): Dispatcher for above.
1244         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
1245         (gpgsm_dirmngr_lookup): New.
1246         * server.c (option_handler): Handle new option --list-mode.
1247         (do_listkeys): Handle options and actually use the mode argument.
1248         (get_status_string): New code TRUNCATED.
1249
1250         * import.c (gpgsm_import): Try to identify the type of input and
1251         handle certs-only messages.
1252
1253 2002-05-14  Werner Koch  <wk@gnupg.org>
1254
1255         * gpgsm.c: New option --faked-system-time
1256         * sign.c (gpgsm_sign): And use it here.
1257         * certpath.c (gpgsm_validate_path): Ditto.
1258
1259 2002-05-03  Werner Koch  <wk@gnupg.org>
1260
1261         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
1262         all callers.
1263         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
1264         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
1265
1266 2002-04-26  Werner Koch  <wk@gnupg.org>
1267
1268         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
1269         Changed all users.
1270
1271         * call-agent.c (start_agent): Be more silent without -v.
1272         * call-dirmngr.c (start_dirmngr): Ditto.
1273
1274 2002-04-25  Werner Koch  <wk@gnupg.org>
1275
1276         * call-agent.c (start_agent): Make copies of old locales and check
1277         for setlocale.
1278
1279 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1280
1281         * call-agent.c (start_agent): Fix error handling logic so the
1282         locale is always correctly reset.
1283
1284 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1285
1286         * server.c (option_handler): Accept display, ttyname, ttytype,
1287         lc_ctype and lc_messages options.
1288         * gpgsm.c (main): Allocate memory for these options.
1289         * gpgsm.h (struct opt): Make corresponding members non-const.
1290
1291 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
1292
1293         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
1294         lc_ctype, lc_messages.
1295         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
1296         oTTYname, oTTYtype, oLCctype, oLCmessages.
1297         (opts): New entries for these options.
1298         (main): Handle these new options.
1299         * call-agent.c (start_agent): Set the various display and tty
1300         parameter after resetting.
1301
1302 2002-04-18  Werner Koch  <wk@gnupg.org>
1303
1304         * certreqgen.c (gpgsm_genkey): Write status output on success.
1305
1306 2002-04-15  Werner Koch  <wk@gnupg.org>
1307
1308         * gpgsm.c (main): Check ksba version.
1309
1310         * certpath.c (find_up): New to use the authorithKeyIdentifier.
1311         Use it in all other functions to locate the signing cert..
1312
1313 2002-04-11  Werner Koch  <wk@gnupg.org>
1314
1315         * certlist.c (cert_usable_p): New.
1316         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
1317         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
1318         (gpgsm_add_to_certlist): Check the key usage.
1319         * sign.c (gpgsm_sign): Ditto.
1320         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
1321         certificate was used.
1322         * decrypt.c (gpgsm_decrypt): Ditto
1323         * keylist.c (print_capabilities): Determine values from the cert.
1324
1325 2002-03-28  Werner Koch  <wk@gnupg.org>
1326
1327         * keylist.c (list_cert_colon): Fixed listing of crt record; the
1328         issuer is not at the right place.  Print a chainingID.
1329         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
1330         common errors.
1331
1332 2002-03-21  Werner Koch  <wk@gnupg.org>
1333
1334         * export.c: New.
1335         * gpgsm.c: Add command --export.
1336         * server.c (cmd_export): New.
1337         
1338 2002-03-13  Werner Koch  <wk@gnupg.org>
1339
1340         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
1341
1342 2002-03-12  Werner Koch  <wk@gnupg.org>
1343
1344         * certpath.c (check_cert_policy): Print the policy list.
1345
1346         * verify.c (gpgsm_verify): Detect certs-only message.
1347
1348 2002-03-11  Werner Koch  <wk@gnupg.org>
1349
1350         * import.c (gpgsm_import): Print a notice about imported certificates
1351         when in verbose mode.
1352
1353         * gpgsm.c (main): Print INV_RECP status.
1354         * server.c (cmd_recipient): Ditto.
1355
1356         * server.c (gpgsm_status2): New.  Allows for a list of strings.
1357         (gpgsm_status): Divert to gpgsm_status2.
1358
1359         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
1360         recipients are given.  Print a NO_RECP status.
1361
1362 2002-03-06  Werner Koch  <wk@gnupg.org>
1363
1364         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
1365         (do_listkeys): new.  Add pattern parsing.
1366
1367         * keylist.c (gpgsm_list_keys): Handle selection pattern.
1368
1369         * gpgsm.c: New command --learn-card
1370         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
1371
1372         * gpgsm.c (main): Print error messages for non-implemented commands.
1373
1374         * base64.c (base64_reader_cb): Use case insensitive compare of the
1375         Content-Type string to detect plain base-64.
1376
1377 2002-03-05  Werner Koch  <wk@gnupg.org>
1378
1379         * gpgsm.c, gpgsm.h: Add local_user.
1380         * sign.c (gpgsm_get_default_cert): New.
1381         (get_default_signer): Use the new function if local_user is not
1382         set otherwise used that value.
1383         * encrypt.c (get_default_recipient): Removed.
1384         (gpgsm_encrypt): Use gpgsm_get_default_cert.
1385
1386         * verify.c (gpgsm_verify): Better error text for a bad signature
1387         found by comparing the hashs.
1388
1389 2002-02-27  Werner Koch  <wk@gnupg.org>
1390
1391         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
1392         of assuan_transact.
1393
1394 2002-02-25  Werner Koch  <wk@gnupg.org>
1395
1396         * server.c (option_handler): Allow to use -2 for "send all certs
1397         except the root cert".
1398         * sign.c (add_certificate_list): Implement it here.
1399         * certpath.c (gpgsm_is_root_cert): New.
1400
1401 2002-02-19  Werner Koch  <wk@gnupg.org>
1402
1403         * certpath.c (check_cert_policy): New.
1404         (gpgsm_validate_path): And call it from here.
1405         * gpgsm.c (main): New options --policy-file,
1406         --disable-policy-checks and --enable-policy-checks.
1407         * gpgsm.h (opt): Added policy_file, no_policy_checks.
1408
1409 2002-02-18  Werner Koch  <wk@gnupg.org>
1410
1411         * certpath.c (gpgsm_validate_path): Ask the agent to add the
1412         certificate into the trusted list.
1413         * call-agent.c (gpgsm_agent_marktrusted): New.
1414
1415 2002-02-07  Werner Koch  <wk@gnupg.org>
1416
1417         * certlist.c (gpgsm_add_to_certlist): Check that the specified
1418         name identifies a certificate unambiguously.
1419         (gpgsm_find_cert): Ditto.
1420
1421         * server.c (cmd_listkeys): Check that the data stream is available.
1422         (cmd_listsecretkeys): Ditto.
1423         (has_option): New.
1424         (cmd_sign): Fix ambiguousity in option recognition.
1425
1426         * gpgsm.c (main): Enable --logger-fd.
1427
1428         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
1429         performance.
1430
1431         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
1432         the agent.
1433
1434         * keylist.c (list_cert_colon): Filter out control characters.
1435
1436 2002-02-06  Werner Koch  <wk@gnupg.org>
1437
1438         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
1439
1440         * server.c (reset_notify): Close input and output FDs.
1441         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
1442         (cmd_genkey): Close the FDs and release the recipient list even in
1443         the error case.
1444
1445 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
1446
1447         * sign.c (gpgsm_sign): Do not release certificate twice.
1448
1449 2002-01-29  Werner Koch  <wk@gnupg.org>
1450
1451         * call-agent.c (gpgsm_agent_havekey): New.
1452         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
1453         when we know that the secret key is available.
1454         (gpgsm_list_keys): New arg MODE, check whether a secret key is
1455         available.  Changed all callers.
1456         * gpgsm.c (main): New command --list-secret-keys.
1457         * server.c (cmd_listsecretkeys): New.
1458         (cmd_listkeys): Return secret keys with "crs" record.
1459
1460 2002-01-28  Werner Koch  <wk@gnupg.org>
1461
1462         * certreqgen.c (create_request): Store the email address in the req.
1463
1464 2002-01-25  Werner Koch  <wk@gnupg.org>
1465
1466         * gpgsm.c (main): Disable core dumps.
1467
1468         * sign.c (add_certificate_list): New.
1469         (gpgsm_sign): Add the certificates to the CMS object.
1470         * certpath.c (gpgsm_walk_cert_chain): New.
1471         * gpgsm.h (server_control_s): Add included_certs.
1472         * gpgsm.c: Add option --include-certs.
1473         (gpgsm_init_default_ctrl): New.
1474         (main): Call it.
1475         * server.c (gpgsm_server): Ditto.
1476         (option_handler): Support --include-certs.
1477
1478 2002-01-23  Werner Koch  <wk@gnupg.org>
1479
1480         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
1481         * certdump.c (gpgsm_dump_string): New.
1482         (print_dn): Replaced by above.
1483
1484 2002-01-22  Werner Koch  <wk@gnupg.org>
1485
1486         * certpath.c (unknown_criticals): New.
1487         (allowed_ca): New.
1488         (gpgsm_validate_path): Check validity, CA attribute, path length
1489         and unknown critical extensions.
1490
1491 2002-01-21  Werner Koch  <wk@gnupg.org>
1492
1493         * gpgsm.c: Add option --enable-crl-checks.
1494
1495         * call-agent.c (start_agent): Implemented socket based access.
1496         * call-dirmngr.c (start_dirmngr): Ditto.
1497
1498 2002-01-20  Werner Koch  <wk@gnupg.org>
1499
1500         * server.c (option_handler): New.
1501         (gpgsm_server): Register it with assuan.
1502
1503 2002-01-19  Werner Koch  <wk@gnupg.org>
1504
1505         * server.c (gpgsm_server): Use assuan_deinit_server and setup
1506         assuan logging if enabled.
1507         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
1508         an Assuan log file.
1509
1510         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
1511
1512 2002-01-15  Werner Koch  <wk@gnupg.org>
1513
1514         * import.c (gpgsm_import): Just do a basic cert check before
1515         storing it.
1516         * certpath.c (gpgsm_basic_cert_check): New.
1517
1518         * keydb.c (keydb_store_cert): New.
1519         * import.c (store_cert): Removed and change all caller to use
1520         the new function.
1521         * verify.c (store_cert): Ditto.
1522
1523         * certlist.c (gpgsm_add_to_certlist): Validate the path
1524
1525         * certpath.c (gpgsm_validate_path): Check the trust list.
1526         * call-agent.c (gpgsm_agent_istrusted): New.
1527
1528 2002-01-14  Werner Koch  <wk@gnupg.org>
1529
1530         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
1531         * certlist.c (gpgsm_find_cert): New.
1532
1533 2002-01-13  Werner Koch  <wk@gnupg.org>
1534
1535         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
1536         hash after the dot.
1537
1538 2002-01-11  Werner Koch  <wk@gnupg.org>
1539
1540         * call-dirmngr.c: New.
1541         * certpath.c (gpgsm_validate_path): Check the CRL here.
1542         * fingerprint.c (gpgsm_get_certid): New.
1543         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
1544
1545 2002-01-10  Werner Koch  <wk@gnupg.org>
1546
1547         * base64.c (gpgsm_create_writer): Allow to set the object name
1548
1549 2002-01-08  Werner Koch  <wk@gnupg.org>
1550
1551         * keydb.c (spacep): Removed because it is now in util.c
1552
1553         * server.c (cmd_genkey): New.
1554         * certreqgen.c: New.  The parameter handling code has been taken
1555         from gnupg/g10/keygen.c version 1.0.6.
1556         * call-agent.c (gpgsm_agent_genkey): New.
1557
1558 2002-01-02  Werner Koch  <wk@gnupg.org>
1559
1560         * server.c (rc_to_assuan_status): Removed and changed all callers
1561         to use map_to_assuan_status.
1562
1563 2001-12-20  Werner Koch  <wk@gnupg.org>
1564
1565         * verify.c (gpgsm_verify): Implemented non-detached signature
1566         verification.  Add OUT_FP arg, initialize a writer and changed all
1567         callers.
1568         * server.c (cmd_verify): Pass an out_fp if one has been set.
1569
1570         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
1571
1572         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
1573         global.
1574         (print_time): Renamed to gpgsm_dump_time, made global.
1575         (gpgsm_dump_serial): Take a real S-Expression as argument and
1576         print the first item.
1577         * keylist.c (list_cert_colon): Ditto.
1578         * keydb.c (keydb_search_issuer_sn): Ditto.
1579         * decrypt.c (print_integer_sexp): Removed and made callers 
1580         use gpgsm_dump_serial.
1581         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
1582         
1583 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
1584
1585         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
1586
1587 2001-12-18  Werner Koch  <wk@gnupg.org>
1588
1589         * verify.c (print_integer_sexp): Renamed from print_integer and
1590         print the serial number according to the S-Exp rules.
1591         * decrypt.c (print_integer_sexp): Ditto.
1592
1593 2001-12-17  Werner Koch  <wk@gnupg.org>
1594
1595         * keylist.c (list_cert_colon): Changed for new return value of
1596         get_serial.
1597         * keydb.c (keydb_search_issuer_sn): Ditto.
1598         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
1599         returingin functions.
1600         * fingerprint.c (gpgsm_get_keygrip): Ditto.
1601         * encrypt.c (encrypt_dek): Ditto
1602         * certcheck.c (gpgsm_check_cms_signature): Ditto
1603         * decrypt.c (prepare_decryption): Ditto.
1604         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
1605         use KsbaSexp type and calculate the length.
1606
1607         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
1608
1609         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
1610
1611         * fingerprint.c (gpgsm_get_keygrip): Use the new
1612         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
1613         therefore the grip values changed.
1614
1615 2001-12-15  Werner Koch  <wk@gnupg.org>
1616
1617         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
1618         kludge.
1619         (gpgsm_create_cms_signature): Removed the commented fake key
1620         code.  This makes the function pretty simple.
1621
1622         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
1623
1624         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
1625         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
1626
1627 2001-12-14  Werner Koch  <wk@gnupg.org>
1628
1629         * keylist.c (list_cert_colon): Kludge to show an email address
1630         encoded in the subject's DN.
1631
1632         * verify.c (gpgsm_verify): Add hash debug helpers
1633         * sign.c (gpgsm_sign): Ditto.
1634
1635         * base64.c (base64_reader_cb): Reset the linelen when we need to
1636         skip the line and adjusted test; I somehow forgot about DeMorgan.
1637
1638         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
1639         (cmd_import): Close the FDs on success.
1640         (close_message_fd): New.
1641         (input_notify): Setting autodetect_encoding to 0 after initializing
1642         it to 0 is pretty pointless.  Easy to fix.
1643
1644         * gpgsm.c (main): New option --debug-wait n, so that it is
1645         possible to attach gdb when used in server mode.
1646
1647         * sign.c (get_default_signer): Use keydb_classify_name here.
1648
1649 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
1650
1651         * call-agent.c (LINELENGTH): Removed.
1652         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
1653         (gpgsm_agent_pkdecrypt): Likewise.
1654
1655 2001-12-13  Werner Koch  <wk@gnupg.org>
1656
1657         * keylist.c (list_cert_colon): Print alternative names of subject
1658         and a few other values.
1659
1660 2001-12-12  Werner Koch  <wk@gnupg.org>
1661
1662         * gpgsm.c (main): New options --assume-{armor,base64,binary}. 
1663         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
1664
1665 2001-12-04  Werner Koch  <wk@gnupg.org>
1666
1667         * call-agent.c (read_from_agent): Check for inquire responses.
1668         (request_reply): Handle them using a new callback arg, changed all
1669         callers.
1670         (gpgsm_agent_pkdecrypt): New.
1671
1672 2001-11-27  Werner Koch  <wk@gnupg.org>
1673
1674         * base64.c: New.  Changed all other functions to use this instead
1675         of direct creation of ksba_reader/writer.
1676         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
1677
1678 2001-11-26  Werner Koch  <wk@gnupg.org>
1679
1680         * gpgsm.c: New option --agent-program
1681         * call-agent.c (start_agent): Allow to override the default path
1682         to the agent.
1683
1684         * keydb.c (keydb_add_resource): Create keybox
1685
1686         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
1687
1688         * server.c (rc_to_assuan_status): New.  Use it for all commands.
1689
1690         
1691  Copyright 2001, 2002, 2003, 2004, 2005,
1692            2006 Free Software Foundation, Inc.
1693
1694  This file is free software; as a special exception the author gives
1695  unlimited permission to copy and/or distribute it, with or without
1696  modifications, as long as this notice is preserved.
1697
1698  This file is distributed in the hope that it will be useful, but
1699  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1700  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.