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