Pth tweaks and improved estream.c
[gnupg.git] / sm / ChangeLog
1 2006-10-17  Werner Koch  <wk@g10code.com>
2
3         * gpgsm.c: No need for pth.h.  
4         (main): or to init it. It used to be hack for W32.
5
6         * sign.c (gpgsm_get_default_cert): Changed to return only
7         certificates usable for signing.
8
9 2006-10-16  Werner Koch  <wk@g10code.com>
10
11         * certchain.c (already_asked_marktrusted) 
12         (set_already_asked_marktrusted): New.
13         (gpgsm_validate_chain) <not trusted>: Keep track of certificates
14         we already asked for.
15
16 2006-10-11  Werner Koch  <wk@g10code.com>
17
18         * certreqgen.c (proc_parameters, create_request): Allow for
19         creation directly from a card.
20         * call-agent.c (gpgsm_agent_readkey): New arg FROMCARD.
21         (gpgsm_scd_pksign): New.
22
23 2006-10-06  Werner Koch  <wk@g10code.com>
24
25         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
26         (gpgsm_LDADD): Ditto.
27
28 2006-10-05  Werner Koch  <wk@g10code.com>
29
30         * certcheck.c (do_encode_md): Check that the has algo is valid.
31
32 2006-10-02  Marcus Brinkmann  <marcus@g10code.de>
33
34         * server.c (register_commands): New commands DUMPKEYS and
35         DUMPSECRETKEYS.
36         (cmd_dumpkeys, cmd_dumpsecretkeys): New functions.
37         (option_handler): Support with-key-data option.
38
39 2006-09-26  Werner Koch  <wk@g10code.com>
40
41         * certchain.c (gpgsm_validate_chain): More changes for the relax
42         feature.  Use certificate reference counting instead of the old
43         explicit tests. Added a missing free. 
44
45 2006-09-25  Werner Koch  <wk@g10code.com>
46
47         * gpgsm.h (struct rootca_flags_s): New.
48         * call-agent.c (istrusted_status_cb): New.
49         (gpgsm_agent_istrusted): New arg ROOTCA_FLAGS.
50         * keylist.c (list_cert_colon): Use dummy for new arg.
51         * certchain.c (gpgsm_validate_chain): Make use of the relax flag
52         for root certificates.
53         (unknown_criticals): Ignore a GPG_ERR_NO_VALUE.
54
55 2006-09-20  Werner Koch  <wk@g10code.com>
56
57         * gpgsm.c: Add alias command --dump-cert.
58
59         * Makefile.am:  Changes to allow parallel make runs.
60
61 2006-09-18  Werner Koch  <wk@g10code.com>
62
63         * gpgsm.c (main): Use this to import standard certificates.
64         * keydb.c (keydb_add_resource): New arg AUTO_CREATED.
65
66 2006-09-14  Werner Koch  <wk@g10code.com>
67
68         Replaced all call gpg_error_from_errno(errno) by
69         gpg_error_from_syserror().
70
71 2006-09-13  Werner Koch  <wk@g10code.com>
72
73         * keylist.c (list_internal_keys): Print marker line to FP and not
74         to stdout.
75
76         * gpgsm.c (main): All list key list commands now make ose of
77         --output. Cleaned up calls to list modes.  New command
78         --dump-chain.  Renamed --list-sigs to --list-chain and added an
79         alias for the old one.
80
81         * server.c (cmd_message): Changed to use assuan_command_parse_fd.
82         (option_handler): New option list-to-output.
83         (do_listkeys): Use it.
84
85 2006-09-06  Werner Koch  <wk@g10code.com>
86
87         * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
88         out_of_core.
89         (CTRL): Removed and changed everywhere to ctrl_t.
90         (CERTLIST): Ditto.
91
92         Replaced all Assuan error codes by libgpg-error codes.  Removed
93         all map_to_assuan_status and map_assuan_err.
94         
95         * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
96         switch to gpg-error codes.  
97         * server.c (set_error): Adjusted.
98
99 2006-08-29  Werner Koch  <wk@g10code.com>
100
101         * call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
102         complete S-expressions as implemented by the current gpg-agent.
103
104         * gpgsm.c (main): Implement --output for encrypt, decrypt, sign
105         and export.
106
107 2006-07-03  Werner Koch  <wk@g10code.com>
108
109         * certreqgen.c (proc_parameters): Print the component label of a
110         faulty DN.
111
112 2006-06-26  Werner Koch  <wk@g10code.com>
113
114         * certdump.c (gpgsm_cert_log_name): New.
115         * certchain.c (is_cert_still_valid): Log the name of the certificate.
116
117 2006-06-20  Werner Koch  <wk@g10code.com>
118
119         * gpgsm.c (gpgsm_init_default_ctrl): Take care of the command line
120         option --include-certs.
121
122         * keylist.c (list_cert_raw): Print the certid.
123
124 2006-05-23  Werner Koch  <wk@g10code.com>
125
126         * keydb.c (hextobyte): Deleted as it is now defined in jnlib.
127
128         * Makefile.am (gpgsm_LDADD): Include ZLIBS.
129
130 2006-05-19  Marcus Brinkmann  <marcus@g10code.de>
131
132         * keydb.c (keydb_insert_cert): Do not lock here, but only check if
133         it is locked.
134         (keydb_store_cert): Lock here.
135
136         * keydb.h (keydb_delete): Accept new argument UNLOCK.
137         * keydb.c (keydb_delete): Likewise.  Only unlock if this is set.
138         * delete.c (delete_one): Add new argument to invocation of
139         keydb_delete.
140         
141 2006-05-15  Werner Koch  <wk@g10code.com>
142
143         * keylist.c (print_names_raw): Sanitize URI.
144
145 2006-03-21  Werner Koch  <wk@g10code.com>
146
147         * certchain.c (get_regtp_ca_info): New.
148         (allowed_ca): Use it.
149
150 2006-03-20  Werner Koch  <wk@g10code.com>
151
152         * qualified.c (gpgsm_is_in_qualified_list): New optional arg COUNTRY.
153
154 2006-02-17  Werner Koch  <wk@g10code.com>
155
156         * call-dirmngr.c (start_dirmngr): Print name of dirmngr to be started.
157
158 2005-11-23  Werner Koch  <wk@g10code.com>
159
160         * gpgsm.h: New member QUALSIG_APPROVAL.
161         * sign.c (gpgsm_sign): Print a warning if a certificate is not
162         qualified.
163         * qualified.c (gpgsm_qualified_consent): Include a note that this
164         is not approved software.
165         (gpgsm_not_qualified_warning): New.
166         * gpgsm.c (main): Prepared to print a note whether the software
167         has been approved.
168
169 2005-11-13  Werner Koch  <wk@g10code.com>
170
171         * call-agent.c (gpgsm_agent_get_confirmation): New.
172
173         * keylist.c (list_cert_std): Print qualified status.
174         * qualified.c: New.
175         * certchain.c (gpgsm_validate_chain): Check for qualified
176         certificates.
177
178         * certchain.c (gpgsm_basic_cert_check): Release keydb handle when
179         no-chain-validation is used.
180
181 2005-11-11  Werner Koch  <wk@g10code.com>
182
183         * keylist.c (print_capabilities): Print is_qualified status.
184
185 2005-10-28  Werner Koch  <wk@g10code.com>
186
187         * certdump.c (pretty_print_sexp): New.
188         (gpgsm_print_name2): Use it here.  This allows proper printing of
189         DNS names as used with server certificates.
190
191 2005-10-10  Werner Koch  <wk@g10code.com>
192
193         * keylist.c: Add pkaAdress OID as reference.
194
195 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
196
197         * Makefile.am (gpgsm_LDADD): Add ../gl/libgnu.a after
198         ../common/libcommon.a.
199
200 2005-09-13  Werner Koch  <wk@g10code.com>
201
202         * verify.c (gpgsm_verify): Print a note if the unknown algorithm
203         is MD2.
204         * sign.c (gpgsm_sign): Ditto.
205         * certcheck.c (gpgsm_check_cert_sig): Ditto.
206
207 2005-09-08  Werner Koch  <wk@g10code.com>
208
209         * export.c (popen_protect_tool): Add option --have-cert.  We
210         probably lost this option with 1.9.14 due to restructuring of
211         export.c.
212
213 2005-07-21  Werner Koch  <wk@g10code.com>
214
215         * gpgsm.c (main): New options --no-log-file and --debug-none.
216
217         * certreqgen.c (get_parameter, get_parameter_value): Add SEQ arg
218         to allow enumeration.  Changed all callers.
219         (create_request): Process DNS and URI parameters.
220
221 2005-07-20  Werner Koch  <wk@g10code.com>
222
223         * keylist.c (email_kludge): Reworked.
224
225         * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
226         arg to unsigned.
227         * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
228
229 2005-07-19  Werner Koch  <wk@g10code.com>
230
231         * fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
232         Bug accidently introduced while solving the #$%^& gcc
233         signed/unsigned char* warnings.
234
235 2005-06-15  Werner Koch  <wk@g10code.com>
236
237         * delete.c (delete_one): Changed FPR to unsigned.
238         * encrypt.c (encrypt_dek): Made ENCVAL unsigned.
239         (gpgsm_encrypt): Ditto.
240         * sign.c (gpgsm_sign): Made SIGVAL unsigned.
241         * base64.c (base64_reader_cb): Need to use some casting to get
242         around signed/unsigned char* warnings.
243         * certcheck.c (gpgsm_check_cms_signature): Ditto.
244         (gpgsm_create_cms_signature): Changed arg R_SIGVAL to unsigned char*.
245         (do_encode_md): Made NFRAME a size_t.
246         * certdump.c (gpgsm_print_serial): Fixed signed/unsigned warning.
247         (gpgsm_dump_serial): Ditto.
248         (gpgsm_format_serial): Ditto.
249         (gpgsm_dump_string): Ditto.
250         (gpgsm_dump_cert): Ditto.
251         (parse_dn_part): Ditto.
252         (gpgsm_print_name2): Ditto.
253         * keylist.c (email_kludge): Ditto.
254         * certreqgen.c (proc_parameters, create_request): Ditto.
255         (create_request): Ditto.
256         * call-agent.c (gpgsm_agent_pksign): Made arg R_BUF unsigned.
257         (struct cipher_parm_s): Made CIPHERTEXT unsigned.
258         (struct genkey_parm_s): Ditto.
259         * server.c (strcpy_escaped_plus): Made arg S signed char*.
260         * fingerprint.c (gpgsm_get_fingerprint): Made ARRAY unsigned.
261         (gpgsm_get_keygrip): Ditto.
262         * keydb.c (keydb_insert_cert): Made DIGEST unsigned.
263         (keydb_update_cert): Ditto.
264         (classify_user_id): Apply cast to signed/unsigned assignment.
265         (hextobyte): Ditto.
266
267 2005-06-01  Werner Koch  <wk@g10code.com>
268
269         * misc.c: Include setenv.h.
270
271 2005-04-21  Werner Koch  <wk@g10code.com>
272
273         * gpgsm.c: New options --{enable,disable}-trusted-cert-crl-check.
274         * certchain.c (gpgsm_validate_chain): Make use of it.
275
276         * certchain.c (gpgsm_validate_chain): Check revocations even for
277         expired certificates.  This is required because on signature
278         verification an expired key is fine whereas a revoked one is not.
279
280 2005-04-20  Werner Koch  <wk@g10code.com>
281
282         * Makefile.am (AM_CFLAGS): Add PTH_CFLAGS as noted by several folks.
283
284 2005-04-19  Werner Koch  <wk@g10code.com>
285
286         * certchain.c (check_cert_policy): Print the diagnostic for a open
287         failure of policies.txt only in verbose mode or when it is not
288         ENOENT.
289
290 2005-04-17  Werner Koch  <wk@g10code.com>
291
292         * call-dirmngr.c (inq_certificate): Add new inquire SENDCERT_SKI.
293         * certlist.c (gpgsm_find_cert): Add new arg KEYID and implement
294         this filter.  Changed all callers.
295
296         * certchain.c (find_up_search_by_keyid): New helper.
297         (find_up): Also try using the AKI.keyIdentifier.
298         (find_up_external): Ditto.
299
300 2005-04-15  Werner Koch  <wk@g10code.com>
301
302         * keylist.c (list_cert_raw): Print the subjectKeyIdentifier as
303         well as the keyIdentifier part of the authorityKeyIdentifier.
304
305 2005-03-31  Werner Koch  <wk@g10code.com>
306
307         * call-dirmngr.c (start_dirmngr): Use PATHSEP_C instead of ':'.
308         * call-agent.c (start_agent): Ditto.
309
310 2005-03-17  Werner Koch  <wk@g10code.com>
311
312         * certcheck.c: Fixed use of DBG_CRYPTO and DBG_X509.
313
314         * certchain.c (gpgsm_basic_cert_check): Dump certificates after a
315         failed gcry_pk_verify.
316         (find_up): Do an external lookup also for an authorityKeyIdentifier
317         lookup. Factored external lookup code out to ..
318         (find_up_external): .. new.
319
320 2005-03-03  Werner Koch  <wk@g10code.com>
321
322         * Makefile.am (gpgsm_LDADD): Added PTH_LIBS.  Noted by Kazu Yamamoto.
323
324 2005-01-13  Werner Koch  <wk@g10code.com>
325
326         * certreqgen.c (proc_parameters): Cast printf arg.
327
328 2004-12-22  Werner Koch  <wk@g10code.com>
329
330         * gpgsm.c (set_binary): New.
331         (main, open_read, open_fwrite): Use it.
332
333 2004-12-21  Werner Koch  <wk@g10code.com>
334
335         * gpgsm.c (main): Use default_homedir().
336         (main) [W32]: Default to disabled CRL checks.
337
338 2004-12-20  Werner Koch  <wk@g10code.com>
339
340         * call-agent.c (start_agent): Before starting a pipe server start
341         to connect to a server on the standard socket.  Use PATHSEP
342         * call-dirmngr.c (start_dirmngr): Use PATHSEP.
343
344         * import.c: Include unistd.h for dup and close.
345
346 2004-12-18  Werner Koch  <wk@g10code.com>
347
348         * gpgsm.h (map_assuan_err): Define in terms of
349         map_assuan_err_with_source.
350         * call-agent.c (start_agent): Pass error source to
351         send_pinentry_environment.
352
353 2004-12-17  Werner Koch  <wk@g10code.com>
354
355         * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
356         (run_command_status_cb): Return cancel status if gpgsm_status
357         returned an error.
358
359         * server.c (gpgsm_status, gpgsm_status2) 
360         (gpgsm_status_with_err_code): Return an error code.
361         (gpgsm_status2): Always call va_end().
362
363 2004-12-15  Werner Koch  <wk@g10code.com>
364
365         * call-dirmngr.c (lookup_status_cb): Send progress messages
366         upstream.
367         (isvalid_status_cb): Ditto.
368         (gpgsm_dirmngr_isvalid): Put CTRL into status CB parameters.
369         (gpgsm_dirmngr_run_command, run_command_status_cb): Pass CTRL to
370         status callback and handle PROGRESS.
371
372         * misc.c (setup_pinentry_env) [W32]: Don't use it.
373
374         * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
375         operations and to resolve libassuan symbols.
376         (run_protect_tool) [W32]: Disable it.
377
378         * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
379
380 2004-12-07  Werner Koch  <wk@g10code.com>
381
382         * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
383         under W32 we need the w32 pth code from jnlib.
384
385         * misc.c (setup_pinentry_env) [W32]: Disabled.
386
387 2004-12-06  Werner Koch  <wk@g10code.com>
388
389         * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
390
391         * import.c (popen_protect_tool): Simplified by making use of
392         gnupg_spawn_process.
393         (parse_p12): Likewise, using gnupg_wait_process.
394         * export.c (popen_protect_tool): Ditto.
395         (export_p12): Ditto.
396
397         * keydb.c: Don't define DIRSEP_S here.
398
399 2004-12-02  Werner Koch  <wk@g10code.com>
400
401         * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
402         signature for debugging.
403         (gpgsm_validate_chain): Ditto.
404
405 2004-11-29  Werner Koch  <wk@g10code.com>
406
407         * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
408         DEBUG_VALUE.
409         (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE.  This
410         now allows to add debug flags on top of a debug-level setting.
411
412 2004-11-23  Werner Koch  <wk@g10code.com>
413
414         * gpgsm.c: New option --prefer-system-dirmngr.
415         * call-dirmngr.c (start_dirmngr): Implement this option.
416
417 2004-10-22  Werner Koch  <wk@g10code.com>
418
419         * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
420         request PEM header.  This is according to the Sphinx standard.
421
422 2004-10-08  Moritz Schulte  <moritz@g10code.com>
423
424         * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
425         case the no_chain_validation-return-short-cut is used (fixes
426         memory leak).
427
428 2004-10-04  Werner Koch  <wk@g10code.com>
429
430         * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
431
432 2004-09-30  Werner Koch  <wk@g10code.com>
433
434         * gpgsm.c (i18n_init): Always use LC_ALL.
435
436         * certdump.c (gpgsm_format_name): Factored code out to ..
437         (gpgsm_format_name2): .. new.
438         (gpgsm_print_name): Factored code out to ..
439         (gpgsm_print_name2): .. new.
440         (print_dn_part): New arg TRANSLATE.  Changed all callers.
441         (print_dn_parts): Ditto.
442         (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
443         it to stay UTF-8 but we still want to filter out bad control
444         characters.
445
446         * Makefile.am: Adjusted for gettext 0.14.
447
448         * keylist.c (list_cert_colon): Make sure that the expired flag has
449         a higher precedence than the invalid flag. 
450
451 2004-09-29  Werner Koch  <wk@g10code.com>
452
453         * import.c (parse_p12): Write an error status line for bad
454         passphrases. Add new arg CTRL and changed caller.
455         * export.c (export_p12): Likewise.
456
457 2004-09-14  Werner Koch  <wk@g10code.com>
458
459         * certchain.c (gpgsm_validate_chain): Give expired certificates a
460         higher error precedence and don't bother to check any CRL in that
461         case.
462
463 2004-08-24  Werner Koch  <wk@g10code.de>
464
465         * certlist.c: Fixed typo in ocsp OID.
466
467 2004-08-18  Werner Koch  <wk@g10code.de>
468
469         * certlist.c (gpgsm_cert_use_ocsp_p): New.
470         (cert_usage_p): Support it here.
471         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
472
473 2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
474
475         * import.c: Fix typo in last change.
476
477 2004-08-17  Werner Koch  <wk@g10code.de>
478
479         * import.c (check_and_store): Do a full validation if
480         --with-validation is set.
481
482         * certchain.c (gpgsm_basic_cert_check): Print more detailed error
483         messages.
484         
485         * certcheck.c (do_encode_md): Partly support DSA.  Add new arg
486         PKALGO. Changed all callers to pass it.
487         (pk_algo_from_sexp): New.
488
489 2004-08-16  Werner Koch  <wk@g10code.de>
490
491         * gpgsm.c: New option --fixed-passphrase.
492         * import.c (popen_protect_tool): Pass it to the protect-tool.
493
494         * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
495         for encrypt-to keys.
496
497 2004-08-06  Werner Koch  <wk@g10code.com>
498
499         * gpgsm.c: New option --with-ephemeral-keys.
500         * keylist.c (list_internal_keys): Set it here.
501         (list_cert_raw): And indicate those keys.  Changed all our callers
502         to pass the new arg HD through.
503
504 2004-07-23  Werner Koch  <wk@g10code.de>
505
506         * certreqgen.c (proc_parameters): Do not allow key length below
507         1024.
508
509 2004-07-22  Werner Koch  <wk@g10code.de>
510
511         * keylist.c (list_cert_raw): Print the keygrip.
512
513 2004-07-20  Werner Koch  <wk@gnupg.org>
514
515         * certchain.c (gpgsm_validate_chain): The trust check didn't
516         worked anymore, probably due to the changes at 2003-03-04.  Fixed.
517
518 2004-06-06  Werner Koch  <wk@gnupg.org>
519
520         * certreqgen.c (get_parameter_uint, create_request): Create
521         an extension for key usage when requested. 
522
523 2004-05-12  Werner Koch  <wk@gnupg.org>
524
525         * gpgsm.c (main): Install emergency_cleanup also as an atexit
526         handler.
527
528         * verify.c (gpgsm_verify): Removed the separate error code
529         handling for KSBA.  We use shared error codes anyway.
530
531         * export.c (export_p12): Removed debugging code.
532
533         * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
534
535 2004-05-11  Werner Koch  <wk@gnupg.org>
536
537         * sign.c (gpgsm_sign): Include the error source in the final error
538         message.
539         * decrypt.c (gpgsm_decrypt): Ditto.
540
541         * fingerprint.c (gpgsm_get_key_algo_info): New.
542         * sign.c (gpgsm_sign): Don't assume RSA in the status line.
543         * keylist.c (list_cert_colon): Really print the algorithm and key
544         length.
545         (list_cert_raw, list_cert_std): Ditto.
546         (list_cert_colon): Reorganized to be able to tell whether a root
547         certificate is trusted.
548
549         * gpgsm.c: New option --debug-allow-core-dump.
550
551         * gpgsm.h (opt): Add member CONFIG_FILENAME.
552         * gpgsm.c (main): Use it here instead of the local var.
553
554         * server.c (gpgsm_server): Print some additional information with
555         the hello in verbose mode.
556
557 2004-04-30  Werner Koch  <wk@gnupg.org>
558
559         * import.c (check_and_store): Do not update the stats for hidden
560         imports of issuer certs.
561         (popen_protect_tool): Request statusmessages from the protect-tool.
562         (parse_p12): Detect status messages. Add new arg STATS and update them.
563         (print_imported_summary): Include secret key stats.
564
565 2004-04-28  Werner Koch  <wk@gnupg.org>
566
567         * gpgsm.c: New command --keydb-clear-some-cert-flags.
568         * keydb.c (keydb_clear_some_cert_flags): New.
569         (keydb_update_keyblock, keydb_set_flags): Change error code
570         CONFLICT to NOT_LOCKED.
571
572 2004-04-26  Werner Koch  <wk@gnupg.org>
573
574         * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
575         filename.
576
577         * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt) 
578         (gpgsm_agent_genkey, gpgsm_agent_istrusted) 
579         (gpgsm_agent_marktrusted, gpgsm_agent_havekey) 
580         (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
581         (start_agent): New arg CTRL.  Send progress item when starting a
582         new agent.
583         * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
584         CTRL to be passed down to the agent function.
585         * decrypt.c (prepare_decryption): Ditto.
586         * certreqgen.c (proc_parameters, read_parameters): Ditto.
587         * certcheck.c (gpgsm_create_cms_signature): Ditto.
588
589 2004-04-23  Werner Koch  <wk@gnupg.org>
590
591         * keydb.c (keydb_add_resource): Try to compress the file on init.
592
593         * keylist.c (oidtranstbl): New.  OIDs collected from several sources.
594         (print_name_raw, print_names_raw, list_cert_raw): New.
595         (gpgsm_list_keys): Check the dump mode and pass it down as
596         necessary.
597
598 2004-04-22  Werner Koch  <wk@gnupg.org>
599
600         * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
601         --dump-secret-keys.
602
603 2004-04-13  Werner Koch  <wk@gnupg.org>
604
605         * misc.c (setup_pinentry_env): New.
606         * import.c (popen_protect_tool): Call it.
607         * export.c (popen_protect_tool): Call it.
608
609 2004-04-08  Werner Koch  <wk@gnupg.org>
610
611         * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a 
612         encrypted message.
613
614 2004-04-07  Werner Koch  <wk@gnupg.org>
615
616         * gpgsm.c: New option --force-crl-refresh.
617         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
618
619 2004-04-05  Werner Koch  <wk@gnupg.org>
620
621         * server.c (get_status_string): Add STATUS_NEWSIG.
622         * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
623
624         * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
625         not just warn if a cert is not suitable; bail out immediately.
626
627 2004-04-01  Werner Koch  <wk@gnupg.org>
628
629         * call-dirmngr.c (isvalid_status_cb): New.
630         (unhexify_fpr): New. Taken from ../g10/call-agent.c
631         (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
632         it thru.  Detect need to check the respondert cert and do that.
633         * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
634         all callers.
635
636 2004-03-24  Werner Koch  <wk@gnupg.org>
637
638         * sign.c (gpgsm_sign): Include a short list of capabilities.
639
640 2004-03-17  Werner Koch  <wk@gnupg.org>
641
642         * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
643
644 2004-03-16  Werner Koch  <wk@gnupg.org>
645
646         * gpgsm.c (main): Implemented --gpgconf-list.
647
648 2004-03-15  Werner Koch  <wk@gnupg.org>
649
650         * keylist.c (list_cert_colon): Hack to set the expired flag.
651
652 2004-03-09  Werner Koch  <wk@gnupg.org>
653
654         * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
655
656         * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
657
658 2004-03-04  Werner Koch  <wk@gnupg.org>
659
660         * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
661
662         * certchain.c (is_cert_still_valid): New.  Code moved from ...
663         (gpgsm_validate_chain): ... here because we now need to check at
664         two places and at a later stage, so that we can pass the issuer
665         cert down to the dirmngr.
666
667 2004-03-03  Werner Koch  <wk@gnupg.org>
668
669         * call-agent.c (start_agent): Replaced pinentry setup code by a
670         call to a new common function.
671
672         * certdump.c (gpgsm_format_keydesc): Make sure the string is
673         returned as utf-8.
674
675         * export.c (gpgsm_export): Make sure that we don't export more
676         than one certificate.
677
678 2004-03-02  Werner Koch  <wk@gnupg.org>
679
680         * export.c (create_duptable, destroy_duptable)
681         (insert_duptable): New.
682         (gpgsm_export): Avoid duplicates.
683
684 2004-02-26  Werner Koch  <wk@gnupg.org>
685
686         * certchain.c (compare_certs): New.
687         (gpgsm_validate_chain): Fixed infinite certificate checks after
688         bad signatures.
689
690 2004-02-24  Werner Koch  <wk@gnupg.org>
691
692         * keylist.c (list_cert_colon): Print the fingerprint as the
693         cert-id for root certificates.
694
695 2004-02-21  Werner Koch  <wk@gnupg.org>
696
697         * keylist.c (list_internal_keys): Return error codes.
698         (list_external_keys, gpgsm_list_keys): Ditto.
699         * server.c (do_listkeys): Ditto.
700
701         * gpgsm.c (main): Display a key description for --passwd.
702         * call-agent.c (gpgsm_agent_passwd): New arg DESC.
703
704 2004-02-20  Werner Koch  <wk@gnupg.org>
705
706         * gpgsm.c (main): New option --debug-ignore-expiration.
707         * certchain.c (gpgsm_validate_chain): Use it here.
708
709         * certlist.c (cert_usage_p): Apply extKeyUsage.
710
711 2004-02-19  Werner Koch  <wk@gnupg.org>
712
713         * export.c (export_p12, popen_protect_tool)
714         (gpgsm_p12_export): New.
715         * gpgsm.c (main): New command --export-secret-key-p12. 
716
717 2004-02-18  Werner Koch  <wk@gnupg.org>
718
719         * gpgsm.c (set_debug): Set the new --debug-level flags.
720         (main): New option --gpgconf-list.  
721         (main): Do not setup -u and -r keys when not required.
722         (main): Setup the used character set.
723
724         * keydb.c (keydb_add_resource): Print a hint to start the
725         gpg-agent.
726
727 2004-02-17  Werner Koch  <wk@gnupg.org>
728
729         * gpgsm.c: Fixed value parsing for --with-validation.
730         * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
731         * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
732
733         * gpgsm.c: New option --with-md5-fingerprint.
734         * keylist.c (list_cert_std): Print MD5 fpr.
735
736         * gpgsm.c: New options --with-validation.
737         * server.c (option_handler): New option "with-validation".
738         * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
739         WITH_VALIDATION. Changed callers to set it.
740         (list_external_cb, list_external_keys): Pass CTRL to the callback.
741         (list_cert_colon): Add arg CTRL.  Check validation if requested.
742         * certchain.c (unknown_criticals, allowed_ca, check_cert_policy) 
743         (gpgsm_validate_chain): New args LISTMODE and FP.
744         (do_list): New helper for info output.
745         (find_up): New arg FIND_NEXT.
746         (gpgsm_validate_chain): After a bad signature try again with other
747         CA certificates.
748
749         * import.c (print_imported_status): New arg NEW_CERT. Print
750         additional STATUS_IMPORT_OK becuase that is what gpgme expects.
751         (check_and_store): Always call above function after import.
752         * server.c (get_status_string): Added STATUS_IMPORT_OK.
753
754 2004-02-13  Werner Koch  <wk@gnupg.org>
755
756         * certcheck.c (gpgsm_create_cms_signature): Format a description
757         for use by the pinentry.
758         * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
759         * certdump.c (format_name_cookie, format_name_writer) 
760         (gpgsm_format_name): New.
761         (gpgsm_format_serial): New.
762         (gpgsm_format_keydesc): New.
763         * call-agent.c (gpgsm_agent_pksign): New arg DESC.
764         (gpgsm_agent_pkdecrypt): Ditto.
765
766         * encrypt.c (init_dek): Check for too weak algorithms.
767
768         * import.c (parse_p12, popen_protect_tool): New.
769
770         * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
771         Changed all callers.
772         (base64_reader_cb): Handle it here.
773         (gpgsm_reader_eof_seen): New.
774         (base64_reader_cb): Set a flag for EOF.
775         (simple_reader_cb): Ditto.
776
777 2004-02-12  Werner Koch  <wk@gnupg.org>
778
779         * gpgsm.h, gpgsm.c: New option --protect-tool-program.
780         * gpgsm.c (run_protect_tool): Use it.
781
782 2004-02-11  Werner Koch  <wk@gnupg.org>
783
784         * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
785         will allow to override directory names at make time.
786
787 2004-02-02  Werner Koch  <wk@gnupg.org>
788
789         * import.c (check_and_store): Import certificates even with
790         missing issuer's cert.  Fixed an "depending on the verbose
791         setting" bug.
792
793         * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
794         keybox.
795
796         * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
797         revoked flag.
798         (list_internal_keys): Retrieve validity flag.
799         (list_external_cb): Pass 0 as validity flag.
800         * keydb.c (keydb_get_flags, keydb_set_flags): New.
801         (keydb_set_cert_flags): New.
802         (lock_all): Return a proper error code.
803         (keydb_lock): New.
804         (keydb_delete): Don't lock but check that it has been locked.
805         (keydb_update_keyblock): Ditto.
806         * delete.c (delete_one): Take a lock.
807
808 2004-01-30  Werner Koch  <wk@gnupg.org>
809
810         * certchain.c (check_cert_policy): Fixed read error checking.
811         (check_cert_policy): With no critical policies issue only a
812         warning if the policy file does not exists.
813
814         * sign.c (add_certificate_list): Decrement N for the first cert.
815
816 2004-01-29  Werner Koch  <wk@gnupg.org>
817
818         * certdump.c (parse_dn_part): Map common OIDs to human readable
819         labels.  Make sure that a value won't get truncated if it includes
820         a Nul.
821
822 2004-01-28  Werner Koch  <wk@gnupg.org>
823
824         * certchain.c (gpgsm_validate_chain): Changed the message printed
825         for an untrusted root certificate.
826
827 2004-01-27  Werner Koch  <wk@gnupg.org>
828
829         * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
830         (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
831         multi-valued RDNs in a special way, i.e. in the order specified by
832         the certificate.
833         (print_dn_parts): Simplified. 
834
835 2004-01-16  Werner Koch  <wk@gnupg.org>
836
837         * sign.c (gpgsm_sign): Print an error message on all failures.
838         * decrypt.c (gpgsm_decrypt): Ditto.
839
840 2003-12-17  Werner Koch  <wk@gnupg.org>
841
842         * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
843         (cmd_encrypt): Add all enrypt-to marked certs to the list.
844         * encrypt.c (gpgsm_encrypt): Check that real recipients are
845         available.
846         * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
847         options work.  Pass the list of recients to gpgsm_server.
848         * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
849         (opt): Add NO_ENCRYPT_TO.
850         * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
851         Changed all callers and ignore duplicate entries.
852         (is_cert_in_certlist): New.
853         (gpgsm_add_cert_to_certlist): New.
854
855         * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
856         (gpgsm_dump_serial): Ditto.
857
858         * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
859
860 2003-12-16  Werner Koch  <wk@gnupg.org>
861
862         * gpgsm.c (main): Set the prefixes for assuan logging.
863
864         * sign.c (gpgsm_sign): Add validation checks for the default
865         certificate.
866
867         * gpgsm.c: Add -k as alias for --list-keys and -K for
868         --list-secret-keys.
869
870 2003-12-15  Werner Koch  <wk@gnupg.org>
871
872         * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
873         not need for real strong random here and it even better protect
874         the random bits used for the key.
875
876 2003-12-01  Werner Koch  <wk@gnupg.org>
877
878         * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
879         (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
880         * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
881         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
882         proceed accordingly.
883
884 2003-11-19  Werner Koch  <wk@gnupg.org>
885
886         * verify.c (gpgsm_verify): Use "0" instead of an empty string for
887         the VALIDSIG status.
888
889 2003-11-18  Werner Koch  <wk@gnupg.org>
890
891         * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
892
893         * certchain.c (unknown_criticals): Fixed an error code test.
894
895 2003-11-12  Werner Koch  <wk@gnupg.org>
896
897         Adjusted for API changes in Libksba.
898
899 2003-10-31  Werner Koch  <wk@gnupg.org>
900
901         * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
902         * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
903         * sign.c (gpgsm_sign): Ditto.
904         * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
905         * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
906         Ditto.
907
908 2003-10-25  Werner Koch  <wk@gnupg.org>
909
910         * certreqgen.c (read_parameters): Fixed faulty of !spacep().
911
912 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
913
914         * encrypt.c (encode_session_key): Allocate enough space.  Cast key
915         byte to unsigned char to prevent sign extension.
916         (encrypt_dek): Check return value before error.
917
918 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
919
920         * encrypt.c (encode_session_key): Use new Libgcrypt interface.
921         
922 2003-07-31  Werner Koch  <wk@gnupg.org>
923
924         * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
925
926 2003-07-29  Werner Koch  <wk@gnupg.org>
927
928         * gpgsm.c (main): Add secmem features and set the random seed file.
929         (gpgsm_exit): Update the random seed file and enable debug output.
930
931 2003-07-27  Werner Koch  <wk@gnupg.org>
932
933         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
934
935 2003-06-24  Werner Koch  <wk@gnupg.org>
936
937         * server.c (gpgsm_status_with_err_code): New.
938         * verify.c (gpgsm_verify): Use it here instead of the old
939         tokenizing version.
940
941         * verify.c (strtimestamp): Renamed to strtimestamp_r
942
943         Adjusted for changes in the libgcrypt API. Some more fixes for the
944         libgpg-error stuff.  
945
946 2003-06-04  Werner Koch  <wk@gnupg.org>
947
948         * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
949         Include new membuf header and changed used type.
950
951         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
952
953 2003-06-03  Werner Koch  <wk@gnupg.org>
954
955         Changed all error codes in all files to the new libgpg-error scheme.
956
957         * gpgsm.h: Include gpg-error.h .
958         * Makefile.am: Link with libgpg-error.
959
960 2003-04-29  Werner Koch  <wk@gnupg.org>
961
962         * Makefile.am: Use libassuan.  Don't override LDFLAGS anymore.
963         * server.c (register_commands): Adjust for new Assuan semantics.
964
965 2002-12-03  Werner Koch  <wk@gnupg.org>
966
967         * call-agent.c (gpgsm_agent_passwd): New.
968         * gpgsm.c (main): New command --passwd and --call-protect-tool
969         (run_protect_tool): New.
970
971 2002-11-25  Werner Koch  <wk@gnupg.org>
972
973         * verify.c (gpgsm_verify): Handle content-type attribute. 
974
975 2002-11-13  Werner Koch  <wk@gnupg.org>
976
977         * call-agent.c (start_agent): Try to use $GPG_TTY instead of
978         ttyname.  Changed ttyname to test stdin becuase it can be assumed
979         that output redirection is more common that input redirection.
980
981 2002-11-12  Werner Koch  <wk@gnupg.org>
982
983         * gpgsm.c: New command --call-dirmngr. 
984         * call-dirmngr.c (gpgsm_dirmngr_run_command)
985         (run_command_inq_cb,run_command_cb)
986         (run_command_status_cb): New.
987
988 2002-11-11  Werner Koch  <wk@gnupg.org>
989
990         * certcheck.c (gpgsm_check_cms_signature): Don't double free
991         s_sig but free s_pkey at leave.
992
993 2002-11-10  Werner Koch  <wk@gnupg.org>
994
995         * gpgsm.c: Removed duplicate --list-secret-key entry.
996
997 2002-09-19  Werner Koch  <wk@gnupg.org>
998
999         * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
1000
1001         * certchain.c (find_up): Print info when the cert was not found 
1002         by the autorithyKeyIdentifier.
1003
1004 2002-09-03  Werner Koch  <wk@gnupg.org>
1005
1006         * gpgsm.c (main): Disable the internal libgcrypt locking.
1007
1008 2002-08-21  Werner Koch  <wk@gnupg.org>
1009
1010         * import.c (print_imported_summary): Cleaned up.  Print new
1011         not_imported value.
1012         (check_and_store): Update non_imported counter.
1013         (print_import_problem): New.
1014         (check_and_store): Print error status message.
1015         * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
1016
1017 2002-08-20  Werner Koch  <wk@gnupg.org>
1018
1019         * gpgsm.c (main): Use the log file only in server mode.
1020
1021         * import.c (print_imported_summary): New.
1022         (check_and_store): Update the counters, take new argument.
1023         (import_one): Factored out core of gpgsm_import.
1024         (gpgsm_import): Print counters.
1025         (gpgsm_import_files): New.
1026         * gpgsm.c (main): Use the new function for import.
1027
1028 2002-08-19  Werner Koch  <wk@gnupg.org>
1029
1030         * decrypt.c (gpgsm_decrypt): Return a better error status token.
1031         * verify.c (gpgsm_verify): Don't error on messages with no signing
1032         time or no message digest.  This is only the case for messages
1033         without any signed attributes.
1034
1035 2002-08-16  Werner Koch  <wk@gnupg.org>
1036
1037         * certpath.c: Renamed to ..
1038         * certchain.c: this. Renamed all all other usages of "path" in the
1039         context of certificates to "chain".
1040
1041         * call-agent.c (learn_cb): Special treatment when the issuer
1042         certificate is missing.
1043
1044 2002-08-10  Werner Koch  <wk@gnupg.org>
1045
1046         * Makefile.am (INCLUDES): Add definition for localedir.
1047
1048         * keylist.c (list_cert_colon): Print the short fingerprint in the
1049         key ID field.
1050         * fingerprint.c (gpgsm_get_short_fingerprint): New.
1051         * verify.c (gpgsm_verify): Print more verbose info for a good
1052         signature.
1053
1054 2002-08-09  Werner Koch  <wk@gnupg.org>
1055
1056         * decrypt.c (prepare_decryption): Hack to detected already
1057         unpkcsedone keys.
1058
1059         * gpgsm.c (emergency_cleanup): New.
1060         (main): Initialize the signal handler.
1061
1062         * sign.c (gpgsm_sign): Reset the hash context for subsequent
1063         signers and release it at the end.
1064
1065 2002-08-05  Werner Koch  <wk@gnupg.org>
1066
1067         * server.c (cmd_signer): New command "SIGNER"
1068         (register_commands): Register it.
1069         (cmd_sign): Pass the signer list to gpgsm_sign.
1070         * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
1071         for secret key if set and changed all callers.
1072         * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
1073         multiple signers.
1074         * gpgsm.c (main): Support more than one -u.
1075         
1076         * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
1077         which is actually what gets returned from add_to_certlist.
1078         
1079 2002-07-26  Werner Koch  <wk@gnupg.org>
1080
1081         * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
1082         (gpgsm_check_cms_signature): Ditto.
1083
1084 2002-07-22  Werner Koch  <wk@gnupg.org>
1085
1086         * keydb.c (keydb_add_resource): Register a lock file.
1087         (lock_all, unlock_all): Implemented.
1088
1089         * delete.c: New.
1090         * gpgsm.c: Made --delete-key work.
1091         * server.c (cmd_delkeys): New.
1092         (register_commands): New command DELKEYS.
1093
1094         * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
1095         used and a STATUS_ERROR with the algorithm oid.
1096
1097 2002-07-03  Werner Koch  <wk@gnupg.org>
1098
1099         * server.c (gpgsm_status2): Insert a blank between all optional
1100         arguments when using assuan.
1101         * server.c (cmd_recipient): No more need for extra blank in constants.
1102         * import.c (print_imported_status): Ditto.
1103         * gpgsm.c (main): Ditto.
1104
1105 2002-07-02  Werner Koch  <wk@gnupg.org>
1106
1107         * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
1108         the fingerprint.
1109
1110         * certpath.c (check_cert_policy): Don't use log_error to print a
1111         warning.
1112
1113         * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
1114         all callers.
1115         * call-agent.c (learn_cb): Print info message only for real imports.
1116
1117         * import.c (gpgsm_import): Moved duplicated code to ...
1118         (check_and_store): new function.  Added magic to import the entire
1119         chain. Print status only for real imports and moved printing code
1120         to ..
1121         (print_imported_status): New.
1122
1123         * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
1124         call in very verbose mode.
1125
1126         * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
1127         with the server mode.
1128
1129 2002-06-29  Werner Koch  <wk@gnupg.org>
1130
1131         * gpgsm.c: New option --auto-issuer-key-retrieve.
1132         * certpath.c (find_up): Try to retrieve an issuer key from an
1133         external source and from the ephemeral key DB.
1134         (find_up_store_certs_cb): New.
1135
1136         * keydb.c (keydb_set_ephemeral): Does now return the old
1137         state.  Call the backend only when required.
1138
1139         * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
1140         (lookup_status_cb): Issue status only when CTRL is not NULL.
1141         (gpgsm_dirmngr_lookup): Document that CTRL is optional.
1142
1143         * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
1144
1145 2002-06-28  Werner Koch  <wk@gnupg.org>
1146
1147         * server.c (cmd_recipient): Add more reason codes.
1148
1149 2002-06-27  Werner Koch  <wk@gnupg.org>
1150
1151         * certpath.c (gpgsm_basic_cert_check): Use
1152         --debug-no-path-validation to also bypass this basic check.
1153
1154         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1155
1156         * call-agent.c (start_agent): Create and pass the list of FD to
1157         keep in the child to assuan.
1158         * call-dirmngr.c (start_dirmngr): Ditto.
1159
1160 2002-06-26  Werner Koch  <wk@gnupg.org>
1161
1162         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
1163
1164         * gpgsm.c: --debug-no-path-validation does not take an argument.
1165
1166 2002-06-25  Werner Koch  <wk@gnupg.org>
1167
1168         * certdump.c (print_dn_part): Always print a leading slash,
1169         removed NEED_DELIM arg and changed caller.
1170
1171         * export.c (gpgsm_export): Print LFs to FP and not stdout.
1172         (print_short_info): Ditto.  Make use of gpgsm_print_name.
1173
1174         * server.c (cmd_export): Use output-fd instead of data lines; this
1175         was actually the specified way.
1176
1177 2002-06-24  Werner Koch  <wk@gnupg.org>
1178
1179         * gpgsm.c: Removed duped help entry for --list-keys.
1180         
1181         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
1182
1183         * certpath.c (gpgsm_validate_path): Use it here instead of the
1184         debug flag hack.
1185
1186         * certpath.c (check_cert_policy): Return No_Policy_Match if the
1187         policy file could not be opened.
1188
1189 2002-06-20  Werner Koch  <wk@gnupg.org>
1190
1191         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
1192         certificate with the required key usage.
1193
1194         * gpgsm.c (main): Fixed a segv when using --outfile without an
1195         argument.
1196
1197         * keylist.c (print_capabilities): Also check for non-repudiation
1198         and data encipherment.
1199         * certlist.c (cert_usage_p): Test for signing and encryption was
1200         swapped.  Add a case for certification usage, handle
1201         non-repudiation and data encipherment.
1202         (gpgsm_cert_use_cert_p): New.
1203         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
1204         callers to pass it.
1205         * certpath.c (gpgsm_validate_path): Use it here to print a status
1206         message. Added a CTRL argument and changed all callers to pass it.
1207         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
1208         usage.
1209         * verify.c (gpgsm_verify): Ditto.
1210         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
1211
1212 2002-06-19  Werner Koch  <wk@gnupg.org>
1213
1214         * call-agent.c (learn_cb): Use log_info instead of log_error on
1215         successful import.
1216
1217         * keydb.c (keydb_set_ephemeral): New.
1218         (keydb_store_cert): New are ephemeral, changed all callers.
1219         * keylist.c (list_external_cb): Store cert as ephemeral.
1220         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
1221
1222         * gpgsm.c (main): New command --list-external-keys.
1223         
1224 2002-06-17  Werner Koch  <wk@gnupg.org>
1225
1226         * certreqgen.c (read_parameters): Improved error handling.
1227         (gpgsm_genkey): Print error message.
1228
1229 2002-06-13  Werner Koch  <wk@gnupg.org>
1230
1231         * gpgsm.c (main): New option --log-file.
1232
1233 2002-06-12  Werner Koch  <wk@gnupg.org>
1234
1235         * call-dirmngr.c (lookup_status_cb): New.
1236         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
1237         changed caller to pass it.
1238
1239         * gpgsm.c (open_fwrite): New.
1240         (main): Allow --output for --verify.
1241
1242         * sign.c (hash_and_copy_data): New.
1243         (gpgsm_sign): Implemented normal (non-detached) signatures.
1244         * gpgsm.c (main): Ditto.
1245         
1246         * certpath.c (gpgsm_validate_path): Special error handling for
1247         no policy match.
1248
1249 2002-06-10  Werner Koch  <wk@gnupg.org>
1250
1251         * server.c (get_status_string): Add STATUS_ERROR.
1252
1253         * certpath.c (gpgsm_validate_path): Tweaked the error checking to 
1254         return error codes in a more sensitive way.
1255         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
1256         CA certificate and when the certificate has been revoked.  Issue
1257         TRUST_FULLY even when the cert has expired.  Append an error token
1258         to these status lines.  Issue the new generic error status when a
1259         cert was not found and when leaving the function.
1260
1261 2002-06-04  Werner Koch  <wk@gnupg.org>
1262
1263         * gpgsm.c (main): New command --list-sigs
1264         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
1265         not used.
1266         (list_cert_chain): New.
1267
1268 2002-05-31  Werner Koch  <wk@gnupg.org>
1269
1270         * gpgsm.c (main): Don't print the "go ahead" message for an
1271         invalid command.
1272
1273 2002-05-23  Werner Koch  <wk@gnupg.org>
1274
1275         * import.c (gpgsm_import): Add error messages.
1276
1277 2002-05-21  Werner Koch  <wk@gnupg.org>
1278
1279         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
1280         (list_external_keys): New.
1281         (gpgsm_list_keys): Dispatcher for above.
1282         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
1283         (gpgsm_dirmngr_lookup): New.
1284         * server.c (option_handler): Handle new option --list-mode.
1285         (do_listkeys): Handle options and actually use the mode argument.
1286         (get_status_string): New code TRUNCATED.
1287
1288         * import.c (gpgsm_import): Try to identify the type of input and
1289         handle certs-only messages.
1290
1291 2002-05-14  Werner Koch  <wk@gnupg.org>
1292
1293         * gpgsm.c: New option --faked-system-time
1294         * sign.c (gpgsm_sign): And use it here.
1295         * certpath.c (gpgsm_validate_path): Ditto.
1296
1297 2002-05-03  Werner Koch  <wk@gnupg.org>
1298
1299         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
1300         all callers.
1301         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
1302         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
1303
1304 2002-04-26  Werner Koch  <wk@gnupg.org>
1305
1306         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
1307         Changed all users.
1308
1309         * call-agent.c (start_agent): Be more silent without -v.
1310         * call-dirmngr.c (start_dirmngr): Ditto.
1311
1312 2002-04-25  Werner Koch  <wk@gnupg.org>
1313
1314         * call-agent.c (start_agent): Make copies of old locales and check
1315         for setlocale.
1316
1317 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1318
1319         * call-agent.c (start_agent): Fix error handling logic so the
1320         locale is always correctly reset.
1321
1322 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1323
1324         * server.c (option_handler): Accept display, ttyname, ttytype,
1325         lc_ctype and lc_messages options.
1326         * gpgsm.c (main): Allocate memory for these options.
1327         * gpgsm.h (struct opt): Make corresponding members non-const.
1328
1329 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
1330
1331         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
1332         lc_ctype, lc_messages.
1333         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
1334         oTTYname, oTTYtype, oLCctype, oLCmessages.
1335         (opts): New entries for these options.
1336         (main): Handle these new options.
1337         * call-agent.c (start_agent): Set the various display and tty
1338         parameter after resetting.
1339
1340 2002-04-18  Werner Koch  <wk@gnupg.org>
1341
1342         * certreqgen.c (gpgsm_genkey): Write status output on success.
1343
1344 2002-04-15  Werner Koch  <wk@gnupg.org>
1345
1346         * gpgsm.c (main): Check ksba version.
1347
1348         * certpath.c (find_up): New to use the authorithKeyIdentifier.
1349         Use it in all other functions to locate the signing cert..
1350
1351 2002-04-11  Werner Koch  <wk@gnupg.org>
1352
1353         * certlist.c (cert_usable_p): New.
1354         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
1355         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
1356         (gpgsm_add_to_certlist): Check the key usage.
1357         * sign.c (gpgsm_sign): Ditto.
1358         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
1359         certificate was used.
1360         * decrypt.c (gpgsm_decrypt): Ditto
1361         * keylist.c (print_capabilities): Determine values from the cert.
1362
1363 2002-03-28  Werner Koch  <wk@gnupg.org>
1364
1365         * keylist.c (list_cert_colon): Fixed listing of crt record; the
1366         issuer is not at the right place.  Print a chainingID.
1367         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
1368         common errors.
1369
1370 2002-03-21  Werner Koch  <wk@gnupg.org>
1371
1372         * export.c: New.
1373         * gpgsm.c: Add command --export.
1374         * server.c (cmd_export): New.
1375         
1376 2002-03-13  Werner Koch  <wk@gnupg.org>
1377
1378         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
1379
1380 2002-03-12  Werner Koch  <wk@gnupg.org>
1381
1382         * certpath.c (check_cert_policy): Print the policy list.
1383
1384         * verify.c (gpgsm_verify): Detect certs-only message.
1385
1386 2002-03-11  Werner Koch  <wk@gnupg.org>
1387
1388         * import.c (gpgsm_import): Print a notice about imported certificates
1389         when in verbose mode.
1390
1391         * gpgsm.c (main): Print INV_RECP status.
1392         * server.c (cmd_recipient): Ditto.
1393
1394         * server.c (gpgsm_status2): New.  Allows for a list of strings.
1395         (gpgsm_status): Divert to gpgsm_status2.
1396
1397         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
1398         recipients are given.  Print a NO_RECP status.
1399
1400 2002-03-06  Werner Koch  <wk@gnupg.org>
1401
1402         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
1403         (do_listkeys): new.  Add pattern parsing.
1404
1405         * keylist.c (gpgsm_list_keys): Handle selection pattern.
1406
1407         * gpgsm.c: New command --learn-card
1408         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
1409
1410         * gpgsm.c (main): Print error messages for non-implemented commands.
1411
1412         * base64.c (base64_reader_cb): Use case insensitive compare of the
1413         Content-Type string to detect plain base-64.
1414
1415 2002-03-05  Werner Koch  <wk@gnupg.org>
1416
1417         * gpgsm.c, gpgsm.h: Add local_user.
1418         * sign.c (gpgsm_get_default_cert): New.
1419         (get_default_signer): Use the new function if local_user is not
1420         set otherwise used that value.
1421         * encrypt.c (get_default_recipient): Removed.
1422         (gpgsm_encrypt): Use gpgsm_get_default_cert.
1423
1424         * verify.c (gpgsm_verify): Better error text for a bad signature
1425         found by comparing the hashs.
1426
1427 2002-02-27  Werner Koch  <wk@gnupg.org>
1428
1429         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
1430         of assuan_transact.
1431
1432 2002-02-25  Werner Koch  <wk@gnupg.org>
1433
1434         * server.c (option_handler): Allow to use -2 for "send all certs
1435         except the root cert".
1436         * sign.c (add_certificate_list): Implement it here.
1437         * certpath.c (gpgsm_is_root_cert): New.
1438
1439 2002-02-19  Werner Koch  <wk@gnupg.org>
1440
1441         * certpath.c (check_cert_policy): New.
1442         (gpgsm_validate_path): And call it from here.
1443         * gpgsm.c (main): New options --policy-file,
1444         --disable-policy-checks and --enable-policy-checks.
1445         * gpgsm.h (opt): Added policy_file, no_policy_checks.
1446
1447 2002-02-18  Werner Koch  <wk@gnupg.org>
1448
1449         * certpath.c (gpgsm_validate_path): Ask the agent to add the
1450         certificate into the trusted list.
1451         * call-agent.c (gpgsm_agent_marktrusted): New.
1452
1453 2002-02-07  Werner Koch  <wk@gnupg.org>
1454
1455         * certlist.c (gpgsm_add_to_certlist): Check that the specified
1456         name identifies a certificate unambiguously.
1457         (gpgsm_find_cert): Ditto.
1458
1459         * server.c (cmd_listkeys): Check that the data stream is available.
1460         (cmd_listsecretkeys): Ditto.
1461         (has_option): New.
1462         (cmd_sign): Fix ambiguousity in option recognition.
1463
1464         * gpgsm.c (main): Enable --logger-fd.
1465
1466         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
1467         performance.
1468
1469         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
1470         the agent.
1471
1472         * keylist.c (list_cert_colon): Filter out control characters.
1473
1474 2002-02-06  Werner Koch  <wk@gnupg.org>
1475
1476         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
1477
1478         * server.c (reset_notify): Close input and output FDs.
1479         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
1480         (cmd_genkey): Close the FDs and release the recipient list even in
1481         the error case.
1482
1483 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
1484
1485         * sign.c (gpgsm_sign): Do not release certificate twice.
1486
1487 2002-01-29  Werner Koch  <wk@gnupg.org>
1488
1489         * call-agent.c (gpgsm_agent_havekey): New.
1490         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
1491         when we know that the secret key is available.
1492         (gpgsm_list_keys): New arg MODE, check whether a secret key is
1493         available.  Changed all callers.
1494         * gpgsm.c (main): New command --list-secret-keys.
1495         * server.c (cmd_listsecretkeys): New.
1496         (cmd_listkeys): Return secret keys with "crs" record.
1497
1498 2002-01-28  Werner Koch  <wk@gnupg.org>
1499
1500         * certreqgen.c (create_request): Store the email address in the req.
1501
1502 2002-01-25  Werner Koch  <wk@gnupg.org>
1503
1504         * gpgsm.c (main): Disable core dumps.
1505
1506         * sign.c (add_certificate_list): New.
1507         (gpgsm_sign): Add the certificates to the CMS object.
1508         * certpath.c (gpgsm_walk_cert_chain): New.
1509         * gpgsm.h (server_control_s): Add included_certs.
1510         * gpgsm.c: Add option --include-certs.
1511         (gpgsm_init_default_ctrl): New.
1512         (main): Call it.
1513         * server.c (gpgsm_server): Ditto.
1514         (option_handler): Support --include-certs.
1515
1516 2002-01-23  Werner Koch  <wk@gnupg.org>
1517
1518         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
1519         * certdump.c (gpgsm_dump_string): New.
1520         (print_dn): Replaced by above.
1521
1522 2002-01-22  Werner Koch  <wk@gnupg.org>
1523
1524         * certpath.c (unknown_criticals): New.
1525         (allowed_ca): New.
1526         (gpgsm_validate_path): Check validity, CA attribute, path length
1527         and unknown critical extensions.
1528
1529 2002-01-21  Werner Koch  <wk@gnupg.org>
1530
1531         * gpgsm.c: Add option --enable-crl-checks.
1532
1533         * call-agent.c (start_agent): Implemented socket based access.
1534         * call-dirmngr.c (start_dirmngr): Ditto.
1535
1536 2002-01-20  Werner Koch  <wk@gnupg.org>
1537
1538         * server.c (option_handler): New.
1539         (gpgsm_server): Register it with assuan.
1540
1541 2002-01-19  Werner Koch  <wk@gnupg.org>
1542
1543         * server.c (gpgsm_server): Use assuan_deinit_server and setup
1544         assuan logging if enabled.
1545         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
1546         an Assuan log file.
1547
1548         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
1549
1550 2002-01-15  Werner Koch  <wk@gnupg.org>
1551
1552         * import.c (gpgsm_import): Just do a basic cert check before
1553         storing it.
1554         * certpath.c (gpgsm_basic_cert_check): New.
1555
1556         * keydb.c (keydb_store_cert): New.
1557         * import.c (store_cert): Removed and change all caller to use
1558         the new function.
1559         * verify.c (store_cert): Ditto.
1560
1561         * certlist.c (gpgsm_add_to_certlist): Validate the path
1562
1563         * certpath.c (gpgsm_validate_path): Check the trust list.
1564         * call-agent.c (gpgsm_agent_istrusted): New.
1565
1566 2002-01-14  Werner Koch  <wk@gnupg.org>
1567
1568         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
1569         * certlist.c (gpgsm_find_cert): New.
1570
1571 2002-01-13  Werner Koch  <wk@gnupg.org>
1572
1573         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
1574         hash after the dot.
1575
1576 2002-01-11  Werner Koch  <wk@gnupg.org>
1577
1578         * call-dirmngr.c: New.
1579         * certpath.c (gpgsm_validate_path): Check the CRL here.
1580         * fingerprint.c (gpgsm_get_certid): New.
1581         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
1582
1583 2002-01-10  Werner Koch  <wk@gnupg.org>
1584
1585         * base64.c (gpgsm_create_writer): Allow to set the object name
1586
1587 2002-01-08  Werner Koch  <wk@gnupg.org>
1588
1589         * keydb.c (spacep): Removed because it is now in util.c
1590
1591         * server.c (cmd_genkey): New.
1592         * certreqgen.c: New.  The parameter handling code has been taken
1593         from gnupg/g10/keygen.c version 1.0.6.
1594         * call-agent.c (gpgsm_agent_genkey): New.
1595
1596 2002-01-02  Werner Koch  <wk@gnupg.org>
1597
1598         * server.c (rc_to_assuan_status): Removed and changed all callers
1599         to use map_to_assuan_status.
1600
1601 2001-12-20  Werner Koch  <wk@gnupg.org>
1602
1603         * verify.c (gpgsm_verify): Implemented non-detached signature
1604         verification.  Add OUT_FP arg, initialize a writer and changed all
1605         callers.
1606         * server.c (cmd_verify): Pass an out_fp if one has been set.
1607
1608         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
1609
1610         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
1611         global.
1612         (print_time): Renamed to gpgsm_dump_time, made global.
1613         (gpgsm_dump_serial): Take a real S-Expression as argument and
1614         print the first item.
1615         * keylist.c (list_cert_colon): Ditto.
1616         * keydb.c (keydb_search_issuer_sn): Ditto.
1617         * decrypt.c (print_integer_sexp): Removed and made callers 
1618         use gpgsm_dump_serial.
1619         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
1620         
1621 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
1622
1623         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
1624
1625 2001-12-18  Werner Koch  <wk@gnupg.org>
1626
1627         * verify.c (print_integer_sexp): Renamed from print_integer and
1628         print the serial number according to the S-Exp rules.
1629         * decrypt.c (print_integer_sexp): Ditto.
1630
1631 2001-12-17  Werner Koch  <wk@gnupg.org>
1632
1633         * keylist.c (list_cert_colon): Changed for new return value of
1634         get_serial.
1635         * keydb.c (keydb_search_issuer_sn): Ditto.
1636         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
1637         returingin functions.
1638         * fingerprint.c (gpgsm_get_keygrip): Ditto.
1639         * encrypt.c (encrypt_dek): Ditto
1640         * certcheck.c (gpgsm_check_cms_signature): Ditto
1641         * decrypt.c (prepare_decryption): Ditto.
1642         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
1643         use KsbaSexp type and calculate the length.
1644
1645         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
1646
1647         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
1648
1649         * fingerprint.c (gpgsm_get_keygrip): Use the new
1650         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
1651         therefore the grip values changed.
1652
1653 2001-12-15  Werner Koch  <wk@gnupg.org>
1654
1655         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
1656         kludge.
1657         (gpgsm_create_cms_signature): Removed the commented fake key
1658         code.  This makes the function pretty simple.
1659
1660         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
1661
1662         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
1663         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
1664
1665 2001-12-14  Werner Koch  <wk@gnupg.org>
1666
1667         * keylist.c (list_cert_colon): Kludge to show an email address
1668         encoded in the subject's DN.
1669
1670         * verify.c (gpgsm_verify): Add hash debug helpers
1671         * sign.c (gpgsm_sign): Ditto.
1672
1673         * base64.c (base64_reader_cb): Reset the linelen when we need to
1674         skip the line and adjusted test; I somehow forgot about DeMorgan.
1675
1676         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify) 
1677         (cmd_import): Close the FDs on success.
1678         (close_message_fd): New.
1679         (input_notify): Setting autodetect_encoding to 0 after initializing
1680         it to 0 is pretty pointless.  Easy to fix.
1681
1682         * gpgsm.c (main): New option --debug-wait n, so that it is
1683         possible to attach gdb when used in server mode.
1684
1685         * sign.c (get_default_signer): Use keydb_classify_name here.
1686
1687 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
1688
1689         * call-agent.c (LINELENGTH): Removed.
1690         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
1691         (gpgsm_agent_pkdecrypt): Likewise.
1692
1693 2001-12-13  Werner Koch  <wk@gnupg.org>
1694
1695         * keylist.c (list_cert_colon): Print alternative names of subject
1696         and a few other values.
1697
1698 2001-12-12  Werner Koch  <wk@gnupg.org>
1699
1700         * gpgsm.c (main): New options --assume-{armor,base64,binary}. 
1701         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
1702
1703 2001-12-04  Werner Koch  <wk@gnupg.org>
1704
1705         * call-agent.c (read_from_agent): Check for inquire responses.
1706         (request_reply): Handle them using a new callback arg, changed all
1707         callers.
1708         (gpgsm_agent_pkdecrypt): New.
1709
1710 2001-11-27  Werner Koch  <wk@gnupg.org>
1711
1712         * base64.c: New.  Changed all other functions to use this instead
1713         of direct creation of ksba_reader/writer.
1714         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
1715
1716 2001-11-26  Werner Koch  <wk@gnupg.org>
1717
1718         * gpgsm.c: New option --agent-program
1719         * call-agent.c (start_agent): Allow to override the default path
1720         to the agent.
1721
1722         * keydb.c (keydb_add_resource): Create keybox
1723
1724         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
1725
1726         * server.c (rc_to_assuan_status): New.  Use it for all commands.
1727
1728         
1729  Copyright 2001, 2002, 2003, 2004, 2005,
1730            2006 Free Software Foundation, Inc.
1731
1732  This file is free software; as a special exception the author gives
1733  unlimited permission to copy and/or distribute it, with or without
1734  modifications, as long as this notice is preserved.
1735
1736  This file is distributed in the hope that it will be useful, but
1737  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1738  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.