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