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