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