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