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