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