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