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