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