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