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