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