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