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