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