Use a custom log handler for libassuan.
[gnupg.git] / sm / ChangeLog
1 2010-03-11  Werner Koch  <wk@g10code.com>
2
3         * gpgsm.c: Include "asshelp.h".
4         (main): Remove assuan_set_assuan_log_prefix.  Add
5         assuan_set_log_cb.
6         * server.c (gpgsm_server): Remove assuan_set_log_stream.
7
8 2010-03-10  Werner Koch  <wk@g10code.com>
9
10         * Makefile.am (common_libs): Remove libjnlib.a.  Change order.
11
12         * gpgsm.h: Remove "estream.h".
13
14 2010-03-08  Werner Koch  <wk@g10code.com>
15
16         * certreqgen.c (gpgsm_genkey): Change OUT_FP to an estream_t
17         OUT_STREAM.
18         * certreqgen-ui.c (gpgsm_gencertreq_tty): ditto.
19
20         * server.c (cmd_genkey): Close IN_STREAM.
21
22         * server.c (cmd_encrypt, cmd_decrypt, cmd_verify, cmd_sign): Avoid
23         dup call by using es_fdopen_nc.
24         (do_listkeys): Use es_fdopen_nc instead of dup and es_fdopen.
25         (cmd_export): Ditto.
26         (cmd_genkey): Ditto.
27         * export.c (popen_protect_tool): Change OUTFILE to an estream_t.
28         (export_p12): Change OUTFP and arg RETFP to an estream_t.
29         (gpgsm_p12_export): Change DATAFP to an estream_t.
30         (gpgsm_export): Remove arg FP.
31         * import.c (import_one): Change CERTFP and arg FP to an estream_t.
32         (popen_protect_tool): Ditto for OUTFILE.
33         (parse_p12): Change CERTFP to an estream_t.
34         * sign.c (hash_data, hash_and_copy_data): Use estream.
35         (gpgsm_sign): Change arg OUT_FP to an estream_t.
36         * verify.c (gpgsm_verify): Rename FP to IN_FP.  Change FP and arg
37         OUT_FP to an estream_t.
38         (hash_data): Use estream.
39         * base64.c (struct reader_cb_parm_s): Change FP to an estream_t.
40         (gpgsm_create_reader): Ditto.
41         (simple_reader_cb, base64_reader_cb): Adjust accordingly.
42         * decrypt.c (gpgsm_decrypt): Change OUT_FP and IN_FP to an estream_t.
43         * encrypt.c (gpgsm_encrypt): Change OUT_FP to an estream_t.  Ditto
44         for DATA_FD.
45         (encrypt_cb): Use estream.
46         * gpgsm.c (main) <aEncr, aVerify, aSign, aDecrypt>: Use estream
47         functions.
48         (main) <aExport, aKeygen>: Use open_es_fwrite.
49
50 2009-12-14  Werner Koch  <wk@g10code.com>
51
52         * server.c (cmd_passwd): New.
53         (register_commands): Register new command.
54
55 2009-12-10  Werner Koch  <wk@g10code.com>
56
57         * gpgsm.c: Add option --ignore-cert-extension.
58         * gpgsm.h (opt): Add field IGNORED_CERT_EXTENSIONS.
59         * certchain.c (unknown_criticals): Handle ignored extensions,
60
61 2009-12-08  Werner Koch  <wk@g10code.com>
62
63         * keydb.c (keydb_search_kid): Fix code even that it is not used.
64         (classify_user_id): Adjust for change of u.kid type.
65         (keydb_classify_name): Replace GPG_ERR_INV_NAME by
66         GPG_ERR_INV_USER_ID.
67         (keydb_classify_name): Remove.  Replace all callers by
68         classify_user_id.
69
70 2009-12-08  Marcus Brinkmann  <marcus@g10code.de>
71
72         * call-dirmngr.c (start_dirmngr_ext): Convert posix fd to assuan fd.
73
74 2009-12-03  Werner Koch  <wk@g10code.com>
75
76         * gpgsm.c (set_debug): Allow for numerical debug leveles.  Print
77         active debug flags.
78
79 2009-12-02  Werner Koch  <wk@g10code.com>
80
81         * verify.c (gpgsm_verify): Add audit info on hash algorithms.
82
83         * sign.c (gpgsm_sign): Add audit log calls.
84         (hash_data): Return an error indicator.
85
86 2009-12-01  Werner Koch  <wk@g10code.com>
87
88         * decrypt.c (gpgsm_decrypt): Add audit log calls.
89
90         * gpgsm.c: New option --html-audit-log.
91
92 2009-11-25  Marcus Brinkmann  <marcus@g10code.de>
93
94         * server.c (gpgsm_server): Use assuan_fd_t and assuan_fdopen on
95         fds.
96
97 2009-11-23  Werner Koch  <wk@g10code.com>
98
99         * gpgsm.c (main) <aGpgConfList>: Add key "default_pubkey_algo".
100
101 2009-11-10  Marcus Brinkmann  <marcus@g10code.de>
102
103         * server.c (cmd_getauditlog): Don't dup FD for es_fdopen_nc as
104         this leaks the FD here.
105
106 2009-11-05  Marcus Brinkmann  <marcus@g10code.de>
107
108         * call-dirmngr.c (start_dirmngr_ext): Update use of
109         assuan_pipe_connect and assuan_socket_connect.
110
111 2009-11-04  Werner Koch  <wk@g10code.com>
112
113         * certreqgen.c (proc_parameters): Change fallback key length to
114         2048.
115
116         * server.c (register_commands): Add help arg to
117         assuan_register_command.  Provide help strings for all commands.
118
119 2009-11-02  Marcus Brinkmann  <marcus@g10code.de>
120
121         * server.c (reset_notify, input_notify, output_notify): Update to
122         new assuan interface.
123         (register_commands): Use assuan_handler_t.
124         * call-agent.c (membuf_data_cb, default_inq_cb)
125         (inq_ciphertext_cb, scd_serialno_status_cb)
126         (scd_keypairinfo_status_cb, istrusted_status_cb)
127         (learn_status_cb, learn_cb, keyinfo_status_cb): Return gpg_error_t.
128
129 2009-10-16  Werner Koch  <wk@g10code.com>
130
131         * gpgsm.c (default_include_certs): Change to -2.
132         (DEFAULT_INCLUDE_CERTS): New.
133         (DEFAULT_CIPHER_ALGO): New.  Use instead of hardcoded "3DES".
134
135 2009-09-30  Werner Koch  <wk@g10code.com>
136
137         * gpgsm.c (main): Remove obsolete GCRYCTL_DISABLE_INTERNAL_LOCKING.
138
139 2009-09-23  Marcus Brinkmann  <marcus@g10code.de>
140
141         * gpgsm.c (main): Update to new assuan API.
142         * server.c: Include "gpgsm.h" before <assuan.h> due to check for
143         GPG_ERR_SOURCE_DEFAULT and assuan.h now including gpg-error.h.
144         (option_handler, cmd_recipient, cmd_signer, cmd_encrypt)
145         (cmd_decrypt, cmd_verify, cmd_sign, cmd_import, cmd_export)
146         (cmd_delkeys, cmd_message, cmd_listkeys, cmd_dumpkeys)
147         (cmd_listsecretkeys, cmd_dumpsecretkeys, cmd_genkey)
148         (cmd_getauditlog, cmd_getinfo): Return gpg_error_t instead of int.
149         (register_commands): Same for member HANDLER in table.
150         (gpgsm_server): Allocate assuan context before starting server.
151         * sm/call-dirmngr.c:
152         * call-dirmngr.c (prepare_dirmngr): Check for CTX and error before
153         setting LDAPSERVER.
154         (start_dirmngr_ext): Allocate assuan context before starting
155         server.
156         (inq_certificate, isvalid_status_cb, lookup_cb, lookup_status_cb)
157         (run_command_cb, run_command_inq_cb, run_command_status_cb):
158         Return gpg_error_t instead of int.
159
160 2009-08-06  Werner Koch  <wk@g10code.com>
161
162         * sign.c (gpgsm_sign): Print INV_SNDR for a bad default key.
163
164         * server.c (cmd_signer): Remove unneeded case for -1.  Send
165         INV_SGNR.  Use new map function.
166         (cmd_recipient): Use new map function.
167         * gpgsm.c (do_add_recipient): Use new map function for INV_RECP.
168         (main): Ditto.  Also send INV_SGNR.
169
170 2009-07-30  Werner Koch  <wk@g10code.com>
171
172         * call-agent.c (learn_cb): Do not store as ephemeral.
173
174 2009-07-29  Marcus Brinkmann  <marcus@g10code.com>
175
176         * keylist.c (print_capabilities): Print a trailing colon.
177
178 2009-07-23  Werner Koch  <wk@g10code.com>
179
180         * certchain.c (is_cert_still_valid): Emit AUDIT_CRL_CHECK.
181
182 2009-07-07  Werner Koch  <wk@g10code.com>
183
184         * server.c (command_has_option): New.
185         (cmd_getinfo): Add subcommand "cmd_has_option".
186         (cmd_import): Implement option --re-import.
187         * import.c (gpgsm_import): Add arg reimport_mode.
188         (reimport_one): New.
189
190         * gpgsm.h: Include session-env.h.
191         (opt): Add field SESSION_ENV.  Remove obsolete fields.
192         * server.c (option_handler): Rewrite setting of option fields.
193         Replace strdup by xtrystrdup.
194         * gpgsm.c (set_opt_session_env): New.
195         (main): Use it for oDisplay, oTTYname, oTTYtype and oXauthority.
196         * call-agent.c (start_agent): Adjust start_new_gpg_agent for
197         changed args.
198         * misc.c (setup_pinentry_env): Use new session_env stuff.
199
200 2009-07-02  Werner Koch  <wk@g10code.com>
201
202         * certreqgen-ui.c (gpgsm_gencertreq_tty): Allow using a key from a
203         card.
204         * call-agent.c (gpgsm_agent_scd_serialno)
205         (scd_serialno_status_cb, store_serialno): New.
206         (scd_keypairinfo_status_cb, gpgsm_agent_scd_keypairinfo): New.
207
208 2009-07-01  Werner Koch  <wk@g10code.com>
209
210         * certreqgen-ui.c (check_keygrip): New.
211         (gpgsm_gencertreq_tty): Allow using an existing key.
212
213         * gpgsm.c (open_es_fread): New.
214         (main) <aKeygen>: Implement --batch mode.
215
216 2009-06-24  Werner Koch  <wk@g10code.com>
217
218         * call-dirmngr.c (pattern_from_strlist): Remove dead assignment of N.
219         * sign.c (gpgsm_sign): Remove dead assignment.
220         * certreqgen.c (create_request): Assign GPG_ERR_BUG to RC.
221         Reported by Fabian Keil.
222
223 2009-05-27  Werner Koch  <wk@g10code.com>
224
225         * encrypt.c (encrypt_dek): Make use of make_canon_sexp.
226
227 2009-05-18  Werner Koch  <wk@g10code.com>
228
229         * server.c (option_handler): New option "no-encrypt-to".
230         (cmd_encrypt): Make use of it.
231
232         * gpgsm.c: Remove not implemented --verify-files.
233
234 2009-04-02  Werner Koch  <wk@g10code.com>
235
236         * keylist.c (list_cert_std): Print card serial number.
237
238 2009-04-01  Werner Koch  <wk@g10code.com>
239
240         * export.c (popen_protect_tool): Add command line option
241         --agent-program and pass flag bit 6.
242         * import.c (popen_protect_tool): Ditto.
243
244 2009-03-26  Werner Koch  <wk@g10code.com>
245
246         * gpgsm.c (main): s/def_digest_string/forced_digest_algo/ and
247         activate the --digest-algo option.
248         * gpgsm.h (struct opt): s/def_digest_algo/forced_digest_algo/.
249         * sign.c (gpgsm_sign): Implement --digest-algo.
250
251         * sign.c (MAX_DIGEST_LEN): Change to 64.
252
253         * call-agent.c (gpgsm_agent_marktrusted): Format the issuer name.
254
255 2009-03-25  Werner Koch  <wk@g10code.com>
256
257         * decrypt.c (gpgsm_decrypt): Print ENC_TO and NO_SECKEY stati.
258         Fixes bug#1020.
259         * fingerprint.c (gpgsm_get_short_fingerprint): Add arg R_HIGH and
260         change all callers.
261
262 2009-03-23  Werner Koch  <wk@g10code.com>
263
264         * delete.c (delete_one): Also delete ephemeral certificates if
265         specified uniquely.
266
267 2009-03-20  Werner Koch  <wk@g10code.com>
268
269         * keylist.c (list_internal_keys): Set released cert to NULL.
270
271         * call-agent.c (learn_status_cb): New.
272         (gpgsm_agent_learn): Use it.
273         (learn_cb): Send a progress for every certificate.
274
275 2009-03-18  Werner Koch  <wk@g10code.com>
276
277         * gpgsm.h (struct opt): Move field WITH_EPHEMERAL_KEYS to struct
278         server_control_s.
279         * gpgsm.c (main): Change accordingly.
280         * keylist.c (list_internal_keys): Ditto.
281         * server.c (option_handler): Add "with-ephemeral-keys".
282
283 2009-03-12  Werner Koch  <wk@g10code.com>
284
285         * certdump.c (gpgsm_dump_time): Remove.
286         * certdump.c, verify.c, certchain.c
287         * gpgsm.c: s/gpgsm_dump_time/dump_isotime/.
288
289 2009-03-06  Werner Koch  <wk@g10code.com>
290
291         * call-agent.c (gpgsm_agent_keyinfo, keyinfo_status_cb): New.
292         * keylist.c (list_cert_colon): Print card S/N.
293
294         * keylist.c (list_internal_keys): Always list ephemeral keys if
295         specified by keygrip or fingerprint.
296         (list_cert_raw): Always show ephemeral flag.
297         * export.c (gpgsm_export): Export ephemeral keys if specified by
298         keygrip.
299
300 2009-02-09  Werner Koch  <wk@g10code.com>
301
302         * gpgsm.c (main): Change default cipher back to 3DES.
303
304 2009-01-12  Werner Koch  <wk@g10code.com>
305
306         * keylist.c (print_utf8_extn_raw): Cast printf precision argument.
307
308 2009-01-08  Werner Koch  <wk@g10code.com>
309
310         * fingerprint.c (gpgsm_get_keygrip_hexstring): Add error detection.
311
312 2008-12-10  Werner Koch  <wk@g10code.com>
313
314         * gpgsm.c (our_cipher_test_algo): Use the GCRY constants as we now
315         require 1.4.
316         (our_md_test_algo): Ditto.  Add SHA224.
317         (main) <aGpgConfList>: Update default cipher algo.
318
319 2008-12-09  Werner Koch  <wk@g10code.com>
320
321         * gpgsm.c (main): Call i18n_init before init_common_subsystems.
322
323 2008-12-05  Werner Koch  <wk@g10code.com>
324
325         * certreqgen.c (create_request): Provide a custom prompt for the
326         signing.
327
328         * certdump.c (gpgsm_format_keydesc): Remove debug output.
329         (gpgsm_format_keydesc): Remove saving of errno as xfree is
330         supposed not to change it.  Use the new percent_plus_escape
331         function which also fixes the issue that we did not escaped a
332         percent in the past.
333
334 2008-11-18  Werner Koch  <wk@g10code.com>
335
336         * gpgsm.c (make_libversion): New.
337         (my_strusage): Use new function.
338         (build_lib_list): Remove.
339
340 2008-11-13  Werner Koch  <wk@g10code.com>
341
342         * gpgsm.c: Remove all unused options. Use ARGPARSE macros.
343
344 2008-10-28  Werner Koch  <wk@g10code.com>
345
346         * certdump.c (gpgsm_format_keydesc): Use xtryasprintf and xfree.
347         (gpgsm_es_print_name): Factor code out to ...
348         (gpgsm_es_print_name2): New function.
349         (gpgsm_format_name2, format_name_writer): Use estream so that it
350         works on all platforms.
351         (format_name_writer): Fix reallocation bug.
352
353 2008-10-23  Werner Koch  <wk@g10code.com>
354
355         * import.c (popen_protect_tool): Add arg CTRL and assure that the
356         agent is running.  Pass a value for CTRL from all caller.
357         * export.c (popen_protect_tool): Ditto.
358
359 2008-10-21  Werner Koch  <wk@g10code.com>
360
361         * call-dirmngr.c (inq_certificate_parm_s): Add field CTRL.
362         (gpgsm_dirmngr_isvalid): Supply a value for that field.
363         (inq_certificate): Add inquiry ISTRUSTED.
364
365         * call-agent.c (gpgsm_agent_istrusted): Add new optional arg
366         HEXFPR.  Changed all callers.
367
368 2008-10-20  Werner Koch  <wk@g10code.com>
369
370         * keydb.c (keydb_locate_writable): Mark unused arg.
371         (keydb_search_kid): Ditto.
372         (keydb_clear_some_cert_flags): Ditto.
373         * server.c (cmd_encrypt): Ditto.
374         (cmd_decrypt, cmd_verify, cmd_import, cmd_genkey): Ditto.
375         * call-agent.c (gpgsm_scd_pksign): Ditto.
376         * call-dirmngr.c (release_dirmngr, release_dirmngr2)
377         (run_command_cb): Ditto.
378         * certlist.c (gpgsm_add_cert_to_certlist): Ditto.
379         * certchain.c (find_up_dirmngr): Ditto.
380         * keylist.c (print_key_data): Ditto.
381         (list_cert_raw, list_cert_std): Ditto.
382         * qualified.c (gpgsm_is_in_qualified_list): Ditto.
383
384         * gpgsm.c (set_binary) [!W32]: Mark unused arg.
385
386 2008-10-17  Werner Koch  <wk@g10code.com>
387
388         * call-dirmngr.c (start_dirmngr, start_dirmngr2): Reset the lock
389         flag on error.
390         (release_dirmngr, release_dirmngr2): Replace asserts by error messages.
391         (gpgsm_dirmngr_lookup): Replace assert by fatal error message.
392
393 2008-10-13  Werner Koch  <wk@g10code.com>
394
395         * gpgsm.c: Add alias --delete-keys.
396
397 2008-09-30  Werner Koch  <wk@g10code.com>
398
399         * server.c (cmd_getinfo): New subcommand agent-check.
400         * call-agent.c (gpgsm_agent_send_nop): New.
401
402 2008-09-29  Werner Koch  <wk@g10code.com>
403
404         * certcheck.c (MY_GCRY_PK_ECDSA): Remove.  Change users to
405         GCRY_PK_ECDSA.
406         * gpgsm.c (MY_GCRY_PK_ECDSA): Ditto.
407         * sign.c (MY_GCRY_MD_SHA224): Remove change users to GCRY_MD_SHA224.
408
409 2008-09-04  Werner Koch  <wk@g10code.com>
410
411         * certdump.c (gpgsm_format_keydesc): Work around a mingw32 bug.
412
413 2008-09-03  Werner Koch  <wk@g10code.com>
414
415         * sign.c (MY_GCRY_MD_SHA224): New, so that we don't need libgcrypt
416         1.2.
417
418 2008-08-13  Werner Koch  <wk@g10code.com>
419
420         * keylist.c (list_cert_colon): Print 'f' for validated certs.
421
422 2008-08-08  Marcus Brinkmann  <marcus@g10code.de>
423
424         * gpgsm.h (struct server_control_s): Remove member dirmngr_seen.
425         * call-dirmngr.c (dirmngr2_ctx, dirmngr_ctx_locked)
426         (dirmngr2_ctx_locked): New global variables.
427         (prepare_dirmngr): Don't check dirmngr_seen anymore.
428         (start_dirmngr): Move bunch of code to ...
429         (start_dirmngr_ext): ... this new function.
430         (release_dirmngr, start_dirmngr2, release_dirmngr2): New
431         functions.
432         (gpgsm_dirmngr_isvalid): Call release_dirmngr.
433         (gpgsm_dirmngr_lookup): Call release_dirmngr.  If dirmngr_ctx is
434         locked, use dirmngr2_locked.
435         (gpgsm_dirmngr_run_command): Call release_dirmngr.
436
437 2008-06-25  Werner Koch  <wk@g10code.com>
438
439         * sign.c (gpgsm_sign): Revamp the hash algorithm selection.
440         * gpgsm.h (struct certlist_s): Add field HASH_ALGO and HASH_ALGO_OID.
441
442         * qualified.c (gpgsm_qualified_consent): Fix double free.
443
444         * gpgsm.c (main): Change default cipher algo to AES.
445
446         * keylist.c (print_utf8_extn_raw, print_utf8_extn): New.
447         (list_cert_raw, list_cert_std): Print the TeleSec restriction
448         extension.
449
450 2008-06-23  Werner Koch  <wk@g10code.com>
451
452         * encrypt.c (encode_session_key): Replace xmalloc by xtrymalloc.
453         Use bin2hex instead of open coding the conversion.
454         (encrypt_dek): Init S_DATA.
455
456 2008-06-13  Marcus Brinkmann  <marcus@ulysses.g10code.com>
457
458         * call-dirmngr.c (prepare_dirmngr): Fix error code to ignore.
459
460 2008-06-12  Marcus Brinkmann  <marcus@g10code.de>
461
462         * gpgsm.h (struct keyserver_spec): New struct.
463         (opt): Add member keyserver.
464         * gpgsm.c (keyserver_list_free, parse_keyserver_line): New functions.
465         (main): Implement --keyserver option.
466         * call-dirmngr.c (prepare_dirmngr): Send LDAPSERVER commands.
467
468 2008-05-20  Werner Koch  <wk@g10code.com>
469
470         * gpgsm.c (main) <aExportSecretKeyP12>: Pass FP and not stdout to
471         the export function.  Reported by Marc Mutz.
472
473 2008-05-06  Werner Koch  <wk@g10code.com>
474
475         * keylist.c (list_external_keys): Ignore NOT FOUND error code.
476         This is bug#907.
477
478 2008-04-23  Werner Koch  <wk@g10code.com>
479
480         * certchain.c (find_up): Make correct C89 code.  Declare variable
481         at the top of the block.  Reported by Alain Guibert.
482
483 2008-04-09  Werner Koch  <wk@g10code.com>
484
485         * verify.c (gpgsm_verify): Print the message hash values on error.
486
487 2008-03-31  Werner Koch  <wk@g10code.com>
488
489         * call-dirmngr.c (start_dirmngr): Use log_info instead of
490         log_error when falling back to start dirmngr.
491
492 2008-03-20  Werner Koch  <wk@g10code.com>
493
494         * certlist.c (gpgsm_add_to_certlist): Always save the first
495         subject and issuer.  Initialize issuer with issuer and not with
496         subject.
497         (same_subject_issuer): Set issuer2 to issuer and not to subject.
498
499 2008-03-17  Werner Koch  <wk@g10code.com>
500
501         * certdump.c (my_funopen_hook_size_t): New.
502         (format_name_writer): Use it.
503
504 2008-03-13  Werner Koch  <wk@g10code.com>
505
506         * certdump.c (gpgsm_fpr_and_name_for_status): Fix signed/unsigned
507         char issue.
508         (gpgsm_format_keydesc): Remove superfluous test.  Add expire date
509         to the prompt.
510
511 2008-02-18  Werner Koch  <wk@g10code.com>
512
513         * certchain.c (gpgsm_is_root_cert): Factor code out to ...
514         (is_root_cert): New.  Extend test for self-issued certificates
515         signed by other CAs.
516         (do_validate_chain, gpgsm_basic_cert_check)
517         (gpgsm_walk_cert_chain): Use it here.
518
519         * gpgsm.c: Add option --no-common-certs-import.
520
521         * certchain.c (find_up_dirmngr, find_up, do_validate_chain)
522         (check_cert_policy): Be more silent with --quiet.
523
524         * gpgsm.c: Add option --disable-dirmngr.
525         * gpgsm.h (opt): Add field DISABLE_DIRMNGR.
526         * call-dirmngr.c (start_dirmngr): Implement option.
527
528 2008-02-14  Werner Koch  <wk@g10code.com>
529
530         * server.c (option_handler): Add option allow-pinentry-notify.
531         (gpgsm_proxy_pinentry_notify): New.
532         * call-agent.c (default_inq_cb): New.
533         (gpgsm_agent_pksign, gpgsm_scd_pksign, gpgsm_agent_readkey)
534         (gpgsm_agent_istrusted, gpgsm_agent_marktrusted)
535         (gpgsm_agent_passwd, gpgsm_agent_get_confirmation): Call it.
536         (struct cipher_parm_s, struct genkey_parm_s): Add field CTRL.
537         (inq_ciphertext_cb): Test keyword and fallback to default_inq_cb.
538         (inq_genkey_parms): Ditto.
539         (start_agent): Tell agent to send us the pinentry notifications.
540
541 2008-02-13  Werner Koch  <wk@g10code.com>
542
543         * call-dirmngr.c (gpgsm_dirmngr_lookup): Add arg CACHE_ONLY.
544         * keylist.c (list_external_keys): Pass false for new arg.
545         * certchain.c (find_up_dirmngr): New.
546         (find_up): Also try to read from the dirmngr cache.
547         (find_up, find_up_external, gpgsm_walk_cert_chain)
548         (gpgsm_basic_cert_check, allowed_ca): Add arg CTRL and changed all
549         callers.
550         * call-agent.c (struct learn_parm_s): Add field CTRL.
551         (gpgsm_agent_learn): Set it.
552
553 2008-02-11  Werner Koch  <wk@g10code.com>
554
555         * server.c (cmd_getinfo): New.
556         (gpgsm_server): Register GETINFO.
557
558 2008-01-29  Marcus Brinkmann  <marcus@g10code.de>
559
560         * keylist.c (list_internal_keys): New variable lastcert.  Use it
561         to suppress duplicates which immediately follow each other.
562
563 2008-01-27  Werner Koch  <wk@g10code.com>
564
565         * import.c (popen_protect_tool): Set bit 7 in the flags for
566         gnupg_spawn_process so that under W32 no window appears.
567         * export.c (popen_protect_tool): Ditto.
568
569 2007-12-13  Werner Koch  <wk@g10code.com>
570
571         * gpgsm.c (main): Add option --extra-digest-algo.
572         * gpgsm.h (struct): Add EXTRA_DIGEST_ALGO.
573         * verify.c (gpgsm_verify): Use it.  Use the hash algorithm from
574         the signature value.
575
576 2007-12-11  Werner Koch  <wk@g10code.com>
577
578         * certchain.c (do_validate_chain): Log AUDIT_ROOT_TRUSTED.
579
580         * server.c (cmd_sign, cmd_decrypt, cmd_encrypt): Start audit log.
581         (cmd_recipient): Start audit session.
582
583         * gpgsm.c (main): Revamp creation of the audit log.
584
585         * gpgsm.h (struct server_control_s): Add AGENT_SEEN and DIRMNGR_SEEN.
586         * call-agent.c (start_agent): Record an audit event.
587         * call-dirmngr.c (start_dirmngr): Ditto. Add new arg CTRL and pass
588         it from all callers.
589         (prepare_dirmngr): New helper for start_dirmngr.
590
591         * encrypt.c (gpgsm_encrypt): Add calls to audit_log.
592
593 2007-12-03  Werner Koch  <wk@g10code.com>
594
595         * gpgsm.c (main): Call gnupg_reopen_std.
596
597 h2007-11-22  Werner Koch  <wk@g10code.com>
598
599         * server.c (cmd_getauditlog): New.
600         (register_commands): Register GETAUDITLOG.
601
602 2007-11-19  Werner Koch  <wk@g10code.com>
603
604         * server.c (cmd_recipient, cmd_signer): Add error reason 11.
605
606         * gpgsm.c (main): Print a warning if --audit-log is used.
607
608 2007-11-15  Werner Koch  <wk@g10code.com>
609
610         * gpgsm.h (struct): Add XAUTHORITY and PINENTRY_USER_DATA.
611         * misc.c (setup_pinentry_env): Add XAUTHORITY and PINENTRY_USER_DATA.
612         * gpgsm.c (main): New option --xauthority.
613         * call-agent.c (start_agent): Adjust for changed start_new_gpg_agent.
614         * server.c (option_handler): Ad the new options.
615
616 2007-11-07  Werner Koch  <wk@g10code.com>
617
618         * gpgsm.c (main): New option --audit-log.
619         * server.c (option_handler): New option enable-audit-log.
620         (start_audit_session): New.
621         (cmd_verify): Create audit context.
622         (gpgsm_server): Release the context.
623
624         * gpgsm.h (struct server_control_s): Add member AUDIT, include
625         audit.h.
626         * certdump.c (gpgsm_format_sn_issuer): New.
627         * verify.c (hash_data): Return an error code.
628         (gpgsm_verify): Add calls to audit_log.
629
630         * gpgsm.c (get_status_string): Remove.
631         * gpgsm.h: Include status.h instead of errors.h.
632
633 2007-10-19  Werner Koch  <wk@g10code.com>
634
635         * qualified.c (gpgsm_qualified_consent): Use i18N-swicth functions.
636         (gpgsm_not_qualified_warning): Ditto.
637         * certdump.c (gpgsm_format_keydesc): Ditto.
638
639 2007-09-14  Werner Koch  <wk@g10code.com>
640
641         * gpgsm.c (build_lib_list): New.
642         (my_strusage): Print lib info.
643
644 2007-08-24  Werner Koch  <wk@g10code.com>
645
646         * Makefile.am (common_libs): Swap libkeybox and jnlib.
647
648 2007-08-23  Werner Koch  <wk@g10code.com>
649
650         * certlist.c (gpgsm_certs_identical_p): New.
651         (gpgsm_add_to_certlist): Ignore duplicate certificates in
652         ambigious name detection.
653         (gpgsm_find_cert): Ditto.
654         * export.c (gpgsm_p12_export): Ditto.
655
656 2007-08-22  Werner Koch  <wk@g10code.com>
657
658         * certreqgen.c (create_request): Replace open coding by bin2hex.
659
660         * certreqgen-ui.c (gpgsm_gencertreq_tty): Use es_fopenmem.
661
662 2007-08-21  Werner Koch  <wk@g10code.com>
663
664         * import.c (parse_p12): Use gnupg_tmpfile.
665         * export.c (export_p12): Ditto.
666
667 2007-08-20  Werner Koch  <wk@g10code.com>
668
669         * certreqgen.c (read_parameters): Change FP to an estream_t.
670         (gpgsm_genkey): Replace in_fd and in_stream by a estream_t.
671         * server.c (cmd_genkey): Adjust for that.
672         * certreqgen-ui.c (gpgsm_gencertreq_tty): Use es_open_memstream
673         instead of a temporary file.
674
675 2007-08-14  Werner Koch  <wk@g10code.com>
676
677         * call-dirmngr.c (start_dirmngr): Use dirmngr_socket_name.  change
678         the way infostr is xstrdupped.
679
680         * gpgsm.c (main) [W32]: Make --prefer-system-dirmngr a dummy under
681         Windows.
682
683 2007-08-13  Werner Koch  <wk@g10code.com>
684
685         * gpgsm.c (do_add_recipient): Add RECP_REQUIRED and make error
686         message depend on that.
687         (main): Add avriable RECP_REQUIRED, set ift for encryption
688         commands and pass it to do_add_recipient.
689         (our_pk_test_algo, our_cipher_test_algo, our_md_test_algo): Implement.
690
691 2007-08-09  Werner Koch  <wk@g10code.com>
692
693         * gpgsm.c (main) [W32]: Enable CRL check by default.
694         (main): Update the default control structure after reading the
695         options.
696         (gpgsm_parse_validation_model, parse_validation_model): New.
697         (main): New option --validation-model.
698         * certchain.c (gpgsm_validate_chain): Implement this option.
699         * server.c (option_handler): Ditto.
700
701         * certchain.c (is_cert_still_valid): Reformatted.  Add arg
702         FORCE_OCSP.  Changed callers to set this flag when using the chain
703         model.
704
705 2007-08-08  Werner Koch  <wk@g10code.com>
706
707         * certdump.c (gpgsm_print_serial): Fixed brown paper bag style bugs
708         which prefixed the output with a 3A and cut it off at a 00.
709
710         * keylist.c (list_cert_raw): Print the certificate ID first and
711         rename "Serial number" to "S/N".
712         (list_cert_std): Ditto.
713
714 2007-08-07  Werner Koch  <wk@g10code.com>
715
716         * gpgsm.c (main): Allow a string for --faked-system-time.
717
718 2007-08-06  Werner Koch  <wk@g10code.com>
719
720         Implementation of the chain model.
721
722         * gpgsm.h (struct rootca_flags_s): Define new members VALID and
723         CHAIN_MODEL.
724         * call-agent.c (gpgsm_agent_istrusted): Mark ROOTCA_FLAGS valid.
725         (istrusted_status_cb): Set CHAIN_MODEL.
726         * certchain.c (gpgsm_validate_chain): Replace LM alias by LISTMODE
727         and FP by LISTFP.
728         (gpgsm_validate_chain): Factor some code out to ...
729         (check_validity_period, ask_marktrusted): .. new.
730         (check_validity_cm_basic, check_validity_cm_main): New.
731         (do_validate_chain): New with all code from gpgsm_validate_chain.
732         New arg ROOTCA_FLAGS.
733         (gpgsm_validate_chain): Provide ROOTCA_FLAGS and fallback to chain
734         model.  Add RETFLAGS arg and changed all callers to pass NULL. Add
735         CHECKTIME arg and changed all callers to pass a nil value.
736         (has_validity_model_chain): New.
737         * verify.c (gpgsm_verify): Check for chain model and return as
738         part of the trust status.
739
740         * gpgsm.h (VALIDATE_FLAG_NO_DIRMNGR): New.
741         (VALIDATE_FLAG_NO_DIRMNGR): New.
742         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use constant here.
743
744 2007-08-03  Werner Koch  <wk@g10code.com>
745
746         * keylist.c (list_cert_colon): Avoid duplicate listing of kludge
747         uids.
748
749         * verify.c (gpgsm_verify): Make STATUS_VERIFY return the hash and
750         pk algo.
751         * certcheck.c (gpgsm_check_cms_signature): Add arg R_PKALGO.
752
753 2007-08-02  Werner Koch  <wk@g10code.com>
754
755         * gpgsm.c (main): Factored GC_OPT_FLAGS out to gc-opt-flags.h.
756
757 2007-07-17  Werner Koch  <wk@g10code.com>
758
759         * gpgsm.c (main): Implement --default-key.
760         (main) <gpgconf-list>: Declare --default-key and --encrypt-to.
761
762 2007-07-16  Werner Koch  <wk@g10code.com>
763
764         * server.c (cmd_message): Use gnupg_fd_t to avoid dependecy on
765         newer assuan versions.
766
767 2007-07-12  Werner Koch  <wk@g10code.com>
768
769         * gpgsm.c (check_special_filename): Use translate_sys2libc_fd_int
770         when passing an int value.
771         * server.c (cmd_encrypt, cmd_decrypt, cmd_verify, cmd_import)
772         (cmd_export, cmd_message, cmd_genkey):  Translate file descriptors.
773
774 2007-07-05  Werner Koch  <wk@g10code.com>
775
776         * Makefile.am (common_libs): Changed order of libs.
777
778 2007-07-04  Werner Koch  <wk@g10code.com>
779
780         * certchain.c (check_cert_policy): Remove extra checks for
781         GPG_ERR_NO_VALUE.  They are not needed since libksba 1.0.1.
782         * keylist.c (print_capabilities, list_cert_raw, list_cert_std): Ditto.
783         * certlist.c (cert_usage_p, cert_usage_p): Ditto.
784
785 2007-06-26  Werner Koch  <wk@g10code.com>
786
787         * gpgsm.c (main): Call gnupg_rl_initialize.
788         * Makefile.am (gpgsm_LDADD): Add LIBREADLINE and libgpgrl.a.
789
790 2007-06-25  Werner Koch  <wk@g10code.com>
791
792         * gpgsm.c (check_special_filename): Use translate_sys2libc_fd and
793         add new arg FOR_WRITE.  Change callers to pass new arg.
794
795 2007-06-24  Werner Koch  <wk@g10code.com>
796
797         * gpgsm.c (open_es_fwrite): Avoid the dup by using the new
798         es_fdopen_nc().
799
800 2007-06-21  Werner Koch  <wk@g10code.com>
801
802         * certreqgen-ui.c: New.
803         * gpgsm.c (main): Let --gen-key call it.
804         * certreqgen.c (gpgsm_genkey): Add optional IN_STREAM arg and
805         adjusted caller.
806
807         * gpgsm.h (ctrl_t): Remove.  It is now declared in ../common/util.h.
808
809         * call-agent.c (start_agent): Factored almost all code out to
810         ../common/asshelp.c.
811
812 2007-06-20  Werner Koch  <wk@g10code.com>
813
814         * call-agent.c (start_agent) [W32]: Start the agent on the fly.
815
816 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
817
818         * gpgsm.c (main): Percent escape output of --gpgconf-list.
819
820 2007-06-14  Werner Koch  <wk@g10code.com>
821
822         * call-agent.c (start_agent): Use gnupg_module_name.
823         * call-dirmngr.c (start_dirmngr): Ditto.
824         * export.c (export_p12): Ditto.
825         * import.c (parse_p12): Ditto.
826         * gpgsm.c (run_protect_tool): Ditto.
827
828 2007-06-12  Werner Koch  <wk@g10code.com>
829
830         * gpgsm.c (main): Replace some calls by init_common_subsystems.
831         (main): Use gnupg_datadir.
832         * qualified.c (read_list): Use gnupg-datadir.
833
834 2007-06-11  Werner Koch  <wk@g10code.com>
835
836         * Makefile.am (common_libs): Use libcommaonstd macr.
837
838         * gpgsm.c (main) [W32]: Call pth_init.
839
840 2007-06-06  Werner Koch  <wk@g10code.com>
841
842         * qualified.c (gpgsm_not_qualified_warning) [!ENABLE_NLS]: Do not
843         define orig_codeset.
844         * certdump.c (gpgsm_format_keydesc) [!ENABLE_NLS]: Do not define
845         orig_codeset.
846         (format_name_writer): Define only if funopen et al is available.
847
848         * gpgsm.c (i18n_init): Remove.
849
850 2007-05-29  Werner Koch  <wk@g10code.com>
851
852         * export.c (gpgsm_p12_export): Print passphrase encoding info only
853         in PEM mode.
854
855 2007-05-18  Marcus Brinkmann  <marcus@g10code.de>
856
857         * qualified.c (gpgsm_qualified_consent,
858         gpgsm_not_qualified_warning): Free ORIG_CODESET on error.
859         * certdump.c (gpgsm_format_keydesc): Likewise.
860
861 2007-05-07  Werner Koch  <wk@g10code.com>
862
863         * certcheck.c (MY_GCRY_PK_ECDSA): New.
864
865 2007-04-20  Werner Koch  <wk@g10code.com>
866
867         * gpgsm.c (main): Parameterize failed versions check messages.
868
869 2007-04-19  Werner Koch  <wk@g10code.com>
870
871         * certcheck.c (do_encode_md): Add arg PKEY.  Add support for DSA2
872         and all ECDSA sizes.
873         (get_dsa_qbits): New.
874         (pk_algo_from_sexp): A key will never contain ecdsa as algorithm,
875         so remove that.
876
877 2007-04-18  Werner Koch  <wk@g10code.com>
878
879         * certcheck.c (do_encode_md): Support 160 bit ECDSA.
880
881 2007-04-13  Werner Koch  <wk@g10code.com>
882
883         * call-agent.c (start_agent): Don't use log_error when using the
884         fallback hack to start the agent.  This is bug 782.
885
886 2007-03-20  Werner Koch  <wk@g10code.com>
887
888         * fingerprint.c (gpgsm_get_fingerprint): Add caching.
889         (gpgsm_get_fingerprint_string): Use bin2hexcolon().
890         (gpgsm_get_fingerprint_hexstring): Use bin2hex and allocate only
891         as much memory as required.
892         (gpgsm_get_keygrip_hexstring): Use bin2hex.
893
894         * certchain.c (gpgsm_validate_chain): Keep track of the
895         certificate chain and reset the ephemeral flags.
896         * keydb.c (keydb_set_cert_flags): New args EPHEMERAL and MASK.
897         Changed caller to use a mask of ~0.  Return a proper error code if
898         the certificate is not available.
899
900         * gpgsm.c: Add option --p12-charset.
901         * gpgsm.h (struct opt): Add p12_charset.
902         * export.c (popen_protect_tool): Use new option.
903
904 2007-03-19  Werner Koch  <wk@g10code.com>
905
906         Changes to let export and key listing use estream to help systems
907         without funopen.
908
909         * keylist.c: Use estream in place of stdio functions.
910         * gpgsm.c (open_es_fwrite): New.
911         (main): Use it for the list commands.
912         * server.c (data_line_cookie_functions): New.
913         (data_line_cookie_write, data_line_cookie_close): New.
914         (do_listkeys): Use estream.
915
916         * certdump.c (gpgsm_print_serial): Changed to use estream.
917         (gpgsm_print_time): Ditto.
918         (pretty_es_print_sexp): New.
919         (gpgsm_es_print_name): New.
920         (print_dn_part): New arg STREAM.  Changed all callers.
921         (print_dn_parts): Ditto.
922         * certchain.c (gpgsm_validate_chain): Changed FP to type
923         estream_t.
924         (do_list, unknown_criticals, allowed_ca, check_cert_policy)
925         (is_cert_still_valid): Ditto.
926
927         * export.c (gpgsm_export): New arg STREAM.
928         (do_putc, do_fputs): New.
929         (print_short_info): Allow printing to optional STREAM.
930         * server.c (cmd_export): Use stream.
931         * base64.c (do_putc, do_fputs): New.
932         (base64_writer_cb, base64_finish_write): Let them cope with an
933         alternate output function.
934         (plain_writer_cb): New.
935         (gpgsm_create_writer): New arg STREAM and call plain_writer_cb for
936         binary output to an estream.  Changed call callers.
937
938 2007-01-31  Werner Koch  <wk@g10code.com>
939
940         * gpgsm.c (main): Let --gen-key print a more informative error
941         message.
942
943 2007-01-25  Werner Koch  <wk@g10code.com>
944
945         * Makefile.am (gpgsm_LDADD): Add LIBICONV.  Noted by Billy Halsey.
946
947 2007-01-05  Werner Koch  <wk@g10code.com>
948
949         * certchain.c (unknown_criticals): Add subjectAltName.
950
951 2006-12-21  Werner Koch  <wk@g10code.com>
952
953         * gpgsm.c: Comment mtrace feature.
954
955 2006-12-21  Marcus Brinkmann  <marcus@g10code.de>
956
957         * certchain.c (gpgsm_basic_cert_check): Release SUBJECT.
958
959         * encrypt.c (encrypt_dek): Release S_CIPH.
960
961 2006-12-20  Marcus Brinkmann  <marcus@g10code.de>
962
963         * server.c (gpgsm_server): Release CTRL->server_local.
964
965         * base64.c: Add new members READER and WRITER in union U2.
966         (gpgsm_create_reader): Initialise CTX->u2.reader.
967         (gpgsm_destroy_reader): Invoke ksba_reader_release.  Return early
968         if CTX is NULL.
969         (gpgsm_create_writer): Initialise CTX->u2.writer.
970         (gpgsm_destroy_writer): Invoke ksba_writer_release.  Return early
971         if CTX is NULL.
972
973 2006-12-18  Marcus Brinkmann  <marcus@g10code.de>
974
975         * fingerprint.c (gpgsm_get_fingerprint): Close MD.
976
977 2006-11-24  Werner Koch  <wk@g10code.com>
978
979         * certdump.c (parse_dn_part): Take '#' as a special character only
980         at the beginning of a string.
981
982 2006-11-21  Werner Koch  <wk@g10code.com>
983
984         * certdump.c (my_funopen_hook_ret_t): New.
985         (format_name_writer): Use it for the return value.
986
987 2006-11-14  Werner Koch  <wk@g10code.com>
988
989         * server.c (skip_options): Skip leading spaces.
990         (has_option): Honor "--".
991         (cmd_export): Add option --data to do an inline export.  Skip all
992         options.
993
994         * certdump.c (gpgsm_fpr_and_name_for_status): New.
995         * verify.c (gpgsm_verify): Use it to print correct status messages.
996
997 2006-11-11  Werner Koch  <wk@g10code.com>
998
999         * server.c (skip_options): New.
1000
1001 2006-10-24  Marcus Brinkmann  <marcus@g10code.de>
1002
1003         * Makefile.am (AM_CFLAGS): Add $(LIBASSUAN_CFLAGS).
1004
1005 2006-10-23  Werner Koch  <wk@g10code.com>
1006
1007         * gpgsm.c (main): Remap common cipher algo names to their OIDs.
1008         (main): New command --gpgconf-test.
1009
1010 2006-10-20  Werner Koch  <wk@g10code.com>
1011
1012         * keydb.c (classify_user_id): Parse keygrip for the '&' identifier.
1013
1014 2006-10-18  Werner Koch  <wk@g10code.com>
1015
1016         * keylist.c (list_cert_raw): Also test for GPG_ERR_NO_VALUE when
1017         testing for GPG_ERR_NO_DATA.
1018         * certlist.c (cert_usage_p, gpgsm_find_cert): Ditto.
1019         * certchain.c (check_cert_policy): Ditto.
1020
1021         * keylist.c (list_cert_std, list_cert_raw): Print "none" for no
1022         chain length available.
1023
1024 2006-10-17  Werner Koch  <wk@g10code.com>
1025
1026         * gpgsm.c: No need for pth.h.
1027         (main): or to init it. It used to be hack for W32.
1028
1029         * sign.c (gpgsm_get_default_cert): Changed to return only
1030         certificates usable for signing.
1031
1032 2006-10-16  Werner Koch  <wk@g10code.com>
1033
1034         * certchain.c (already_asked_marktrusted)
1035         (set_already_asked_marktrusted): New.
1036         (gpgsm_validate_chain) <not trusted>: Keep track of certificates
1037         we already asked for.
1038
1039 2006-10-11  Werner Koch  <wk@g10code.com>
1040
1041         * certreqgen.c (proc_parameters, create_request): Allow for
1042         creation directly from a card.
1043         * call-agent.c (gpgsm_agent_readkey): New arg FROMCARD.
1044         (gpgsm_scd_pksign): New.
1045
1046 2006-10-06  Werner Koch  <wk@g10code.com>
1047
1048         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
1049         (gpgsm_LDADD): Ditto.
1050
1051 2006-10-05  Werner Koch  <wk@g10code.com>
1052
1053         * certcheck.c (do_encode_md): Check that the has algo is valid.
1054
1055 2006-10-02  Marcus Brinkmann  <marcus@g10code.de>
1056
1057         * server.c (register_commands): New commands DUMPKEYS and
1058         DUMPSECRETKEYS.
1059         (cmd_dumpkeys, cmd_dumpsecretkeys): New functions.
1060         (option_handler): Support with-key-data option.
1061
1062 2006-09-26  Werner Koch  <wk@g10code.com>
1063
1064         * certchain.c (gpgsm_validate_chain): More changes for the relax
1065         feature.  Use certificate reference counting instead of the old
1066         explicit tests. Added a missing free.
1067
1068 2006-09-25  Werner Koch  <wk@g10code.com>
1069
1070         * gpgsm.h (struct rootca_flags_s): New.
1071         * call-agent.c (istrusted_status_cb): New.
1072         (gpgsm_agent_istrusted): New arg ROOTCA_FLAGS.
1073         * keylist.c (list_cert_colon): Use dummy for new arg.
1074         * certchain.c (gpgsm_validate_chain): Make use of the relax flag
1075         for root certificates.
1076         (unknown_criticals): Ignore a GPG_ERR_NO_VALUE.
1077
1078 2006-09-20  Werner Koch  <wk@g10code.com>
1079
1080         * gpgsm.c: Add alias command --dump-cert.
1081
1082         * Makefile.am:  Changes to allow parallel make runs.
1083
1084 2006-09-18  Werner Koch  <wk@g10code.com>
1085
1086         * gpgsm.c (main): Use this to import standard certificates.
1087         * keydb.c (keydb_add_resource): New arg AUTO_CREATED.
1088
1089 2006-09-14  Werner Koch  <wk@g10code.com>
1090
1091         Replaced all call gpg_error_from_errno(errno) by
1092         gpg_error_from_syserror().
1093
1094 2006-09-13  Werner Koch  <wk@g10code.com>
1095
1096         * keylist.c (list_internal_keys): Print marker line to FP and not
1097         to stdout.
1098
1099         * gpgsm.c (main): All list key list commands now make ose of
1100         --output. Cleaned up calls to list modes.  New command
1101         --dump-chain.  Renamed --list-sigs to --list-chain and added an
1102         alias for the old one.
1103
1104         * server.c (cmd_message): Changed to use assuan_command_parse_fd.
1105         (option_handler): New option list-to-output.
1106         (do_listkeys): Use it.
1107
1108 2006-09-06  Werner Koch  <wk@g10code.com>
1109
1110         * gpgsm.h (OUT_OF_CORE): Removed and changed all callers to
1111         out_of_core.
1112         (CTRL): Removed and changed everywhere to ctrl_t.
1113         (CERTLIST): Ditto.
1114
1115         Replaced all Assuan error codes by libgpg-error codes.  Removed
1116         all map_to_assuan_status and map_assuan_err.
1117
1118         * gpgsm.c (main): Call assuan_set_assuan_err_source to have Assuan
1119         switch to gpg-error codes.
1120         * server.c (set_error): Adjusted.
1121
1122 2006-08-29  Werner Koch  <wk@g10code.com>
1123
1124         * call-agent.c (gpgsm_agent_pkdecrypt): Allow decryption using
1125         complete S-expressions as implemented by the current gpg-agent.
1126
1127         * gpgsm.c (main): Implement --output for encrypt, decrypt, sign
1128         and export.
1129
1130 2006-07-03  Werner Koch  <wk@g10code.com>
1131
1132         * certreqgen.c (proc_parameters): Print the component label of a
1133         faulty DN.
1134
1135 2006-06-26  Werner Koch  <wk@g10code.com>
1136
1137         * certdump.c (gpgsm_cert_log_name): New.
1138         * certchain.c (is_cert_still_valid): Log the name of the certificate.
1139
1140 2006-06-20  Werner Koch  <wk@g10code.com>
1141
1142         * gpgsm.c (gpgsm_init_default_ctrl): Take care of the command line
1143         option --include-certs.
1144
1145         * keylist.c (list_cert_raw): Print the certid.
1146
1147 2006-05-23  Werner Koch  <wk@g10code.com>
1148
1149         * keydb.c (hextobyte): Deleted as it is now defined in jnlib.
1150
1151         * Makefile.am (gpgsm_LDADD): Include ZLIBS.
1152
1153 2006-05-19  Marcus Brinkmann  <marcus@g10code.de>
1154
1155         * keydb.c (keydb_insert_cert): Do not lock here, but only check if
1156         it is locked.
1157         (keydb_store_cert): Lock here.
1158
1159         * keydb.h (keydb_delete): Accept new argument UNLOCK.
1160         * keydb.c (keydb_delete): Likewise.  Only unlock if this is set.
1161         * delete.c (delete_one): Add new argument to invocation of
1162         keydb_delete.
1163
1164 2006-05-15  Werner Koch  <wk@g10code.com>
1165
1166         * keylist.c (print_names_raw): Sanitize URI.
1167
1168 2006-03-21  Werner Koch  <wk@g10code.com>
1169
1170         * certchain.c (get_regtp_ca_info): New.
1171         (allowed_ca): Use it.
1172
1173 2006-03-20  Werner Koch  <wk@g10code.com>
1174
1175         * qualified.c (gpgsm_is_in_qualified_list): New optional arg COUNTRY.
1176
1177 2006-02-17  Werner Koch  <wk@g10code.com>
1178
1179         * call-dirmngr.c (start_dirmngr): Print name of dirmngr to be started.
1180
1181 2005-11-23  Werner Koch  <wk@g10code.com>
1182
1183         * gpgsm.h: New member QUALSIG_APPROVAL.
1184         * sign.c (gpgsm_sign): Print a warning if a certificate is not
1185         qualified.
1186         * qualified.c (gpgsm_qualified_consent): Include a note that this
1187         is not approved software.
1188         (gpgsm_not_qualified_warning): New.
1189         * gpgsm.c (main): Prepared to print a note whether the software
1190         has been approved.
1191
1192 2005-11-13  Werner Koch  <wk@g10code.com>
1193
1194         * call-agent.c (gpgsm_agent_get_confirmation): New.
1195
1196         * keylist.c (list_cert_std): Print qualified status.
1197         * qualified.c: New.
1198         * certchain.c (gpgsm_validate_chain): Check for qualified
1199         certificates.
1200
1201         * certchain.c (gpgsm_basic_cert_check): Release keydb handle when
1202         no-chain-validation is used.
1203
1204 2005-11-11  Werner Koch  <wk@g10code.com>
1205
1206         * keylist.c (print_capabilities): Print is_qualified status.
1207
1208 2005-10-28  Werner Koch  <wk@g10code.com>
1209
1210         * certdump.c (pretty_print_sexp): New.
1211         (gpgsm_print_name2): Use it here.  This allows proper printing of
1212         DNS names as used with server certificates.
1213
1214 2005-10-10  Werner Koch  <wk@g10code.com>
1215
1216         * keylist.c: Add pkaAdress OID as reference.
1217
1218 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
1219
1220         * Makefile.am (gpgsm_LDADD): Add ../gl/libgnu.a after
1221         ../common/libcommon.a.
1222
1223 2005-09-13  Werner Koch  <wk@g10code.com>
1224
1225         * verify.c (gpgsm_verify): Print a note if the unknown algorithm
1226         is MD2.
1227         * sign.c (gpgsm_sign): Ditto.
1228         * certcheck.c (gpgsm_check_cert_sig): Ditto.
1229
1230 2005-09-08  Werner Koch  <wk@g10code.com>
1231
1232         * export.c (popen_protect_tool): Add option --have-cert.  We
1233         probably lost this option with 1.9.14 due to restructuring of
1234         export.c.
1235
1236 2005-07-21  Werner Koch  <wk@g10code.com>
1237
1238         * gpgsm.c (main): New options --no-log-file and --debug-none.
1239
1240         * certreqgen.c (get_parameter, get_parameter_value): Add SEQ arg
1241         to allow enumeration.  Changed all callers.
1242         (create_request): Process DNS and URI parameters.
1243
1244 2005-07-20  Werner Koch  <wk@g10code.com>
1245
1246         * keylist.c (email_kludge): Reworked.
1247
1248         * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
1249         arg to unsigned.
1250         * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
1251
1252 2005-07-19  Werner Koch  <wk@g10code.com>
1253
1254         * fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
1255         Bug accidently introduced while solving the #$%^& gcc
1256         signed/unsigned char* warnings.
1257
1258 2005-06-15  Werner Koch  <wk@g10code.com>
1259
1260         * delete.c (delete_one): Changed FPR to unsigned.
1261         * encrypt.c (encrypt_dek): Made ENCVAL unsigned.
1262         (gpgsm_encrypt): Ditto.
1263         * sign.c (gpgsm_sign): Made SIGVAL unsigned.
1264         * base64.c (base64_reader_cb): Need to use some casting to get
1265         around signed/unsigned char* warnings.
1266         * certcheck.c (gpgsm_check_cms_signature): Ditto.
1267         (gpgsm_create_cms_signature): Changed arg R_SIGVAL to unsigned char*.
1268         (do_encode_md): Made NFRAME a size_t.
1269         * certdump.c (gpgsm_print_serial): Fixed signed/unsigned warning.
1270         (gpgsm_dump_serial): Ditto.
1271         (gpgsm_format_serial): Ditto.
1272         (gpgsm_dump_string): Ditto.
1273         (gpgsm_dump_cert): Ditto.
1274         (parse_dn_part): Ditto.
1275         (gpgsm_print_name2): Ditto.
1276         * keylist.c (email_kludge): Ditto.
1277         * certreqgen.c (proc_parameters, create_request): Ditto.
1278         (create_request): Ditto.
1279         * call-agent.c (gpgsm_agent_pksign): Made arg R_BUF unsigned.
1280         (struct cipher_parm_s): Made CIPHERTEXT unsigned.
1281         (struct genkey_parm_s): Ditto.
1282         * server.c (strcpy_escaped_plus): Made arg S signed char*.
1283         * fingerprint.c (gpgsm_get_fingerprint): Made ARRAY unsigned.
1284         (gpgsm_get_keygrip): Ditto.
1285         * keydb.c (keydb_insert_cert): Made DIGEST unsigned.
1286         (keydb_update_cert): Ditto.
1287         (classify_user_id): Apply cast to signed/unsigned assignment.
1288         (hextobyte): Ditto.
1289
1290 2005-06-01  Werner Koch  <wk@g10code.com>
1291
1292         * misc.c: Include setenv.h.
1293
1294 2005-04-21  Werner Koch  <wk@g10code.com>
1295
1296         * gpgsm.c: New options --{enable,disable}-trusted-cert-crl-check.
1297         * certchain.c (gpgsm_validate_chain): Make use of it.
1298
1299         * certchain.c (gpgsm_validate_chain): Check revocations even for
1300         expired certificates.  This is required because on signature
1301         verification an expired key is fine whereas a revoked one is not.
1302
1303 2005-04-20  Werner Koch  <wk@g10code.com>
1304
1305         * Makefile.am (AM_CFLAGS): Add PTH_CFLAGS as noted by several folks.
1306
1307 2005-04-19  Werner Koch  <wk@g10code.com>
1308
1309         * certchain.c (check_cert_policy): Print the diagnostic for a open
1310         failure of policies.txt only in verbose mode or when it is not
1311         ENOENT.
1312
1313 2005-04-17  Werner Koch  <wk@g10code.com>
1314
1315         * call-dirmngr.c (inq_certificate): Add new inquire SENDCERT_SKI.
1316         * certlist.c (gpgsm_find_cert): Add new arg KEYID and implement
1317         this filter.  Changed all callers.
1318
1319         * certchain.c (find_up_search_by_keyid): New helper.
1320         (find_up): Also try using the AKI.keyIdentifier.
1321         (find_up_external): Ditto.
1322
1323 2005-04-15  Werner Koch  <wk@g10code.com>
1324
1325         * keylist.c (list_cert_raw): Print the subjectKeyIdentifier as
1326         well as the keyIdentifier part of the authorityKeyIdentifier.
1327
1328 2005-03-31  Werner Koch  <wk@g10code.com>
1329
1330         * call-dirmngr.c (start_dirmngr): Use PATHSEP_C instead of ':'.
1331         * call-agent.c (start_agent): Ditto.
1332
1333 2005-03-17  Werner Koch  <wk@g10code.com>
1334
1335         * certcheck.c: Fixed use of DBG_CRYPTO and DBG_X509.
1336
1337         * certchain.c (gpgsm_basic_cert_check): Dump certificates after a
1338         failed gcry_pk_verify.
1339         (find_up): Do an external lookup also for an authorityKeyIdentifier
1340         lookup. Factored external lookup code out to ..
1341         (find_up_external): .. new.
1342
1343 2005-03-03  Werner Koch  <wk@g10code.com>
1344
1345         * Makefile.am (gpgsm_LDADD): Added PTH_LIBS.  Noted by Kazu Yamamoto.
1346
1347 2005-01-13  Werner Koch  <wk@g10code.com>
1348
1349         * certreqgen.c (proc_parameters): Cast printf arg.
1350
1351 2004-12-22  Werner Koch  <wk@g10code.com>
1352
1353         * gpgsm.c (set_binary): New.
1354         (main, open_read, open_fwrite): Use it.
1355
1356 2004-12-21  Werner Koch  <wk@g10code.com>
1357
1358         * gpgsm.c (main): Use default_homedir().
1359         (main) [W32]: Default to disabled CRL checks.
1360
1361 2004-12-20  Werner Koch  <wk@g10code.com>
1362
1363         * call-agent.c (start_agent): Before starting a pipe server start
1364         to connect to a server on the standard socket.  Use PATHSEP
1365         * call-dirmngr.c (start_dirmngr): Use PATHSEP.
1366
1367         * import.c: Include unistd.h for dup and close.
1368
1369 2004-12-18  Werner Koch  <wk@g10code.com>
1370
1371         * gpgsm.h (map_assuan_err): Define in terms of
1372         map_assuan_err_with_source.
1373         * call-agent.c (start_agent): Pass error source to
1374         send_pinentry_environment.
1375
1376 2004-12-17  Werner Koch  <wk@g10code.com>
1377
1378         * call-dirmngr.c (isvalid_status_cb, lookup_status_cb)
1379         (run_command_status_cb): Return cancel status if gpgsm_status
1380         returned an error.
1381
1382         * server.c (gpgsm_status, gpgsm_status2)
1383         (gpgsm_status_with_err_code): Return an error code.
1384         (gpgsm_status2): Always call va_end().
1385
1386 2004-12-15  Werner Koch  <wk@g10code.com>
1387
1388         * call-dirmngr.c (lookup_status_cb): Send progress messages
1389         upstream.
1390         (isvalid_status_cb): Ditto.
1391         (gpgsm_dirmngr_isvalid): Put CTRL into status CB parameters.
1392         (gpgsm_dirmngr_run_command, run_command_status_cb): Pass CTRL to
1393         status callback and handle PROGRESS.
1394
1395         * misc.c (setup_pinentry_env) [W32]: Don't use it.
1396
1397         * gpgsm.c (main) [W32]: Init Pth because we need it for the socket
1398         operations and to resolve libassuan symbols.
1399         (run_protect_tool) [W32]: Disable it.
1400
1401         * Makefile.am (gpgsm_LDADD): Move LIBASSUAN_LIBS more to the end.
1402
1403 2004-12-07  Werner Koch  <wk@g10code.com>
1404
1405         * Makefile.am (gpgsm_LDADD): Put libassuan before jnlib because
1406         under W32 we need the w32 pth code from jnlib.
1407
1408         * misc.c (setup_pinentry_env) [W32]: Disabled.
1409
1410 2004-12-06  Werner Koch  <wk@g10code.com>
1411
1412         * gpgsm.c (run_protect_tool) [_WIN32]: Disabled.
1413
1414         * import.c (popen_protect_tool): Simplified by making use of
1415         gnupg_spawn_process.
1416         (parse_p12): Likewise, using gnupg_wait_process.
1417         * export.c (popen_protect_tool): Ditto.
1418         (export_p12): Ditto.
1419
1420         * keydb.c: Don't define DIRSEP_S here.
1421
1422 2004-12-02  Werner Koch  <wk@g10code.com>
1423
1424         * certchain.c (gpgsm_basic_cert_check): Dump certs with bad
1425         signature for debugging.
1426         (gpgsm_validate_chain): Ditto.
1427
1428 2004-11-29  Werner Koch  <wk@g10code.com>
1429
1430         * gpgsm.c (set_debug): Changed to use a globals DEBUG_LEVEL and
1431         DEBUG_VALUE.
1432         (main): Made DEBUG_LEVEL global and introduced DEBUG_VALUE.  This
1433         now allows to add debug flags on top of a debug-level setting.
1434
1435 2004-11-23  Werner Koch  <wk@g10code.com>
1436
1437         * gpgsm.c: New option --prefer-system-dirmngr.
1438         * call-dirmngr.c (start_dirmngr): Implement this option.
1439
1440 2004-10-22  Werner Koch  <wk@g10code.com>
1441
1442         * certreqgen.c (gpgsm_genkey): Remove the NEW from the certificate
1443         request PEM header.  This is according to the Sphinx standard.
1444
1445 2004-10-08  Moritz Schulte  <moritz@g10code.com>
1446
1447         * certchain.c (gpgsm_validate_chain): Do not use keydb_new() in
1448         case the no_chain_validation-return-short-cut is used (fixes
1449         memory leak).
1450
1451 2004-10-04  Werner Koch  <wk@g10code.com>
1452
1453         * misc.c (setup_pinentry_env): Try hard to set a default for GPG_TTY.
1454
1455 2004-09-30  Werner Koch  <wk@g10code.com>
1456
1457         * gpgsm.c (i18n_init): Always use LC_ALL.
1458
1459         * certdump.c (gpgsm_format_name): Factored code out to ..
1460         (gpgsm_format_name2): .. new.
1461         (gpgsm_print_name): Factored code out to ..
1462         (gpgsm_print_name2): .. new.
1463         (print_dn_part): New arg TRANSLATE.  Changed all callers.
1464         (print_dn_parts): Ditto.
1465         (gpgsm_format_keydesc): Do not translate the SUBJECT; we require
1466         it to stay UTF-8 but we still want to filter out bad control
1467         characters.
1468
1469         * Makefile.am: Adjusted for gettext 0.14.
1470
1471         * keylist.c (list_cert_colon): Make sure that the expired flag has
1472         a higher precedence than the invalid flag.
1473
1474 2004-09-29  Werner Koch  <wk@g10code.com>
1475
1476         * import.c (parse_p12): Write an error status line for bad
1477         passphrases. Add new arg CTRL and changed caller.
1478         * export.c (export_p12): Likewise.
1479
1480 2004-09-14  Werner Koch  <wk@g10code.com>
1481
1482         * certchain.c (gpgsm_validate_chain): Give expired certificates a
1483         higher error precedence and don't bother to check any CRL in that
1484         case.
1485
1486 2004-08-24  Werner Koch  <wk@g10code.de>
1487
1488         * certlist.c: Fixed typo in ocsp OID.
1489
1490 2004-08-18  Werner Koch  <wk@g10code.de>
1491
1492         * certlist.c (gpgsm_cert_use_ocsp_p): New.
1493         (cert_usage_p): Support it here.
1494         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Use it here.
1495
1496 2004-08-17  Marcus Brinkmann  <marcus@g10code.de>
1497
1498         * import.c: Fix typo in last change.
1499
1500 2004-08-17  Werner Koch  <wk@g10code.de>
1501
1502         * import.c (check_and_store): Do a full validation if
1503         --with-validation is set.
1504
1505         * certchain.c (gpgsm_basic_cert_check): Print more detailed error
1506         messages.
1507
1508         * certcheck.c (do_encode_md): Partly support DSA.  Add new arg
1509         PKALGO. Changed all callers to pass it.
1510         (pk_algo_from_sexp): New.
1511
1512 2004-08-16  Werner Koch  <wk@g10code.de>
1513
1514         * gpgsm.c: New option --fixed-passphrase.
1515         * import.c (popen_protect_tool): Pass it to the protect-tool.
1516
1517         * server.c (cmd_encrypt): Use DEFAULT_RECPLIST and not recplist
1518         for encrypt-to keys.
1519
1520 2004-08-06  Werner Koch  <wk@g10code.com>
1521
1522         * gpgsm.c: New option --with-ephemeral-keys.
1523         * keylist.c (list_internal_keys): Set it here.
1524         (list_cert_raw): And indicate those keys.  Changed all our callers
1525         to pass the new arg HD through.
1526
1527 2004-07-23  Werner Koch  <wk@g10code.de>
1528
1529         * certreqgen.c (proc_parameters): Do not allow key length below
1530         1024.
1531
1532 2004-07-22  Werner Koch  <wk@g10code.de>
1533
1534         * keylist.c (list_cert_raw): Print the keygrip.
1535
1536 2004-07-20  Werner Koch  <wk@gnupg.org>
1537
1538         * certchain.c (gpgsm_validate_chain): The trust check didn't
1539         worked anymore, probably due to the changes at 2003-03-04.  Fixed.
1540
1541 2004-06-06  Werner Koch  <wk@gnupg.org>
1542
1543         * certreqgen.c (get_parameter_uint, create_request): Create
1544         an extension for key usage when requested.
1545
1546 2004-05-12  Werner Koch  <wk@gnupg.org>
1547
1548         * gpgsm.c (main): Install emergency_cleanup also as an atexit
1549         handler.
1550
1551         * verify.c (gpgsm_verify): Removed the separate error code
1552         handling for KSBA.  We use shared error codes anyway.
1553
1554         * export.c (export_p12): Removed debugging code.
1555
1556         * encrypt.c (gpgsm_encrypt): Put the session key in to secure memory.
1557
1558 2004-05-11  Werner Koch  <wk@gnupg.org>
1559
1560         * sign.c (gpgsm_sign): Include the error source in the final error
1561         message.
1562         * decrypt.c (gpgsm_decrypt): Ditto.
1563
1564         * fingerprint.c (gpgsm_get_key_algo_info): New.
1565         * sign.c (gpgsm_sign): Don't assume RSA in the status line.
1566         * keylist.c (list_cert_colon): Really print the algorithm and key
1567         length.
1568         (list_cert_raw, list_cert_std): Ditto.
1569         (list_cert_colon): Reorganized to be able to tell whether a root
1570         certificate is trusted.
1571
1572         * gpgsm.c: New option --debug-allow-core-dump.
1573
1574         * gpgsm.h (opt): Add member CONFIG_FILENAME.
1575         * gpgsm.c (main): Use it here instead of the local var.
1576
1577         * server.c (gpgsm_server): Print some additional information with
1578         the hello in verbose mode.
1579
1580 2004-04-30  Werner Koch  <wk@gnupg.org>
1581
1582         * import.c (check_and_store): Do not update the stats for hidden
1583         imports of issuer certs.
1584         (popen_protect_tool): Request statusmessages from the protect-tool.
1585         (parse_p12): Detect status messages. Add new arg STATS and update them.
1586         (print_imported_summary): Include secret key stats.
1587
1588 2004-04-28  Werner Koch  <wk@gnupg.org>
1589
1590         * gpgsm.c: New command --keydb-clear-some-cert-flags.
1591         * keydb.c (keydb_clear_some_cert_flags): New.
1592         (keydb_update_keyblock, keydb_set_flags): Change error code
1593         CONFLICT to NOT_LOCKED.
1594
1595 2004-04-26  Werner Koch  <wk@gnupg.org>
1596
1597         * gpgsm.c (main) <gpgconf>: Do not use /dev/null as default config
1598         filename.
1599
1600         * call-agent.c (gpgsm_agent_pksign, gpgsm_agent_pkdecrypt)
1601         (gpgsm_agent_genkey, gpgsm_agent_istrusted)
1602         (gpgsm_agent_marktrusted, gpgsm_agent_havekey)
1603         (gpgsm_agent_passwd): Add new arg CTRL and changed all callers.
1604         (start_agent): New arg CTRL.  Send progress item when starting a
1605         new agent.
1606         * sign.c (gpgsm_get_default_cert, get_default_signer): New arg
1607         CTRL to be passed down to the agent function.
1608         * decrypt.c (prepare_decryption): Ditto.
1609         * certreqgen.c (proc_parameters, read_parameters): Ditto.
1610         * certcheck.c (gpgsm_create_cms_signature): Ditto.
1611
1612 2004-04-23  Werner Koch  <wk@gnupg.org>
1613
1614         * keydb.c (keydb_add_resource): Try to compress the file on init.
1615
1616         * keylist.c (oidtranstbl): New.  OIDs collected from several sources.
1617         (print_name_raw, print_names_raw, list_cert_raw): New.
1618         (gpgsm_list_keys): Check the dump mode and pass it down as
1619         necessary.
1620
1621 2004-04-22  Werner Koch  <wk@gnupg.org>
1622
1623         * gpgsm.c (main): New commands --dump-keys, --dump-external-keys,
1624         --dump-secret-keys.
1625
1626 2004-04-13  Werner Koch  <wk@gnupg.org>
1627
1628         * misc.c (setup_pinentry_env): New.
1629         * import.c (popen_protect_tool): Call it.
1630         * export.c (popen_protect_tool): Call it.
1631
1632 2004-04-08  Werner Koch  <wk@gnupg.org>
1633
1634         * decrypt.c (gpgsm_decrypt): Return GPG_ERR_NO_DATA if it is not a
1635         encrypted message.
1636
1637 2004-04-07  Werner Koch  <wk@gnupg.org>
1638
1639         * gpgsm.c: New option --force-crl-refresh.
1640         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Pass option to dirmngr.
1641
1642 2004-04-05  Werner Koch  <wk@gnupg.org>
1643
1644         * server.c (get_status_string): Add STATUS_NEWSIG.
1645         * verify.c (gpgsm_verify): Print STATUS_NEWSIG for each signature.
1646
1647         * certchain.c (gpgsm_validate_chain) <gpgsm_cert_use_cer_p>: Do
1648         not just warn if a cert is not suitable; bail out immediately.
1649
1650 2004-04-01  Werner Koch  <wk@gnupg.org>
1651
1652         * call-dirmngr.c (isvalid_status_cb): New.
1653         (unhexify_fpr): New. Taken from ../g10/call-agent.c
1654         (gpgsm_dirmngr_isvalid): Add new arg CTRL, changed caller to pass
1655         it thru.  Detect need to check the respondert cert and do that.
1656         * certchain.c (gpgsm_validate_chain): Add new arg FLAGS.  Changed
1657         all callers.
1658
1659 2004-03-24  Werner Koch  <wk@gnupg.org>
1660
1661         * sign.c (gpgsm_sign): Include a short list of capabilities.
1662
1663 2004-03-17  Werner Koch  <wk@gnupg.org>
1664
1665         * gpgsm.c (main) <gpgconf>: Fixed default value quoting.
1666
1667 2004-03-16  Werner Koch  <wk@gnupg.org>
1668
1669         * gpgsm.c (main): Implemented --gpgconf-list.
1670
1671 2004-03-15  Werner Koch  <wk@gnupg.org>
1672
1673         * keylist.c (list_cert_colon): Hack to set the expired flag.
1674
1675 2004-03-09  Werner Koch  <wk@gnupg.org>
1676
1677         * gpgsm.c (main): Correctly intitialze USE_OCSP flag.
1678
1679         * keydb.c (keydb_delete): s/GPG_ERR_CONFLICT/GPG_ERR_NOT_LOCKED/
1680
1681 2004-03-04  Werner Koch  <wk@gnupg.org>
1682
1683         * call-dirmngr.c (gpgsm_dirmngr_isvalid): New arg ISSUER_CERT.
1684
1685         * certchain.c (is_cert_still_valid): New.  Code moved from ...
1686         (gpgsm_validate_chain): ... here because we now need to check at
1687         two places and at a later stage, so that we can pass the issuer
1688         cert down to the dirmngr.
1689
1690 2004-03-03  Werner Koch  <wk@gnupg.org>
1691
1692         * call-agent.c (start_agent): Replaced pinentry setup code by a
1693         call to a new common function.
1694
1695         * certdump.c (gpgsm_format_keydesc): Make sure the string is
1696         returned as utf-8.
1697
1698         * export.c (gpgsm_export): Make sure that we don't export more
1699         than one certificate.
1700
1701 2004-03-02  Werner Koch  <wk@gnupg.org>
1702
1703         * export.c (create_duptable, destroy_duptable)
1704         (insert_duptable): New.
1705         (gpgsm_export): Avoid duplicates.
1706
1707 2004-02-26  Werner Koch  <wk@gnupg.org>
1708
1709         * certchain.c (compare_certs): New.
1710         (gpgsm_validate_chain): Fixed infinite certificate checks after
1711         bad signatures.
1712
1713 2004-02-24  Werner Koch  <wk@gnupg.org>
1714
1715         * keylist.c (list_cert_colon): Print the fingerprint as the
1716         cert-id for root certificates.
1717
1718 2004-02-21  Werner Koch  <wk@gnupg.org>
1719
1720         * keylist.c (list_internal_keys): Return error codes.
1721         (list_external_keys, gpgsm_list_keys): Ditto.
1722         * server.c (do_listkeys): Ditto.
1723
1724         * gpgsm.c (main): Display a key description for --passwd.
1725         * call-agent.c (gpgsm_agent_passwd): New arg DESC.
1726
1727 2004-02-20  Werner Koch  <wk@gnupg.org>
1728
1729         * gpgsm.c (main): New option --debug-ignore-expiration.
1730         * certchain.c (gpgsm_validate_chain): Use it here.
1731
1732         * certlist.c (cert_usage_p): Apply extKeyUsage.
1733
1734 2004-02-19  Werner Koch  <wk@gnupg.org>
1735
1736         * export.c (export_p12, popen_protect_tool)
1737         (gpgsm_p12_export): New.
1738         * gpgsm.c (main): New command --export-secret-key-p12.
1739
1740 2004-02-18  Werner Koch  <wk@gnupg.org>
1741
1742         * gpgsm.c (set_debug): Set the new --debug-level flags.
1743         (main): New option --gpgconf-list.
1744         (main): Do not setup -u and -r keys when not required.
1745         (main): Setup the used character set.
1746
1747         * keydb.c (keydb_add_resource): Print a hint to start the
1748         gpg-agent.
1749
1750 2004-02-17  Werner Koch  <wk@gnupg.org>
1751
1752         * gpgsm.c: Fixed value parsing for --with-validation.
1753         * call-agent.c (start_agent): Ignore an empty GPG_AGENT_INFO.
1754         * call-dirmngr.c (start_dirmngr): Likewise for DIRMNGR_INFO.
1755
1756         * gpgsm.c: New option --with-md5-fingerprint.
1757         * keylist.c (list_cert_std): Print MD5 fpr.
1758
1759         * gpgsm.c: New options --with-validation.
1760         * server.c (option_handler): New option "with-validation".
1761         * keylist.c (list_cert_std, list_internal_keys): New args CTRL and
1762         WITH_VALIDATION. Changed callers to set it.
1763         (list_external_cb, list_external_keys): Pass CTRL to the callback.
1764         (list_cert_colon): Add arg CTRL.  Check validation if requested.
1765         * certchain.c (unknown_criticals, allowed_ca, check_cert_policy)
1766         (gpgsm_validate_chain): New args LISTMODE and FP.
1767         (do_list): New helper for info output.
1768         (find_up): New arg FIND_NEXT.
1769         (gpgsm_validate_chain): After a bad signature try again with other
1770         CA certificates.
1771
1772         * import.c (print_imported_status): New arg NEW_CERT. Print
1773         additional STATUS_IMPORT_OK becuase that is what gpgme expects.
1774         (check_and_store): Always call above function after import.
1775         * server.c (get_status_string): Added STATUS_IMPORT_OK.
1776
1777 2004-02-13  Werner Koch  <wk@gnupg.org>
1778
1779         * certcheck.c (gpgsm_create_cms_signature): Format a description
1780         for use by the pinentry.
1781         * decrypt.c (gpgsm_decrypt): Ditto. Free HEXKEYGRIP.
1782         * certdump.c (format_name_cookie, format_name_writer)
1783         (gpgsm_format_name): New.
1784         (gpgsm_format_serial): New.
1785         (gpgsm_format_keydesc): New.
1786         * call-agent.c (gpgsm_agent_pksign): New arg DESC.
1787         (gpgsm_agent_pkdecrypt): Ditto.
1788
1789         * encrypt.c (init_dek): Check for too weak algorithms.
1790
1791         * import.c (parse_p12, popen_protect_tool): New.
1792
1793         * base64.c (gpgsm_create_reader): New arg ALLOW_MULTI_PEM.
1794         Changed all callers.
1795         (base64_reader_cb): Handle it here.
1796         (gpgsm_reader_eof_seen): New.
1797         (base64_reader_cb): Set a flag for EOF.
1798         (simple_reader_cb): Ditto.
1799
1800 2004-02-12  Werner Koch  <wk@gnupg.org>
1801
1802         * gpgsm.h, gpgsm.c: New option --protect-tool-program.
1803         * gpgsm.c (run_protect_tool): Use it.
1804
1805 2004-02-11  Werner Koch  <wk@gnupg.org>
1806
1807         * Makefile.am (AM_CPPFLAGS): Pass directory constants via -D; this
1808         will allow to override directory names at make time.
1809
1810 2004-02-02  Werner Koch  <wk@gnupg.org>
1811
1812         * import.c (check_and_store): Import certificates even with
1813         missing issuer's cert.  Fixed an "depending on the verbose
1814         setting" bug.
1815
1816         * certchain.c (gpgsm_validate_chain): Mark revoked certs in the
1817         keybox.
1818
1819         * keylist.c (list_cert_colon): New arg VALIDITY; use it to print a
1820         revoked flag.
1821         (list_internal_keys): Retrieve validity flag.
1822         (list_external_cb): Pass 0 as validity flag.
1823         * keydb.c (keydb_get_flags, keydb_set_flags): New.
1824         (keydb_set_cert_flags): New.
1825         (lock_all): Return a proper error code.
1826         (keydb_lock): New.
1827         (keydb_delete): Don't lock but check that it has been locked.
1828         (keydb_update_keyblock): Ditto.
1829         * delete.c (delete_one): Take a lock.
1830
1831 2004-01-30  Werner Koch  <wk@gnupg.org>
1832
1833         * certchain.c (check_cert_policy): Fixed read error checking.
1834         (check_cert_policy): With no critical policies issue only a
1835         warning if the policy file does not exists.
1836
1837         * sign.c (add_certificate_list): Decrement N for the first cert.
1838
1839 2004-01-29  Werner Koch  <wk@gnupg.org>
1840
1841         * certdump.c (parse_dn_part): Map common OIDs to human readable
1842         labels.  Make sure that a value won't get truncated if it includes
1843         a Nul.
1844
1845 2004-01-28  Werner Koch  <wk@gnupg.org>
1846
1847         * certchain.c (gpgsm_validate_chain): Changed the message printed
1848         for an untrusted root certificate.
1849
1850 2004-01-27  Werner Koch  <wk@gnupg.org>
1851
1852         * certdump.c (parse_dn_part): Pretty print the nameDistinguisher OID.
1853         (print_dn_part): Do not delimit multiple RDN by " + ".  Handle
1854         multi-valued RDNs in a special way, i.e. in the order specified by
1855         the certificate.
1856         (print_dn_parts): Simplified.
1857
1858 2004-01-16  Werner Koch  <wk@gnupg.org>
1859
1860         * sign.c (gpgsm_sign): Print an error message on all failures.
1861         * decrypt.c (gpgsm_decrypt): Ditto.
1862
1863 2003-12-17  Werner Koch  <wk@gnupg.org>
1864
1865         * server.c (gpgsm_server): Add arg DEFAULT_RECPLIST.
1866         (cmd_encrypt): Add all enrypt-to marked certs to the list.
1867         * encrypt.c (gpgsm_encrypt): Check that real recipients are
1868         available.
1869         * gpgsm.c (main): Make the --encrypt-to and --no-encrypt-to
1870         options work.  Pass the list of recients to gpgsm_server.
1871         * gpgsm.h (certlist_s): Add field IS_ENCRYPT_TO.
1872         (opt): Add NO_ENCRYPT_TO.
1873         * certlist.c (gpgsm_add_to_certlist): New arg IS_ENCRYPT_TO.
1874         Changed all callers and ignore duplicate entries.
1875         (is_cert_in_certlist): New.
1876         (gpgsm_add_cert_to_certlist): New.
1877
1878         * certdump.c (gpgsm_print_serial): Cleaned up cast use in strtoul.
1879         (gpgsm_dump_serial): Ditto.
1880
1881         * decrypt.c (gpgsm_decrypt): Replaced ERR by RC.
1882
1883 2003-12-16  Werner Koch  <wk@gnupg.org>
1884
1885         * gpgsm.c (main): Set the prefixes for assuan logging.
1886
1887         * sign.c (gpgsm_sign): Add validation checks for the default
1888         certificate.
1889
1890         * gpgsm.c: Add -k as alias for --list-keys and -K for
1891         --list-secret-keys.
1892
1893 2003-12-15  Werner Koch  <wk@gnupg.org>
1894
1895         * encrypt.c (init_dek): Use gry_create_nonce for the IV; there is
1896         not need for real strong random here and it even better protect
1897         the random bits used for the key.
1898
1899 2003-12-01  Werner Koch  <wk@gnupg.org>
1900
1901         * gpgsm.c, gpgsm.h: New options --{enable,disable}-ocsp.
1902         (gpgsm_init_default_ctrl): Set USE_OCSP to the default value.
1903         * certchain.c (gpgsm_validate_chain): Handle USE_OCSP.
1904         * call-dirmngr.c (gpgsm_dirmngr_isvalid): Add arg USE_OCSP and
1905         proceed accordingly.
1906
1907 2003-11-19  Werner Koch  <wk@gnupg.org>
1908
1909         * verify.c (gpgsm_verify): Use "0" instead of an empty string for
1910         the VALIDSIG status.
1911
1912 2003-11-18  Werner Koch  <wk@gnupg.org>
1913
1914         * verify.c (gpgsm_verify): Fixed for changes API of gcry_md_info.
1915
1916         * certchain.c (unknown_criticals): Fixed an error code test.
1917
1918 2003-11-12  Werner Koch  <wk@gnupg.org>
1919
1920         Adjusted for API changes in Libksba.
1921
1922 2003-10-31  Werner Koch  <wk@gnupg.org>
1923
1924         * certchain.c (gpgsm_validate_chain): Changed to use ksba_isotime_t.
1925         * verify.c (strtimestamp_r, gpgsm_verify): Ditto.
1926         * sign.c (gpgsm_sign): Ditto.
1927         * keylist.c (print_time, list_cert_std, list_cert_colon): Ditto.
1928         * certdump.c (gpgsm_print_time, gpgsm_dump_time, gpgsm_dump_cert):
1929         Ditto.
1930
1931 2003-10-25  Werner Koch  <wk@gnupg.org>
1932
1933         * certreqgen.c (read_parameters): Fixed faulty of !spacep().
1934
1935 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
1936
1937         * encrypt.c (encode_session_key): Allocate enough space.  Cast key
1938         byte to unsigned char to prevent sign extension.
1939         (encrypt_dek): Check return value before error.
1940
1941 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
1942
1943         * encrypt.c (encode_session_key): Use new Libgcrypt interface.
1944
1945 2003-07-31  Werner Koch  <wk@gnupg.org>
1946
1947         * Makefile.am (gpgsm_LDADD): Added INTLLIBS.
1948
1949 2003-07-29  Werner Koch  <wk@gnupg.org>
1950
1951         * gpgsm.c (main): Add secmem features and set the random seed file.
1952         (gpgsm_exit): Update the random seed file and enable debug output.
1953
1954 2003-07-27  Werner Koch  <wk@gnupg.org>
1955
1956         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
1957
1958 2003-06-24  Werner Koch  <wk@gnupg.org>
1959
1960         * server.c (gpgsm_status_with_err_code): New.
1961         * verify.c (gpgsm_verify): Use it here instead of the old
1962         tokenizing version.
1963
1964         * verify.c (strtimestamp): Renamed to strtimestamp_r
1965
1966         Adjusted for changes in the libgcrypt API. Some more fixes for the
1967         libgpg-error stuff.
1968
1969 2003-06-04  Werner Koch  <wk@gnupg.org>
1970
1971         * call-agent.c (init_membuf,put_membuf,get_membuf): Removed.
1972         Include new membuf header and changed used type.
1973
1974         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
1975
1976 2003-06-03  Werner Koch  <wk@gnupg.org>
1977
1978         Changed all error codes in all files to the new libgpg-error scheme.
1979
1980         * gpgsm.h: Include gpg-error.h .
1981         * Makefile.am: Link with libgpg-error.
1982
1983 2003-04-29  Werner Koch  <wk@gnupg.org>
1984
1985         * Makefile.am: Use libassuan.  Don't override LDFLAGS anymore.
1986         * server.c (register_commands): Adjust for new Assuan semantics.
1987
1988 2002-12-03  Werner Koch  <wk@gnupg.org>
1989
1990         * call-agent.c (gpgsm_agent_passwd): New.
1991         * gpgsm.c (main): New command --passwd and --call-protect-tool
1992         (run_protect_tool): New.
1993
1994 2002-11-25  Werner Koch  <wk@gnupg.org>
1995
1996         * verify.c (gpgsm_verify): Handle content-type attribute.
1997
1998 2002-11-13  Werner Koch  <wk@gnupg.org>
1999
2000         * call-agent.c (start_agent): Try to use $GPG_TTY instead of
2001         ttyname.  Changed ttyname to test stdin becuase it can be assumed
2002         that output redirection is more common that input redirection.
2003
2004 2002-11-12  Werner Koch  <wk@gnupg.org>
2005
2006         * gpgsm.c: New command --call-dirmngr.
2007         * call-dirmngr.c (gpgsm_dirmngr_run_command)
2008         (run_command_inq_cb,run_command_cb)
2009         (run_command_status_cb): New.
2010
2011 2002-11-11  Werner Koch  <wk@gnupg.org>
2012
2013         * certcheck.c (gpgsm_check_cms_signature): Don't double free
2014         s_sig but free s_pkey at leave.
2015
2016 2002-11-10  Werner Koch  <wk@gnupg.org>
2017
2018         * gpgsm.c: Removed duplicate --list-secret-key entry.
2019
2020 2002-09-19  Werner Koch  <wk@gnupg.org>
2021
2022         * certcheck.c (gpgsm_check_cert_sig): Add cert hash debugging.
2023
2024         * certchain.c (find_up): Print info when the cert was not found
2025         by the autorithyKeyIdentifier.
2026
2027 2002-09-03  Werner Koch  <wk@gnupg.org>
2028
2029         * gpgsm.c (main): Disable the internal libgcrypt locking.
2030
2031 2002-08-21  Werner Koch  <wk@gnupg.org>
2032
2033         * import.c (print_imported_summary): Cleaned up.  Print new
2034         not_imported value.
2035         (check_and_store): Update non_imported counter.
2036         (print_import_problem): New.
2037         (check_and_store): Print error status message.
2038         * server.c (get_status_string): Added STATUS_IMPORT_PROBLEM.
2039
2040 2002-08-20  Werner Koch  <wk@gnupg.org>
2041
2042         * gpgsm.c (main): Use the log file only in server mode.
2043
2044         * import.c (print_imported_summary): New.
2045         (check_and_store): Update the counters, take new argument.
2046         (import_one): Factored out core of gpgsm_import.
2047         (gpgsm_import): Print counters.
2048         (gpgsm_import_files): New.
2049         * gpgsm.c (main): Use the new function for import.
2050
2051 2002-08-19  Werner Koch  <wk@gnupg.org>
2052
2053         * decrypt.c (gpgsm_decrypt): Return a better error status token.
2054         * verify.c (gpgsm_verify): Don't error on messages with no signing
2055         time or no message digest.  This is only the case for messages
2056         without any signed attributes.
2057
2058 2002-08-16  Werner Koch  <wk@gnupg.org>
2059
2060         * certpath.c: Renamed to ..
2061         * certchain.c: this. Renamed all all other usages of "path" in the
2062         context of certificates to "chain".
2063
2064         * call-agent.c (learn_cb): Special treatment when the issuer
2065         certificate is missing.
2066
2067 2002-08-10  Werner Koch  <wk@gnupg.org>
2068
2069         * Makefile.am (INCLUDES): Add definition for localedir.
2070
2071         * keylist.c (list_cert_colon): Print the short fingerprint in the
2072         key ID field.
2073         * fingerprint.c (gpgsm_get_short_fingerprint): New.
2074         * verify.c (gpgsm_verify): Print more verbose info for a good
2075         signature.
2076
2077 2002-08-09  Werner Koch  <wk@gnupg.org>
2078
2079         * decrypt.c (prepare_decryption): Hack to detected already
2080         unpkcsedone keys.
2081
2082         * gpgsm.c (emergency_cleanup): New.
2083         (main): Initialize the signal handler.
2084
2085         * sign.c (gpgsm_sign): Reset the hash context for subsequent
2086         signers and release it at the end.
2087
2088 2002-08-05  Werner Koch  <wk@gnupg.org>
2089
2090         * server.c (cmd_signer): New command "SIGNER"
2091         (register_commands): Register it.
2092         (cmd_sign): Pass the signer list to gpgsm_sign.
2093         * certlist.c (gpgsm_add_to_certlist): Add SECRET argument, check
2094         for secret key if set and changed all callers.
2095         * sign.c (gpgsm_sign): New argument SIGNERLIST and implemt
2096         multiple signers.
2097         * gpgsm.c (main): Support more than one -u.
2098
2099         * server.c (cmd_recipient): Return reason code 1 for No_Public_Key
2100         which is actually what gets returned from add_to_certlist.
2101
2102 2002-07-26  Werner Koch  <wk@gnupg.org>
2103
2104         * certcheck.c (gpgsm_check_cert_sig): Implement proper cleanup.
2105         (gpgsm_check_cms_signature): Ditto.
2106
2107 2002-07-22  Werner Koch  <wk@gnupg.org>
2108
2109         * keydb.c (keydb_add_resource): Register a lock file.
2110         (lock_all, unlock_all): Implemented.
2111
2112         * delete.c: New.
2113         * gpgsm.c: Made --delete-key work.
2114         * server.c (cmd_delkeys): New.
2115         (register_commands): New command DELKEYS.
2116
2117         * decrypt.c (gpgsm_decrypt): Print a convenience note when RC2 is
2118         used and a STATUS_ERROR with the algorithm oid.
2119
2120 2002-07-03  Werner Koch  <wk@gnupg.org>
2121
2122         * server.c (gpgsm_status2): Insert a blank between all optional
2123         arguments when using assuan.
2124         * server.c (cmd_recipient): No more need for extra blank in constants.
2125         * import.c (print_imported_status): Ditto.
2126         * gpgsm.c (main): Ditto.
2127
2128 2002-07-02  Werner Koch  <wk@gnupg.org>
2129
2130         * verify.c (gpgsm_verify): Extend the STATUS_BADSIG line with
2131         the fingerprint.
2132
2133         * certpath.c (check_cert_policy): Don't use log_error to print a
2134         warning.
2135
2136         * keydb.c (keydb_store_cert): Add optional ar EXISTED and changed
2137         all callers.
2138         * call-agent.c (learn_cb): Print info message only for real imports.
2139
2140         * import.c (gpgsm_import): Moved duplicated code to ...
2141         (check_and_store): new function.  Added magic to import the entire
2142         chain. Print status only for real imports and moved printing code
2143         to ..
2144         (print_imported_status): New.
2145
2146         * call-dirmngr.c (gpgsm_dirmngr_isvalid): print status of dirmngr
2147         call in very verbose mode.
2148
2149         * gpgsm.c (main): Use the same error codes for STATUS_INV_RECP as
2150         with the server mode.
2151
2152 2002-06-29  Werner Koch  <wk@gnupg.org>
2153
2154         * gpgsm.c: New option --auto-issuer-key-retrieve.
2155         * certpath.c (find_up): Try to retrieve an issuer key from an
2156         external source and from the ephemeral key DB.
2157         (find_up_store_certs_cb): New.
2158
2159         * keydb.c (keydb_set_ephemeral): Does now return the old
2160         state.  Call the backend only when required.
2161
2162         * call-dirmngr.c (start_dirmngr): Use GNUPG_DEFAULT_DIRMNGR.
2163         (lookup_status_cb): Issue status only when CTRL is not NULL.
2164         (gpgsm_dirmngr_lookup): Document that CTRL is optional.
2165
2166         * call-agent.c (start_agent): Use GNUPG_DEFAULT_AGENT.
2167
2168 2002-06-28  Werner Koch  <wk@gnupg.org>
2169
2170         * server.c (cmd_recipient): Add more reason codes.
2171
2172 2002-06-27  Werner Koch  <wk@gnupg.org>
2173
2174         * certpath.c (gpgsm_basic_cert_check): Use
2175         --debug-no-path-validation to also bypass this basic check.
2176
2177         * gpgsm.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
2178
2179         * call-agent.c (start_agent): Create and pass the list of FD to
2180         keep in the child to assuan.
2181         * call-dirmngr.c (start_dirmngr): Ditto.
2182
2183 2002-06-26  Werner Koch  <wk@gnupg.org>
2184
2185         * import.c (gpgsm_import): Print an STATUS_IMPORTED.
2186
2187         * gpgsm.c: --debug-no-path-validation does not take an argument.
2188
2189 2002-06-25  Werner Koch  <wk@gnupg.org>
2190
2191         * certdump.c (print_dn_part): Always print a leading slash,
2192         removed NEED_DELIM arg and changed caller.
2193
2194         * export.c (gpgsm_export): Print LFs to FP and not stdout.
2195         (print_short_info): Ditto.  Make use of gpgsm_print_name.
2196
2197         * server.c (cmd_export): Use output-fd instead of data lines; this
2198         was actually the specified way.
2199
2200 2002-06-24  Werner Koch  <wk@gnupg.org>
2201
2202         * gpgsm.c: Removed duped help entry for --list-keys.
2203
2204         * gpgsm.c, gpgsm.h: New option --debug-no-path-validation.
2205
2206         * certpath.c (gpgsm_validate_path): Use it here instead of the
2207         debug flag hack.
2208
2209         * certpath.c (check_cert_policy): Return No_Policy_Match if the
2210         policy file could not be opened.
2211
2212 2002-06-20  Werner Koch  <wk@gnupg.org>
2213
2214         * certlist.c (gpgsm_add_to_certlist): Fixed locating of a
2215         certificate with the required key usage.
2216
2217         * gpgsm.c (main): Fixed a segv when using --outfile without an
2218         argument.
2219
2220         * keylist.c (print_capabilities): Also check for non-repudiation
2221         and data encipherment.
2222         * certlist.c (cert_usage_p): Test for signing and encryption was
2223         swapped.  Add a case for certification usage, handle
2224         non-repudiation and data encipherment.
2225         (gpgsm_cert_use_cert_p): New.
2226         (gpgsm_add_to_certlist): Added a CTRL argument and changed all
2227         callers to pass it.
2228         * certpath.c (gpgsm_validate_path): Use it here to print a status
2229         message. Added a CTRL argument and changed all callers to pass it.
2230         * decrypt.c (gpgsm_decrypt): Print a status message for wrong key
2231         usage.
2232         * verify.c (gpgsm_verify): Ditto.
2233         * keydb.c (classify_user_id): Allow a colon delimited fingerprint.
2234
2235 2002-06-19  Werner Koch  <wk@gnupg.org>
2236
2237         * call-agent.c (learn_cb): Use log_info instead of log_error on
2238         successful import.
2239
2240         * keydb.c (keydb_set_ephemeral): New.
2241         (keydb_store_cert): New are ephemeral, changed all callers.
2242         * keylist.c (list_external_cb): Store cert as ephemeral.
2243         * export.c (gpgsm_export): Kludge to export epehmeral certificates.
2244
2245         * gpgsm.c (main): New command --list-external-keys.
2246
2247 2002-06-17  Werner Koch  <wk@gnupg.org>
2248
2249         * certreqgen.c (read_parameters): Improved error handling.
2250         (gpgsm_genkey): Print error message.
2251
2252 2002-06-13  Werner Koch  <wk@gnupg.org>
2253
2254         * gpgsm.c (main): New option --log-file.
2255
2256 2002-06-12  Werner Koch  <wk@gnupg.org>
2257
2258         * call-dirmngr.c (lookup_status_cb): New.
2259         (gpgsm_dirmngr_lookup): Use the status CB.  Add new arg CTRL and
2260         changed caller to pass it.
2261
2262         * gpgsm.c (open_fwrite): New.
2263         (main): Allow --output for --verify.
2264
2265         * sign.c (hash_and_copy_data): New.
2266         (gpgsm_sign): Implemented normal (non-detached) signatures.
2267         * gpgsm.c (main): Ditto.
2268
2269         * certpath.c (gpgsm_validate_path): Special error handling for
2270         no policy match.
2271
2272 2002-06-10  Werner Koch  <wk@gnupg.org>
2273
2274         * server.c (get_status_string): Add STATUS_ERROR.
2275
2276         * certpath.c (gpgsm_validate_path): Tweaked the error checking to
2277         return error codes in a more sensitive way.
2278         * verify.c (gpgsm_verify): Send status TRUST_NEVER also for a bad
2279         CA certificate and when the certificate has been revoked.  Issue
2280         TRUST_FULLY even when the cert has expired.  Append an error token
2281         to these status lines.  Issue the new generic error status when a
2282         cert was not found and when leaving the function.
2283
2284 2002-06-04  Werner Koch  <wk@gnupg.org>
2285
2286         * gpgsm.c (main): New command --list-sigs
2287         * keylist.c (list_cert_std): New.  Use it whenever colon mode is
2288         not used.
2289         (list_cert_chain): New.
2290
2291 2002-05-31  Werner Koch  <wk@gnupg.org>
2292
2293         * gpgsm.c (main): Don't print the "go ahead" message for an
2294         invalid command.
2295
2296 2002-05-23  Werner Koch  <wk@gnupg.org>
2297
2298         * import.c (gpgsm_import): Add error messages.
2299
2300 2002-05-21  Werner Koch  <wk@gnupg.org>
2301
2302         * keylist.c (list_internal_keys): Renamed from gpgsm_list_keys.
2303         (list_external_keys): New.
2304         (gpgsm_list_keys): Dispatcher for above.
2305         * call-dirmngr.c (lookup_cb,pattern_from_strlist)
2306         (gpgsm_dirmngr_lookup): New.
2307         * server.c (option_handler): Handle new option --list-mode.
2308         (do_listkeys): Handle options and actually use the mode argument.
2309         (get_status_string): New code TRUNCATED.
2310
2311         * import.c (gpgsm_import): Try to identify the type of input and
2312         handle certs-only messages.
2313
2314 2002-05-14  Werner Koch  <wk@gnupg.org>
2315
2316         * gpgsm.c: New option --faked-system-time
2317         * sign.c (gpgsm_sign): And use it here.
2318         * certpath.c (gpgsm_validate_path): Ditto.
2319
2320 2002-05-03  Werner Koch  <wk@gnupg.org>
2321
2322         * certpath.c (gpgsm_validate_path): Added EXPTIME arg and changed
2323         all callers.
2324         * verify.c (gpgsm_verify): Tweaked usage of log_debug and
2325         log_error.  Return EXPSIG status and add expiretime to VALIDSIG.
2326
2327 2002-04-26  Werner Koch  <wk@gnupg.org>
2328
2329         * gpgsm.h (DBG_AGENT,DBG_AGENT_VALUE): Replaced by DBG_ASSUAN_*.
2330         Changed all users.
2331
2332         * call-agent.c (start_agent): Be more silent without -v.
2333         * call-dirmngr.c (start_dirmngr): Ditto.
2334
2335 2002-04-25  Werner Koch  <wk@gnupg.org>
2336
2337         * call-agent.c (start_agent): Make copies of old locales and check
2338         for setlocale.
2339
2340 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
2341
2342         * call-agent.c (start_agent): Fix error handling logic so the
2343         locale is always correctly reset.
2344
2345 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
2346
2347         * server.c (option_handler): Accept display, ttyname, ttytype,
2348         lc_ctype and lc_messages options.
2349         * gpgsm.c (main): Allocate memory for these options.
2350         * gpgsm.h (struct opt): Make corresponding members non-const.
2351
2352 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
2353
2354         * gpgsm.h (struct opt): New members display, ttyname, ttytype,
2355         lc_ctype, lc_messages.
2356         * gpgsm.c (enum cmd_and_opt_values): New members oDisplay,
2357         oTTYname, oTTYtype, oLCctype, oLCmessages.
2358         (opts): New entries for these options.
2359         (main): Handle these new options.
2360         * call-agent.c (start_agent): Set the various display and tty
2361         parameter after resetting.
2362
2363 2002-04-18  Werner Koch  <wk@gnupg.org>
2364
2365         * certreqgen.c (gpgsm_genkey): Write status output on success.
2366
2367 2002-04-15  Werner Koch  <wk@gnupg.org>
2368
2369         * gpgsm.c (main): Check ksba version.
2370
2371         * certpath.c (find_up): New to use the authorithKeyIdentifier.
2372         Use it in all other functions to locate the signing cert..
2373
2374 2002-04-11  Werner Koch  <wk@gnupg.org>
2375
2376         * certlist.c (cert_usable_p): New.
2377         (gpgsm_cert_use_sign_p,gpgsm_cert_use_encrypt_p): New.
2378         (gpgsm_cert_use_verify_p,gpgsm_cert_use_decrypt_p): New.
2379         (gpgsm_add_to_certlist): Check the key usage.
2380         * sign.c (gpgsm_sign): Ditto.
2381         * verify.c (gpgsm_verify): Print a message wehn an unsuitable
2382         certificate was used.
2383         * decrypt.c (gpgsm_decrypt): Ditto
2384         * keylist.c (print_capabilities): Determine values from the cert.
2385
2386 2002-03-28  Werner Koch  <wk@gnupg.org>
2387
2388         * keylist.c (list_cert_colon): Fixed listing of crt record; the
2389         issuer is not at the right place.  Print a chainingID.
2390         * certpath.c (gpgsm_walk_cert_chain): Be a bit more silent on
2391         common errors.
2392
2393 2002-03-21  Werner Koch  <wk@gnupg.org>
2394
2395         * export.c: New.
2396         * gpgsm.c: Add command --export.
2397         * server.c (cmd_export): New.
2398
2399 2002-03-13  Werner Koch  <wk@gnupg.org>
2400
2401         * decrypt.c (gpgsm_decrypt): Allow multiple recipients.
2402
2403 2002-03-12  Werner Koch  <wk@gnupg.org>
2404
2405         * certpath.c (check_cert_policy): Print the policy list.
2406
2407         * verify.c (gpgsm_verify): Detect certs-only message.
2408
2409 2002-03-11  Werner Koch  <wk@gnupg.org>
2410
2411         * import.c (gpgsm_import): Print a notice about imported certificates
2412         when in verbose mode.
2413
2414         * gpgsm.c (main): Print INV_RECP status.
2415         * server.c (cmd_recipient): Ditto.
2416
2417         * server.c (gpgsm_status2): New.  Allows for a list of strings.
2418         (gpgsm_status): Divert to gpgsm_status2.
2419
2420         * encrypt.c (gpgsm_encrypt): Don't use a default key when no
2421         recipients are given.  Print a NO_RECP status.
2422
2423 2002-03-06  Werner Koch  <wk@gnupg.org>
2424
2425         * server.c (cmd_listkeys, cmd_listsecretkeys): Divert to
2426         (do_listkeys): new.  Add pattern parsing.
2427
2428         * keylist.c (gpgsm_list_keys): Handle selection pattern.
2429
2430         * gpgsm.c: New command --learn-card
2431         * call-agent.c (learn_cb,gpgsm_agent_learn): New.
2432
2433         * gpgsm.c (main): Print error messages for non-implemented commands.
2434
2435         * base64.c (base64_reader_cb): Use case insensitive compare of the
2436         Content-Type string to detect plain base-64.
2437
2438 2002-03-05  Werner Koch  <wk@gnupg.org>
2439
2440         * gpgsm.c, gpgsm.h: Add local_user.
2441         * sign.c (gpgsm_get_default_cert): New.
2442         (get_default_signer): Use the new function if local_user is not
2443         set otherwise used that value.
2444         * encrypt.c (get_default_recipient): Removed.
2445         (gpgsm_encrypt): Use gpgsm_get_default_cert.
2446
2447         * verify.c (gpgsm_verify): Better error text for a bad signature
2448         found by comparing the hashs.
2449
2450 2002-02-27  Werner Koch  <wk@gnupg.org>
2451
2452         * call-dirmngr.c, call-agent.c: Add 2 more arguments to all uses
2453         of assuan_transact.
2454
2455 2002-02-25  Werner Koch  <wk@gnupg.org>
2456
2457         * server.c (option_handler): Allow to use -2 for "send all certs
2458         except the root cert".
2459         * sign.c (add_certificate_list): Implement it here.
2460         * certpath.c (gpgsm_is_root_cert): New.
2461
2462 2002-02-19  Werner Koch  <wk@gnupg.org>
2463
2464         * certpath.c (check_cert_policy): New.
2465         (gpgsm_validate_path): And call it from here.
2466         * gpgsm.c (main): New options --policy-file,
2467         --disable-policy-checks and --enable-policy-checks.
2468         * gpgsm.h (opt): Added policy_file, no_policy_checks.
2469
2470 2002-02-18  Werner Koch  <wk@gnupg.org>
2471
2472         * certpath.c (gpgsm_validate_path): Ask the agent to add the
2473         certificate into the trusted list.
2474         * call-agent.c (gpgsm_agent_marktrusted): New.
2475
2476 2002-02-07  Werner Koch  <wk@gnupg.org>
2477
2478         * certlist.c (gpgsm_add_to_certlist): Check that the specified
2479         name identifies a certificate unambiguously.
2480         (gpgsm_find_cert): Ditto.
2481
2482         * server.c (cmd_listkeys): Check that the data stream is available.
2483         (cmd_listsecretkeys): Ditto.
2484         (has_option): New.
2485         (cmd_sign): Fix ambiguousity in option recognition.
2486
2487         * gpgsm.c (main): Enable --logger-fd.
2488
2489         * encrypt.c (gpgsm_encrypt): Increased buffer size for better
2490         performance.
2491
2492         * call-agent.c (gpgsm_agent_pksign): Check the S-Exp received from
2493         the agent.
2494
2495         * keylist.c (list_cert_colon): Filter out control characters.
2496
2497 2002-02-06  Werner Koch  <wk@gnupg.org>
2498
2499         * decrypt.c (gpgsm_decrypt): Bail out after an decryption error.
2500
2501         * server.c (reset_notify): Close input and output FDs.
2502         (cmd_encrypt,cmd_decrypt,cmd_verify,cmd_sign.cmd_import)
2503         (cmd_genkey): Close the FDs and release the recipient list even in
2504         the error case.
2505
2506 2002-02-01  Marcus Brinkmann  <marcus@g10code.de>
2507
2508         * sign.c (gpgsm_sign): Do not release certificate twice.
2509
2510 2002-01-29  Werner Koch  <wk@gnupg.org>
2511
2512         * call-agent.c (gpgsm_agent_havekey): New.
2513         * keylist.c (list_cert_colon): New arg HAVE_SECRET, print "crs"
2514         when we know that the secret key is available.
2515         (gpgsm_list_keys): New arg MODE, check whether a secret key is
2516         available.  Changed all callers.
2517         * gpgsm.c (main): New command --list-secret-keys.
2518         * server.c (cmd_listsecretkeys): New.
2519         (cmd_listkeys): Return secret keys with "crs" record.
2520
2521 2002-01-28  Werner Koch  <wk@gnupg.org>
2522
2523         * certreqgen.c (create_request): Store the email address in the req.
2524
2525 2002-01-25  Werner Koch  <wk@gnupg.org>
2526
2527         * gpgsm.c (main): Disable core dumps.
2528
2529         * sign.c (add_certificate_list): New.
2530         (gpgsm_sign): Add the certificates to the CMS object.
2531         * certpath.c (gpgsm_walk_cert_chain): New.
2532         * gpgsm.h (server_control_s): Add included_certs.
2533         * gpgsm.c: Add option --include-certs.
2534         (gpgsm_init_default_ctrl): New.
2535         (main): Call it.
2536         * server.c (gpgsm_server): Ditto.
2537         (option_handler): Support --include-certs.
2538
2539 2002-01-23  Werner Koch  <wk@gnupg.org>
2540
2541         * certpath.c (gpgsm_validate_path): Print the DN of a missing issuer.
2542         * certdump.c (gpgsm_dump_string): New.
2543         (print_dn): Replaced by above.
2544
2545 2002-01-22  Werner Koch  <wk@gnupg.org>
2546
2547         * certpath.c (unknown_criticals): New.
2548         (allowed_ca): New.
2549         (gpgsm_validate_path): Check validity, CA attribute, path length
2550         and unknown critical extensions.
2551
2552 2002-01-21  Werner Koch  <wk@gnupg.org>
2553
2554         * gpgsm.c: Add option --enable-crl-checks.
2555
2556         * call-agent.c (start_agent): Implemented socket based access.
2557         * call-dirmngr.c (start_dirmngr): Ditto.
2558
2559 2002-01-20  Werner Koch  <wk@gnupg.org>
2560
2561         * server.c (option_handler): New.
2562         (gpgsm_server): Register it with assuan.
2563
2564 2002-01-19  Werner Koch  <wk@gnupg.org>
2565
2566         * server.c (gpgsm_server): Use assuan_deinit_server and setup
2567         assuan logging if enabled.
2568         * call-agent.c (inq_ciphertext_cb): Don't show the session key in
2569         an Assuan log file.
2570
2571         * gpgsm.c (my_strusage): Take bugreport address from configure.ac
2572
2573 2002-01-15  Werner Koch  <wk@gnupg.org>
2574
2575         * import.c (gpgsm_import): Just do a basic cert check before
2576         storing it.
2577         * certpath.c (gpgsm_basic_cert_check): New.
2578
2579         * keydb.c (keydb_store_cert): New.
2580         * import.c (store_cert): Removed and change all caller to use
2581         the new function.
2582         * verify.c (store_cert): Ditto.
2583
2584         * certlist.c (gpgsm_add_to_certlist): Validate the path
2585
2586         * certpath.c (gpgsm_validate_path): Check the trust list.
2587         * call-agent.c (gpgsm_agent_istrusted): New.
2588
2589 2002-01-14  Werner Koch  <wk@gnupg.org>
2590
2591         * call-dirmngr.c (inq_certificate): Changed for new interface semantic.
2592         * certlist.c (gpgsm_find_cert): New.
2593
2594 2002-01-13  Werner Koch  <wk@gnupg.org>
2595
2596         * fingerprint.c (gpgsm_get_certid): Print the serial and not the
2597         hash after the dot.
2598
2599 2002-01-11  Werner Koch  <wk@gnupg.org>
2600
2601         * call-dirmngr.c: New.
2602         * certpath.c (gpgsm_validate_path): Check the CRL here.
2603         * fingerprint.c (gpgsm_get_certid): New.
2604         * gpgsm.c: New options --dirmngr-program and --disable-crl-checks.
2605
2606 2002-01-10  Werner Koch  <wk@gnupg.org>
2607
2608         * base64.c (gpgsm_create_writer): Allow to set the object name
2609
2610 2002-01-08  Werner Koch  <wk@gnupg.org>
2611
2612         * keydb.c (spacep): Removed because it is now in util.c
2613
2614         * server.c (cmd_genkey): New.
2615         * certreqgen.c: New.  The parameter handling code has been taken
2616         from gnupg/g10/keygen.c version 1.0.6.
2617         * call-agent.c (gpgsm_agent_genkey): New.
2618
2619 2002-01-02  Werner Koch  <wk@gnupg.org>
2620
2621         * server.c (rc_to_assuan_status): Removed and changed all callers
2622         to use map_to_assuan_status.
2623
2624 2001-12-20  Werner Koch  <wk@gnupg.org>
2625
2626         * verify.c (gpgsm_verify): Implemented non-detached signature
2627         verification.  Add OUT_FP arg, initialize a writer and changed all
2628         callers.
2629         * server.c (cmd_verify): Pass an out_fp if one has been set.
2630
2631         * base64.c (base64_reader_cb): Try to detect an S/MIME body part.
2632
2633         * certdump.c (print_sexp): Renamed to gpgsm_dump_serial, made
2634         global.
2635         (print_time): Renamed to gpgsm_dump_time, made global.
2636         (gpgsm_dump_serial): Take a real S-Expression as argument and
2637         print the first item.
2638         * keylist.c (list_cert_colon): Ditto.
2639         * keydb.c (keydb_search_issuer_sn): Ditto.
2640         * decrypt.c (print_integer_sexp): Removed and made callers
2641         use gpgsm_dump_serial.
2642         * verify.c (print_time): Removed, made callers use gpgsm_dump_time.
2643
2644 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
2645
2646         * call-agent.c (start_agent): Add new argument to assuan_pipe_connect.
2647
2648 2001-12-18  Werner Koch  <wk@gnupg.org>
2649
2650         * verify.c (print_integer_sexp): Renamed from print_integer and
2651         print the serial number according to the S-Exp rules.
2652         * decrypt.c (print_integer_sexp): Ditto.
2653
2654 2001-12-17  Werner Koch  <wk@gnupg.org>
2655
2656         * keylist.c (list_cert_colon): Changed for new return value of
2657         get_serial.
2658         * keydb.c (keydb_search_issuer_sn): Ditto.
2659         * certcheck.c (gpgsm_check_cert_sig): Likewise for other S-Exp
2660         returingin functions.
2661         * fingerprint.c (gpgsm_get_keygrip): Ditto.
2662         * encrypt.c (encrypt_dek): Ditto
2663         * certcheck.c (gpgsm_check_cms_signature): Ditto
2664         * decrypt.c (prepare_decryption): Ditto.
2665         * call-agent.c (gpgsm_agent_pkdecrypt): Removed arg ciphertextlen,
2666         use KsbaSexp type and calculate the length.
2667
2668         * certdump.c (print_sexp): Remaned from print_integer, changed caller.
2669
2670         * Makefile.am: Use the LIBGCRYPT and LIBKSBA variables.
2671
2672         * fingerprint.c (gpgsm_get_keygrip): Use the new
2673         gcry_pk_get_keygrip to calculate the grip - note the algorithm and
2674         therefore the grip values changed.
2675
2676 2001-12-15  Werner Koch  <wk@gnupg.org>
2677
2678         * certcheck.c (gpgsm_check_cms_signature): Removed the faked-key
2679         kludge.
2680         (gpgsm_create_cms_signature): Removed the commented fake key
2681         code.  This makes the function pretty simple.
2682
2683         * gpgsm.c (main): Renamed the default key database to "keyring.kbx".
2684
2685         * decrypt.c (gpgsm_decrypt): Write STATUS_DECRYPTION_*.
2686         * sign.c (gpgsm_sign): Write a STATUS_SIG_CREATED.
2687
2688 2001-12-14  Werner Koch  <wk@gnupg.org>
2689
2690         * keylist.c (list_cert_colon): Kludge to show an email address
2691         encoded in the subject's DN.
2692
2693         * verify.c (gpgsm_verify): Add hash debug helpers
2694         * sign.c (gpgsm_sign): Ditto.
2695
2696         * base64.c (base64_reader_cb): Reset the linelen when we need to
2697         skip the line and adjusted test; I somehow forgot about DeMorgan.
2698
2699         * server.c (cmd_encrypt,cmd_decrypt,cmd_sign,cmd_verify)
2700         (cmd_import): Close the FDs on success.
2701         (close_message_fd): New.
2702         (input_notify): Setting autodetect_encoding to 0 after initializing
2703         it to 0 is pretty pointless.  Easy to fix.
2704
2705         * gpgsm.c (main): New option --debug-wait n, so that it is
2706         possible to attach gdb when used in server mode.
2707
2708         * sign.c (get_default_signer): Use keydb_classify_name here.
2709
2710 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2711
2712         * call-agent.c (LINELENGTH): Removed.
2713         (gpgsm_agent_pksign): Use ASSUAN_LINELENGTH, not LINELENGTH.
2714         (gpgsm_agent_pkdecrypt): Likewise.
2715
2716 2001-12-13  Werner Koch  <wk@gnupg.org>
2717
2718         * keylist.c (list_cert_colon): Print alternative names of subject
2719         and a few other values.
2720
2721 2001-12-12  Werner Koch  <wk@gnupg.org>
2722
2723         * gpgsm.c (main): New options --assume-{armor,base64,binary}.
2724         * base64.c (base64_reader_cb): Fixed non-autodetection mode.
2725
2726 2001-12-04  Werner Koch  <wk@gnupg.org>
2727
2728         * call-agent.c (read_from_agent): Check for inquire responses.
2729         (request_reply): Handle them using a new callback arg, changed all
2730         callers.
2731         (gpgsm_agent_pkdecrypt): New.
2732
2733 2001-11-27  Werner Koch  <wk@gnupg.org>
2734
2735         * base64.c: New.  Changed all other functions to use this instead
2736         of direct creation of ksba_reader/writer.
2737         * gpgsm.c (main): Set ctrl.auto_encoding unless --no-armor is used.
2738
2739 2001-11-26  Werner Koch  <wk@gnupg.org>
2740
2741         * gpgsm.c: New option --agent-program
2742         * call-agent.c (start_agent): Allow to override the default path
2743         to the agent.
2744
2745         * keydb.c (keydb_add_resource): Create keybox
2746
2747         * keylist.c (gpgsm_list_keys): Fixed non-server keylisting.
2748
2749         * server.c (rc_to_assuan_status): New.  Use it for all commands.
2750
2751
2752  Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2753            2010 Free Software Foundation, Inc.
2754
2755  This file is free software; as a special exception the author gives
2756  unlimited permission to copy and/or distribute it, with or without
2757  modifications, as long as this notice is preserved.
2758
2759  This file is distributed in the hope that it will be useful, but
2760  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2761  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.