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