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