* gpgsm.c: New option --force-crl-refresh.
[gnupg.git] / sm / ChangeLog
1 2004-04-07  Werner Koch  <wk@gnupg.org>
2
3         * gpgsm.c: New option --force-crl-refresh.
4         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
5
6 2004-04-05  Werner Koch  <wk@gnupg.org>
7
8         * server.c (get_status_string): Add STATUS_NEWSIG.
9         * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
10
11         * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
12         not just warn if a cert is not suitable; bail out immediately.
13
14 2004-04-01  Werner Koch  <wk@gnupg.org>
15
16         * call-dirmngr.c (isvalid_status_cb): New.
17         (unhexify_fpr): New. Taken from ../g10/call-agent.c
18         (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
19         it thru.  Detect need to check the respondert cert and do that.
20         * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
21         all callers.
22
23 2004-03-24  Werner Koch  <wk@gnupg.org>
24
25         * sign.c (gpgsm_sign): Include a short list of capabilities.
26
27 2004-03-17  Werner Koch  <wk@gnupg.org>
28
29         * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
30
31 2004-03-16  Werner Koch  <wk@gnupg.org>
32
33         * gpgsm.c (main): Implemented --gpgconf-list.
34
35 2004-03-15  Werner Koch  <wk@gnupg.org>
36
37         * keylist.c (list_cert_colon): Hack to set the expired flag.
38
39 2004-03-09  Werner Koch  <wk@gnupg.org>
40
41         * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
42
43         * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
44
45 2004-03-04  Werner Koch  <wk@gnupg.org>
46
47         * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
48
49         * certchain.c (is_cert_still_valid): New.  Code moved from ...
50         (gpgsm_validate_chain): ... here because we now need to check at
51         two places and at a later stage, so that we can pass the issuer
52         cert down to the dirmngr.
53
54 2004-03-03  Werner Koch  <wk@gnupg.org>
55
56         * call-agent.c (start_agent): Replaced pinentry setup code by a
57         call to a new common function.
58
59         * certdump.c (gpgsm_format_keydesc): Make sure the string is
60         returned as utf-8.
61
62         * export.c (gpgsm_export): Make sure that we don't export more
63         than one certificate.
64
65 2004-03-02  Werner Koch  <wk@gnupg.org>
66
67         * export.c (create_duptable, destroy_duptable)
68         (insert_duptable): New.
69         (gpgsm_export): Avoid duplicates.
70
71 2004-02-26  Werner Koch  <wk@gnupg.org>
72
73         * certchain.c (compare_certs): New.
74         (gpgsm_validate_chain): Fixed infinite certificate checks after
75         bad signatures.
76
77 2004-02-24  Werner Koch  <wk@gnupg.org>
78
79         * keylist.c (list_cert_colon): Print the fingerprint as the
80         cert-id for root certificates.
81
82 2004-02-21  Werner Koch  <wk@gnupg.org>
83
84         * keylist.c (list_internal_keys): Return error codes.
85         (list_external_keys, gpgsm_list_keys): Ditto.
86         * server.c (do_listkeys): Ditto.
87
88         * gpgsm.c (main): Display a key description for --passwd.
89         * call-agent.c (gpgsm_agent_passwd): New arg DESC.
90
91 2004-02-20  Werner Koch  <wk@gnupg.org>
92
93         * gpgsm.c (main): New option --debug-ignore-expiration.
94         * certchain.c (gpgsm_validate_chain): Use it here.
95
96         * certlist.c (cert_usage_p): Apply extKeyUsage.
97
98 2004-02-19  Werner Koch  <wk@gnupg.org>
99
100         * export.c (export_p12, popen_protect_tool)
101         (gpgsm_p12_export): New.
102         * gpgsm.c (main): New command --export-secret-key-p12. 
103
104 2004-02-18  Werner Koch  <wk@gnupg.org>
105
106         * gpgsm.c (set_debug): Set the new --debug-level flags.
107         (main): New option --gpgconf-list.  
108         (main): Do not setup -u and -r keys when not required.
109         (main): Setup the used character set.
110
111         * keydb.c (keydb_add_resource): Print a hint to start the
112         gpg-agent.
113
114 2004-02-17  Werner Koch  <wk@gnupg.org>
115
116         * gpgsm.c: Fixed value parsing for --with-validation.
117         * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
118         * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
119
120         * gpgsm.c: New option --with-md5-fingerprint.
121         * keylist.c (list_cert_std): Print MD5 fpr.
122
123         * gpgsm.c: New options --with-validation.
124         * server.c (option_handler): New option "with-validation".
125         * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
126         WITH_VALIDATION. Changed callers to set it.
127         (list_external_cb, list_external_keys): Pass CTRL to the callback.
128         (list_cert_colon): Add arg CTRL.  Check validation if requested.
129         * certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
130         (gpgsm_validate_chain): New args LISTMODE and FP.
131         (do_list): New helper for info output.
132         (find_up): New arg FIND_NEXT.
133         (gpgsm_validate_chain): After a bad signature try again with other
134         CA certificates.
135
136         * import.c (print_imported_status): New arg NEW_CERT. Print
137         additional STATUS_IMPORT_OK becuase that is what gpgme expects.
138         (check_and_store): Always call above function after import.
139         * server.c (get_status_string): Added STATUS_IMPORT_OK.
140
141 2004-02-13  Werner Koch  <wk@gnupg.org>
142
143         * certcheck.c (gpgsm_create_cms_signature): Format a description
144         for use by the pinentry.
145         * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
146         * certdump.c (format_name_cookie, format_name_writer) 
147         (gpgsm_format_name): New.
148         (gpgsm_format_serial): New.
149         (gpgsm_format_keydesc): New.
150         * call-agent.c (gpgsm_agent_pksign): New arg DESC.
151         (gpgsm_agent_pkdecrypt): Ditto.
152
153         * encrypt.c (init_dek): Check for too weak algorithms.
154
155         * import.c (parse_p12, popen_protect_tool): New.
156
157         * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
158         Changed all callers.
159         (base64_reader_cb): Handle it here.
160         (gpgsm_reader_eof_seen): New.
161         (base64_reader_cb): Set a flag for EOF.
162         (simple_reader_cb): Ditto.
163
164 2004-02-12  Werner Koch  <wk@gnupg.org>
165
166         * gpgsm.h, gpgsm.c: New option --protect-tool-program.
167         * gpgsm.c (run_protect_tool): Use it.
168
169 2004-02-11  Werner Koch  <wk@gnupg.org>
170
171         * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
172         will allow to override directory names at make time.
173
174 2004-02-02  Werner Koch  <wk@gnupg.org>
175
176         * import.c (check_and_store): Import certificates even with
177         missing issuer's cert.  Fixed an "depending on the verbose
178         setting" bug.
179
180         * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
181         keybox.
182
183         * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
184         revoked flag.
185         (list_internal_keys): Retrieve validity flag.
186         (list_external_cb): Pass 0 as validity flag.
187         * keydb.c (keydb_get_flags, keydb_set_flags): New.
188         (keydb_set_cert_flags): New.
189         (lock_all): Return a proper error code.
190         (keydb_lock): New.
191         (keydb_delete): Don't lock but check that it has been locked.
192         (keydb_update_keyblock): Ditto.
193         * delete.c (delete_one): Take a lock.
194
195 2004-01-30  Werner Koch  <wk@gnupg.org>
196
197         * certchain.c (check_cert_policy): Fixed read error checking.
198         (check_cert_policy): With no critical policies issue only a
199         warning if the policy file does not exists.
200
201         * sign.c (add_certificate_list): Decrement N for the first cert.
202
203 2004-01-29  Werner Koch  <wk@gnupg.org>
204
205         * certdump.c (parse_dn_part): Map common OIDs to human readable
206         labels.  Make sure that a value won't get truncated if it includes
207         a Nul.
208
209 2004-01-28  Werner Koch  <wk@gnupg.org>
210
211         * certchain.c (gpgsm_validate_chain): Changed the message printed
212         for an untrusted root certificate.
213
214 2004-01-27  Werner Koch  <wk@gnupg.org>
215
216         * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
217         (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
218         multi-valued RDNs in a special way, i.e. in the order specified by
219         the certificate.
220         (print_dn_parts): Simplified. 
221
222 2004-01-16  Werner Koch  <wk@gnupg.org>
223
224         * sign.c (gpgsm_sign): Print an error message on all failures.
225         * decrypt.c (gpgsm_decrypt): Ditto.
226
227 2003-12-17  Werner Koch  <wk@gnupg.org>
228
229         * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
230         (cmd_encrypt): Add all enrypt-to marked certs to the list.
231         * encrypt.c (gpgsm_encrypt): Check that real recipients are
232         available.
233         * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
234         options work.  Pass the list of recients to gpgsm_server.
235         * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
236         (opt): Add NO_ENCRYPT_TO.
237         * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
238         Changed all callers and ignore duplicate entries.
239         (is_cert_in_certlist): New.
240         (gpgsm_add_cert_to_certlist): New.
241
242         * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
243         (gpgsm_dump_serial): Ditto.
244
245         * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
246
247 2003-12-16  Werner Koch  <wk@gnupg.org>
248
249         * gpgsm.c (main): Set the prefixes for assuan logging.
250
251         * sign.c (gpgsm_sign): Add validation checks for the default
252         certificate.
253
254         * gpgsm.c: Add -k as alias for --list-keys and -K for
255         --list-secret-keys.
256
257 2003-12-15  Werner Koch  <wk@gnupg.org>
258
259         * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
260         not need for real strong random here and it even better protect
261         the random bits used for the key.
262
263 2003-12-01  Werner Koch  <wk@gnupg.org>
264
265         * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
266         (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
267         * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
268         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
269         proceed accordingly.
270
271 2003-11-19  Werner Koch  <wk@gnupg.org>
272
273         * verify.c (gpgsm_verify): Use "0" instead of an empty string for
274         the VALIDSIG status.
275
276 2003-11-18  Werner Koch  <wk@gnupg.org>
277
278         * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
279
280         * certchain.c (unknown_criticals): Fixed an error code test.
281
282 2003-11-12  Werner Koch  <wk@gnupg.org>
283
284         Adjusted for API changes in Libksba.
285
286 2003-10-31  Werner Koch  <wk@gnupg.org>
287
288         * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
289         * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
290         * sign.c (gpgsm_sign): Ditto.
291         * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
292         * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
293         Ditto.
294
295 2003-10-25  Werner Koch  <wk@gnupg.org>
296
297         * certreqgen.c (read_parameters): Fixed faulty of !spacep().
298
299 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
300
301         * encrypt.c (encode_session_key): Allocate enough space.  Cast key
302         byte to unsigned char to prevent sign extension.
303         (encrypt_dek): Check return value before error.
304
305 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
306
307         * encrypt.c (encode_session_key): Use new Libgcrypt interface.
308         
309 2003-07-31  Werner Koch  <wk@gnupg.org>
310
311         * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
312
313 2003-07-29  Werner Koch  <wk@gnupg.org>
314
315         * gpgsm.c (main): Add secmem features and set the random seed file.
316         (gpgsm_exit): Update the random seed file and enable debug output.
317
318 2003-07-27  Werner Koch  <wk@gnupg.org>
319
320         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
321
322 2003-06-24  Werner Koch  <wk@gnupg.org>
323
324         * server.c (gpgsm_status_with_err_code): New.
325         * verify.c (gpgsm_verify): Use it here instead of the old
326         tokenizing version.
327
328         * verify.c (strtimestamp): Renamed to strtimestamp_r
329
330         Adjusted for changes in the libgcrypt API. Some more fixes for the
331         libgpg-error stuff.  
332
333 2003-06-04  Werner Koch  <wk@gnupg.org>
334
335         * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
336         Include new membuf header and changed used type.
337
338         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
339
340 2003-06-03  Werner Koch  <wk@gnupg.org>
341
342         Changed all error codes in all files to the new libgpg-error scheme.
343
344         * gpgsm.h: Include gpg-error.h .
345         * Makefile.am: Link with libgpg-error.
346
347 2003-04-29  Werner Koch  <wk@gnupg.org>
348
349         * Makefile.am: Use libassuan.  Don't override LDFLAGS anymore.
350         * server.c (register_commands): Adjust for new Assuan semantics.
351
352 2002-12-03  Werner Koch  <wk@gnupg.org>
353
354         * call-agent.c (gpgsm_agent_passwd): New.
355         * gpgsm.c (main): New command --passwd and --call-protect-tool
356         (run_protect_tool): New.
357
358 2002-11-25  Werner Koch  <wk@gnupg.org>
359
360         * verify.c (gpgsm_verify): Handle content-type attribute. 
361
362 2002-11-13  Werner Koch  <wk@gnupg.org>
363
364         * call-agent.c (start_agent): Try to use $GPG_TTY instead of
365         ttyname.  Changed ttyname to test stdin becuase it can be assumed
366         that output redirection is more common that input redirection.
367
368 2002-11-12  Werner Koch  <wk@gnupg.org>
369
370         * gpgsm.c: New command --call-dirmngr. 
371         * call-dirmngr.c (gpgsm_dirmngr_run_command)
372         (run_command_inq_cb,run_command_cb)
373         (run_command_status_cb): New.
374
375 2002-11-11  Werner Koch  <wk@gnupg.org>
376
377         * certcheck.c (gpgsm_check_cms_signature): Don't double free
378         s_sig but free s_pkey at leave.
379
380 2002-11-10  Werner Koch  <wk@gnupg.org>
381
382         * gpgsm.c: Removed duplicate --list-secret-key entry.
383
384 2002-09-19  Werner Koch  <wk@gnupg.org>
385
386         * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
387
388         * certchain.c (find_up): Print info when the cert was not found 
389         by the autorithyKeyIdentifier.
390
391 2002-09-03  Werner Koch  <wk@gnupg.org>
392
393         * gpgsm.c (main): Disable the internal libgcrypt locking.
394
395 2002-08-21  Werner Koch  <wk@gnupg.org>
396
397         * import.c (print_imported_summary): Cleaned up.  Print new
398         not_imported value.
399         (check_and_store): Update non_imported counter.
400         (print_import_problem): New.
401         (check_and_store): Print error status message.
402         * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
403
404 2002-08-20  Werner Koch  <wk@gnupg.org>
405
406         * gpgsm.c (main): Use the log file only in server mode.
407
408         * import.c (print_imported_summary): New.
409         (check_and_store): Update the counters, take new argument.
410         (import_one): Factored out core of gpgsm_import.
411         (gpgsm_import): Print counters.
412         (gpgsm_import_files): New.
413         * gpgsm.c (main): Use the new function for import.
414
415 2002-08-19  Werner Koch  <wk@gnupg.org>
416
417         * decrypt.c (gpgsm_decrypt): Return a better error status token.
418         * verify.c (gpgsm_verify): Don't error on messages with no signing
419         time or no message digest.  This is only the case for messages
420         without any signed attributes.
421
422 2002-08-16  Werner Koch  <wk@gnupg.org>
423
424         * certpath.c: Renamed to ..
425         * certchain.c: this. Renamed all all other usages of "path" in the
426         context of certificates to "chain".
427
428         * call-agent.c (learn_cb): Special treatment when the issuer
429         certificate is missing.
430
431 2002-08-10  Werner Koch  <wk@gnupg.org>
432
433         * Makefile.am (INCLUDES): Add definition for localedir.
434
435         * keylist.c (list_cert_colon): Print the short fingerprint in the
436         key ID field.
437         * fingerprint.c (gpgsm_get_short_fingerprint): New.
438         * verify.c (gpgsm_verify): Print more verbose info for a good
439         signature.
440
441 2002-08-09  Werner Koch  <wk@gnupg.org>
442
443         * decrypt.c (prepare_decryption): Hack to detected already
444         unpkcsedone keys.
445
446         * gpgsm.c (emergency_cleanup): New.
447         (main): Initialize the signal handler.
448
449         * sign.c (gpgsm_sign): Reset the hash context for subsequent
450         signers and release it at the end.
451
452 2002-08-05  Werner Koch  <wk@gnupg.org>
453
454         * server.c (cmd_signer): New command "SIGNER"
455         (register_commands): Register it.
456         (cmd_sign): Pass the signer list to gpgsm_sign.
457         * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
458         for secret key if set and changed all callers.
459         * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
460         multiple signers.
461         * gpgsm.c (main): Support more than one -u.
462         
463         * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
464         which is actually what gets returned from add_to_certlist.
465         
466 2002-07-26  Werner Koch  <wk@gnupg.org>
467
468         * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
469         (gpgsm_check_cms_signature): Ditto.
470
471 2002-07-22  Werner Koch  <wk@gnupg.org>
472
473         * keydb.c (keydb_add_resource): Register a lock file.
474         (lock_all, unlock_all): Implemented.
475
476         * delete.c: New.
477         * gpgsm.c: Made --delete-key work.
478         * server.c (cmd_delkeys): New.
479         (register_commands): New command DELKEYS.
480
481         * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
482         used and a STATUS_ERROR with the algorithm oid.
483
484 2002-07-03  Werner Koch  <wk@gnupg.org>
485
486         * server.c (gpgsm_status2): Insert a blank between all optional
487         arguments when using assuan.
488         * server.c (cmd_recipient): No more need for extra blank in constants.
489         * import.c (print_imported_status): Ditto.
490         * gpgsm.c (main): Ditto.
491
492 2002-07-02  Werner Koch  <wk@gnupg.org>
493
494         * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
495         the fingerprint.
496
497         * certpath.c (check_cert_policy): Don't use log_error to print a
498         warning.
499
500         * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
501         all callers.
502         * call-agent.c (learn_cb): Print info message only for real imports.
503
504         * import.c (gpgsm_import): Moved duplicated code to ...
505         (check_and_store): new function.  Added magic to import the entire
506         chain. Print status only for real imports and moved printing code
507         to ..
508         (print_imported_status): New.
509
510         * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
511         call in very verbose mode.
512
513         * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
514         with the server mode.
515
516 2002-06-29  Werner Koch  <wk@gnupg.org>
517
518         * gpgsm.c: New option --auto-issuer-key-retrieve.
519         * certpath.c (find_up): Try to retrieve an issuer key from an
520         external source and from the ephemeral key DB.
521         (find_up_store_certs_cb): New.
522
523         * keydb.c (keydb_set_ephemeral): Does now return the old
524         state.  Call the backend only when required.
525
526         * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
527         (lookup_status_cb): Issue status only when CTRL is not NULL.
528         (gpgsm_dirmngr_lookup): Document that CTRL is optional.
529
530         * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
531
532 2002-06-28  Werner Koch  <wk@gnupg.org>
533
534         * server.c (cmd_recipient): Add more reason codes.
535
536 2002-06-27  Werner Koch  <wk@gnupg.org>
537
538         * certpath.c (gpgsm_basic_cert_check): Use
539         --debug-no-path-validation to also bypass this basic check.
540
541         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
542
543         * call-agent.c (start_agent): Create and pass the list of FD to
544         keep in the child to assuan.
545         * call-dirmngr.c (start_dirmngr): Ditto.
546
547 2002-06-26  Werner Koch  <wk@gnupg.org>
548
549         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
550
551         * gpgsm.c: --debug-no-path-validation does not take an argument.
552
553 2002-06-25  Werner Koch  <wk@gnupg.org>
554
555         * certdump.c (print_dn_part): Always print a leading slash,
556         removed NEED_DELIM arg and changed caller.
557
558         * export.c (gpgsm_export): Print LFs to FP and not stdout.
559         (print_short_info): Ditto.  Make use of gpgsm_print_name.
560
561         * server.c (cmd_export): Use output-fd instead of data lines; this
562         was actually the specified way.
563
564 2002-06-24  Werner Koch  <wk@gnupg.org>
565
566         * gpgsm.c: Removed duped help entry for --list-keys.
567         
568         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
569
570         * certpath.c (gpgsm_validate_path): Use it here instead of the
571         debug flag hack.
572
573         * certpath.c (check_cert_policy): Return No_Policy_Match if the
574         policy file could not be opened.
575
576 2002-06-20  Werner Koch  <wk@gnupg.org>
577
578         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
579         certificate with the required key usage.
580
581         * gpgsm.c (main): Fixed a segv when using --outfile without an
582         argument.
583
584         * keylist.c (print_capabilities): Also check for non-repudiation
585         and data encipherment.
586         * certlist.c (cert_usage_p): Test for signing and encryption was
587         swapped.  Add a case for certification usage, handle
588         non-repudiation and data encipherment.
589         (gpgsm_cert_use_cert_p): New.
590         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
591         callers to pass it.
592         * certpath.c (gpgsm_validate_path): Use it here to print a status
593         message. Added a CTRL argument and changed all callers to pass it.
594         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
595         usage.
596         * verify.c (gpgsm_verify): Ditto.
597         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
598
599 2002-06-19  Werner Koch  <wk@gnupg.org>
600
601         * call-agent.c (learn_cb): Use log_info instead of log_error on
602         successful import.
603
604         * keydb.c (keydb_set_ephemeral): New.
605         (keydb_store_cert): New are ephemeral, changed all callers.
606         * keylist.c (list_external_cb): Store cert as ephemeral.
607         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
608
609         * gpgsm.c (main): New command --list-external-keys.
610         
611 2002-06-17  Werner Koch  <wk@gnupg.org>
612
613         * certreqgen.c (read_parameters): Improved error handling.
614         (gpgsm_genkey): Print error message.
615
616 2002-06-13  Werner Koch  <wk@gnupg.org>
617
618         * gpgsm.c (main): New option --log-file.
619
620 2002-06-12  Werner Koch  <wk@gnupg.org>
621
622         * call-dirmngr.c (lookup_status_cb): New.
623         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
624         changed caller to pass it.
625
626         * gpgsm.c (open_fwrite): New.
627         (main): Allow --output for --verify.
628
629         * sign.c (hash_and_copy_data): New.
630         (gpgsm_sign): Implemented normal (non-detached) signatures.
631         * gpgsm.c (main): Ditto.
632         
633         * certpath.c (gpgsm_validate_path): Special error handling for
634         no policy match.
635
636 2002-06-10  Werner Koch  <wk@gnupg.org>
637
638         * server.c (get_status_string): Add STATUS_ERROR.
639
640         * certpath.c (gpgsm_validate_path): Tweaked the error checking to 
641         return error codes in a more sensitive way.
642         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
643         CA certificate and when the certificate has been revoked.  Issue
644         TRUST_FULLY even when the cert has expired.  Append an error token
645         to these status lines.  Issue the new generic error status when a
646         cert was not found and when leaving the function.
647
648 2002-06-04  Werner Koch  <wk@gnupg.org>
649
650         * gpgsm.c (main): New command --list-sigs
651         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
652         not used.
653         (list_cert_chain): New.
654
655 2002-05-31  Werner Koch  <wk@gnupg.org>
656
657         * gpgsm.c (main): Don't print the "go ahead" message for an
658         invalid command.
659
660 2002-05-23  Werner Koch  <wk@gnupg.org>
661
662         * import.c (gpgsm_import): Add error messages.
663
664 2002-05-21  Werner Koch  <wk@gnupg.org>
665
666         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
667         (list_external_keys): New.
668         (gpgsm_list_keys): Dispatcher for above.
669         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
670         (gpgsm_dirmngr_lookup): New.
671         * server.c (option_handler): Handle new option --list-mode.
672         (do_listkeys): Handle options and actually use the mode argument.
673         (get_status_string): New code TRUNCATED.
674
675         * import.c (gpgsm_import): Try to identify the type of input and
676         handle certs-only messages.
677
678 2002-05-14  Werner Koch  <wk@gnupg.org>
679
680         * gpgsm.c: New option --faked-system-time
681         * sign.c (gpgsm_sign): And use it here.
682         * certpath.c (gpgsm_validate_path): Ditto.
683
684 2002-05-03  Werner Koch  <wk@gnupg.org>
685
686         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
687         all callers.
688         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
689         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
690
691 2002-04-26  Werner Koch  <wk@gnupg.org>
692
693         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
694         Changed all users.
695
696         * call-agent.c (start_agent): Be more silent without -v.
697         * call-dirmngr.c (start_dirmngr): Ditto.
698
699 2002-04-25  Werner Koch  <wk@gnupg.org>
700
701         * call-agent.c (start_agent): Make copies of old locales and check
702         for setlocale.
703
704 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
705
706         * call-agent.c (start_agent): Fix error handling logic so the
707         locale is always correctly reset.
708
709 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
710
711         * server.c (option_handler): Accept display, ttyname, ttytype,
712         lc_ctype and lc_messages options.
713         * gpgsm.c (main): Allocate memory for these options.
714         * gpgsm.h (struct opt): Make corresponding members non-const.
715
716 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
717
718         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
719         lc_ctype, lc_messages.
720         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
721         oTTYname, oTTYtype, oLCctype, oLCmessages.
722         (opts): New entries for these options.
723         (main): Handle these new options.
724         * call-agent.c (start_agent): Set the various display and tty
725         parameter after resetting.
726
727 2002-04-18  Werner Koch  <wk@gnupg.org>
728
729         * certreqgen.c (gpgsm_genkey): Write status output on success.
730
731 2002-04-15  Werner Koch  <wk@gnupg.org>
732
733         * gpgsm.c (main): Check ksba version.
734
735         * certpath.c (find_up): New to use the authorithKeyIdentifier.
736         Use it in all other functions to locate the signing cert..
737
738 2002-04-11  Werner Koch  <wk@gnupg.org>
739
740         * certlist.c (cert_usable_p): New.
741         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
742         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
743         (gpgsm_add_to_certlist): Check the key usage.
744         * sign.c (gpgsm_sign): Ditto.
745         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
746         certificate was used.
747         * decrypt.c (gpgsm_decrypt): Ditto
748         * keylist.c (print_capabilities): Determine values from the cert.
749
750 2002-03-28  Werner Koch  <wk@gnupg.org>
751
752         * keylist.c (list_cert_colon): Fixed listing of crt record; the
753         issuer is not at the right place.  Print a chainingID.
754         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
755         common errors.
756
757 2002-03-21  Werner Koch  <wk@gnupg.org>
758
759         * export.c: New.
760         * gpgsm.c: Add command --export.
761         * server.c (cmd_export): New.
762         
763 2002-03-13  Werner Koch  <wk@gnupg.org>
764
765         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
766
767 2002-03-12  Werner Koch  <wk@gnupg.org>
768
769         * certpath.c (check_cert_policy): Print the policy list.
770
771         * verify.c (gpgsm_verify): Detect certs-only message.
772
773 2002-03-11  Werner Koch  <wk@gnupg.org>
774
775         * import.c (gpgsm_import): Print a notice about imported certificates
776         when in verbose mode.
777
778         * gpgsm.c (main): Print INV_RECP status.
779         * server.c (cmd_recipient): Ditto.
780
781         * server.c (gpgsm_status2): New.  Allows for a list of strings.
782         (gpgsm_status): Divert to gpgsm_status2.
783
784         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
785         recipients are given.  Print a NO_RECP status.
786
787 2002-03-06  Werner Koch  <wk@gnupg.org>
788
789         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
790         (do_listkeys): new.  Add pattern parsing.
791
792         * keylist.c (gpgsm_list_keys): Handle selection pattern.
793
794         * gpgsm.c: New command --learn-card
795         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
796
797         * gpgsm.c (main): Print error messages for non-implemented commands.
798
799         * base64.c (base64_reader_cb): Use case insensitive compare of the
800         Content-Type string to detect plain base-64.
801
802 2002-03-05  Werner Koch  <wk@gnupg.org>
803
804         * gpgsm.c, gpgsm.h: Add local_user.
805         * sign.c (gpgsm_get_default_cert): New.
806         (get_default_signer): Use the new function if local_user is not
807         set otherwise used that value.
808         * encrypt.c (get_default_recipient): Removed.
809         (gpgsm_encrypt): Use gpgsm_get_default_cert.
810
811         * verify.c (gpgsm_verify): Better error text for a bad signature
812         found by comparing the hashs.
813
814 2002-02-27  Werner Koch  <wk@gnupg.org>
815
816         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
817         of assuan_transact.
818
819 2002-02-25  Werner Koch  <wk@gnupg.org>
820
821         * server.c (option_handler): Allow to use -2 for "send all certs
822         except the root cert".
823         * sign.c (add_certificate_list): Implement it here.
824         * certpath.c (gpgsm_is_root_cert): New.
825
826 2002-02-19  Werner Koch  <wk@gnupg.org>
827
828         * certpath.c (check_cert_policy): New.
829         (gpgsm_validate_path): And call it from here.
830         * gpgsm.c (main): New options --policy-file,
831         --disable-policy-checks and --enable-policy-checks.
832         * gpgsm.h (opt): Added policy_file, no_policy_checks.
833
834 2002-02-18  Werner Koch  <wk@gnupg.org>
835
836         * certpath.c (gpgsm_validate_path): Ask the agent to add the
837         certificate into the trusted list.
838         * call-agent.c (gpgsm_agent_marktrusted): New.
839
840 2002-02-07  Werner Koch  <wk@gnupg.org>
841
842         * certlist.c (gpgsm_add_to_certlist): Check that the specified
843         name identifies a certificate unambiguously.
844         (gpgsm_find_cert): Ditto.
845
846         * server.c (cmd_listkeys): Check that the data stream is available.
847         (cmd_listsecretkeys): Ditto.
848         (has_option): New.
849         (cmd_sign): Fix ambiguousity in option recognition.
850
851         * gpgsm.c (main): Enable --logger-fd.
852
853         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
854         performance.
855
856         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
857         the agent.
858
859         * keylist.c (list_cert_colon): Filter out control characters.
860
861 2002-02-06  Werner Koch  <wk@gnupg.org>
862
863         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
864
865         * server.c (reset_notify): Close input and output FDs.
866         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
867         (cmd_genkey): Close the FDs and release the recipient list even in
868         the error case.
869
870 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
871
872         * sign.c (gpgsm_sign): Do not release certificate twice.
873
874 2002-01-29  Werner Koch  <wk@gnupg.org>
875
876         * call-agent.c (gpgsm_agent_havekey): New.
877         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
878         when we know that the secret key is available.
879         (gpgsm_list_keys): New arg MODE, check whether a secret key is
880         available.  Changed all callers.
881         * gpgsm.c (main): New command --list-secret-keys.
882         * server.c (cmd_listsecretkeys): New.
883         (cmd_listkeys): Return secret keys with "crs" record.
884
885 2002-01-28  Werner Koch  <wk@gnupg.org>
886
887         * certreqgen.c (create_request): Store the email address in the req.
888
889 2002-01-25  Werner Koch  <wk@gnupg.org>
890
891         * gpgsm.c (main): Disable core dumps.
892
893         * sign.c (add_certificate_list): New.
894         (gpgsm_sign): Add the certificates to the CMS object.
895         * certpath.c (gpgsm_walk_cert_chain): New.
896         * gpgsm.h (server_control_s): Add included_certs.
897         * gpgsm.c: Add option --include-certs.
898         (gpgsm_init_default_ctrl): New.
899         (main): Call it.
900         * server.c (gpgsm_server): Ditto.
901         (option_handler): Support --include-certs.
902
903 2002-01-23  Werner Koch  <wk@gnupg.org>
904
905         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
906         * certdump.c (gpgsm_dump_string): New.
907         (print_dn): Replaced by above.
908
909 2002-01-22  Werner Koch  <wk@gnupg.org>
910
911         * certpath.c (unknown_criticals): New.
912         (allowed_ca): New.
913         (gpgsm_validate_path): Check validity, CA attribute, path length
914         and unknown critical extensions.
915
916 2002-01-21  Werner Koch  <wk@gnupg.org>
917
918         * gpgsm.c: Add option --enable-crl-checks.
919
920         * call-agent.c (start_agent): Implemented socket based access.
921         * call-dirmngr.c (start_dirmngr): Ditto.
922
923 2002-01-20  Werner Koch  <wk@gnupg.org>
924
925         * server.c (option_handler): New.
926         (gpgsm_server): Register it with assuan.
927
928 2002-01-19  Werner Koch  <wk@gnupg.org>
929
930         * server.c (gpgsm_server): Use assuan_deinit_server and setup
931         assuan logging if enabled.
932         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
933         an Assuan log file.
934
935         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
936
937 2002-01-15  Werner Koch  <wk@gnupg.org>
938
939         * import.c (gpgsm_import): Just do a basic cert check before
940         storing it.
941         * certpath.c (gpgsm_basic_cert_check): New.
942
943         * keydb.c (keydb_store_cert): New.
944         * import.c (store_cert): Removed and change all caller to use
945         the new function.
946         * verify.c (store_cert): Ditto.
947
948         * certlist.c (gpgsm_add_to_certlist): Validate the path
949
950         * certpath.c (gpgsm_validate_path): Check the trust list.
951         * call-agent.c (gpgsm_agent_istrusted): New.
952
953 2002-01-14  Werner Koch  <wk@gnupg.org>
954
955         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
956         * certlist.c (gpgsm_find_cert): New.
957
958 2002-01-13  Werner Koch  <wk@gnupg.org>
959
960         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
961         hash after the dot.
962
963 2002-01-11  Werner Koch  <wk@gnupg.org>
964
965         * call-dirmngr.c: New.
966         * certpath.c (gpgsm_validate_path): Check the CRL here.
967         * fingerprint.c (gpgsm_get_certid): New.
968         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
969
970 2002-01-10  Werner Koch  <wk@gnupg.org>
971
972         * base64.c (gpgsm_create_writer): Allow to set the object name
973
974 2002-01-08  Werner Koch  <wk@gnupg.org>
975
976         * keydb.c (spacep): Removed because it is now in util.c
977
978         * server.c (cmd_genkey): New.
979         * certreqgen.c: New.  The parameter handling code has been taken
980         from gnupg/g10/keygen.c version 1.0.6.
981         * call-agent.c (gpgsm_agent_genkey): New.
982
983 2002-01-02  Werner Koch  <wk@gnupg.org>
984
985         * server.c (rc_to_assuan_status): Removed and changed all callers
986         to use map_to_assuan_status.
987
988 2001-12-20  Werner Koch  <wk@gnupg.org>
989
990         * verify.c (gpgsm_verify): Implemented non-detached signature
991         verification.  Add OUT_FP arg, initialize a writer and changed all
992         callers.
993         * server.c (cmd_verify): Pass an out_fp if one has been set.
994
995         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
996
997         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
998         global.
999         (print_time): Renamed to gpgsm_dump_time, made global.
1000         (gpgsm_dump_serial): Take a real S-Expression as argument and
1001         print the first item.
1002         * keylist.c (list_cert_colon): Ditto.
1003         * keydb.c (keydb_search_issuer_sn): Ditto.
1004         * decrypt.c (print_integer_sexp): Removed and made callers 
1005         use gpgsm_dump_serial.
1006         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
1007         
1008 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
1009
1010         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
1011
1012 2001-12-18  Werner Koch  <wk@gnupg.org>
1013
1014         * verify.c (print_integer_sexp): Renamed from print_integer and
1015         print the serial number according to the S-Exp rules.
1016         * decrypt.c (print_integer_sexp): Ditto.
1017
1018 2001-12-17  Werner Koch  <wk@gnupg.org>
1019
1020         * keylist.c (list_cert_colon): Changed for new return value of
1021         get_serial.
1022         * keydb.c (keydb_search_issuer_sn): Ditto.
1023         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
1024         returingin functions.
1025         * fingerprint.c (gpgsm_get_keygrip): Ditto.
1026         * encrypt.c (encrypt_dek): Ditto
1027         * certcheck.c (gpgsm_check_cms_signature): Ditto
1028         * decrypt.c (prepare_decryption): Ditto.
1029         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
1030         use KsbaSexp type and calculate the length.
1031
1032         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
1033
1034         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
1035
1036         * fingerprint.c (gpgsm_get_keygrip): Use the new
1037         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
1038         therefore the grip values changed.
1039
1040 2001-12-15  Werner Koch  <wk@gnupg.org>
1041
1042         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
1043         kludge.
1044         (gpgsm_create_cms_signature): Removed the commented fake key
1045         code.  This makes the function pretty simple.
1046
1047         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
1048
1049         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
1050         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
1051
1052 2001-12-14  Werner Koch  <wk@gnupg.org>
1053
1054         * keylist.c (list_cert_colon): Kludge to show an email address
1055         encoded in the subject's DN.
1056
1057         * verify.c (gpgsm_verify): Add hash debug helpers
1058         * sign.c (gpgsm_sign): Ditto.
1059
1060         * base64.c (base64_reader_cb): Reset the linelen when we need to
1061         skip the line and adjusted test; I somehow forgot about DeMorgan.
1062
1063         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
1064         (cmd_import): Close the FDs on success.
1065         (close_message_fd): New.
1066         (input_notify): Setting autodetect_encoding to 0 after initializing
1067         it to 0 is pretty pointless.  Easy to fix.
1068
1069         * gpgsm.c (main): New option --debug-wait n, so that it is
1070         possible to attach gdb when used in server mode.
1071
1072         * sign.c (get_default_signer): Use keydb_classify_name here.
1073
1074 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
1075
1076         * call-agent.c (LINELENGTH): Removed.
1077         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
1078         (gpgsm_agent_pkdecrypt): Likewise.
1079
1080 2001-12-13  Werner Koch  <wk@gnupg.org>
1081
1082         * keylist.c (list_cert_colon): Print alternative names of subject
1083         and a few other values.
1084
1085 2001-12-12  Werner Koch  <wk@gnupg.org>
1086
1087         * gpgsm.c (main): New options --assume-{armor,base64,binary}. 
1088         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
1089
1090 2001-12-04  Werner Koch  <wk@gnupg.org>
1091
1092         * call-agent.c (read_from_agent): Check for inquire responses.
1093         (request_reply): Handle them using a new callback arg, changed all
1094         callers.
1095         (gpgsm_agent_pkdecrypt): New.
1096
1097 2001-11-27  Werner Koch  <wk@gnupg.org>
1098
1099         * base64.c: New.  Changed all other functions to use this instead
1100         of direct creation of ksba_reader/writer.
1101         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
1102
1103 2001-11-26  Werner Koch  <wk@gnupg.org>
1104
1105         * gpgsm.c: New option --agent-program
1106         * call-agent.c (start_agent): Allow to override the default path
1107         to the agent.
1108
1109         * keydb.c (keydb_add_resource): Create keybox
1110
1111         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
1112
1113         * server.c (rc_to_assuan_status): New.  Use it for all commands.
1114
1115         
1116  Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
1117
1118  This file is free software; as a special exception the author gives
1119  unlimited permission to copy and/or distribute it, with or without
1120  modifications, as long as this notice is preserved.
1121
1122  This file is distributed in the hope that it will be useful, but
1123  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1124  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.