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