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