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