91aab9e6d02b49e8fb14e52da3f9362963f30133
[gnupg.git] / agent / ChangeLog
1 2010-10-14  Werner Koch  <wk@g10code.com>
2
3         * command.c (cmd_genkey): Add option --no-protection.
4         * genkey.c (agent_genkey): Add arg NO_PROTECTION.
5
6 2010-10-13  Werner Koch  <wk@g10code.com>
7
8         * call-pinentry.c (agent_get_passphrase): Support the close_button.
9
10         * gpg-agent.c (create_server_socket): Switch back to stderr
11         logging if we are not starting a agent.
12
13         * command.c (cmd_passwd, cmd_export_key): Move mapping of
14         GPG_ERR_FULLY_CANCELED to ..
15         (leave_cmd): .. here.
16         (option_handler): Add option agent-awareness.
17         * protect-tool.c (get_passphrase): Take care of
18         GPG_ERR_FULLY_CANCELED.
19         * findkey.c (try_unprotect_cb): Ditto.
20         (unprotect): Remove the fully_canceled hack.
21         * call-pinentry.c (start_pinentry): Ditto.
22         (agent_askpin): Ditto.
23         * pkdecrypt.c (agent_pkdecrypt): Ditto
24         * pksign.c (agent_pksign_do): Ditto.
25         * genkey.c (agent_ask_new_passphrase): Remove arg CANCEL_ALL.
26
27 2010-10-06  Werner Koch  <wk@g10code.com>
28
29         * cvt-openpgp.c (convert_secret_key): Add missing break.
30
31 2010-10-05  Werner Koch  <wk@g10code.com>
32
33         * gpg-agent.c (main): Don't set SSH_AGENT_PID so that ssh-agent -k
34         won't kill out gpg-agent.
35
36 2010-09-30  Werner Koch  <wk@g10code.com>
37
38         * gpg-agent.c (agent_exit): Run cleanup.
39         (cleanup): Run only once.
40
41         * call-pinentry.c (close_button_status_cb): New.
42         (agent_askpin): Add arg R_CANCEL_ALL.  Change all callers.
43         * genkey.c (agent_ask_new_passphrase): Ditto.
44         * findkey.c (unprotect): Return GPG_ERR_FULLY_CANCELED if needed.
45
46         * command.c (cmd_export_key): Add support for OpenPGP keys.
47         * findkey.c (unprotect): Add optional arg R_PASSPHRASE.
48         (agent_key_from_file): Ditto.  Change all callers.
49
50         * findkey.c (unprotect): Do not put the passphrase into the cache
51         if it has been changed.
52
53         * cvt-openpgp.c (convert_to_openpgp, apply_protection)
54         (key_from_sexp): New.
55
56 2010-09-29  Werner Koch  <wk@g10code.com>
57
58         * cvt-openpgp.c (convert_openpgp): Rename to convert_from_openpgp.
59
60         * command.c (has_option): Stop at "--".
61         (has_option_name, option_value): Ditto.
62         (skip_options): Skip initial spaces.
63
64 2010-09-24  Werner Koch  <wk@g10code.com>
65
66         * gpg-agent.c (main, reread_configuration): Always test whether
67         the default configuration file has been created in the meantime.
68         Fixes bug#1285.
69
70 2010-09-17  Werner Koch  <wk@g10code.com>
71
72         * command.c (cmd_havekey): Allow testing of several keygrips.
73
74 2010-09-15  Werner Koch  <wk@g10code.com>
75
76         * protect.c (calculate_mic): Take care of shared secret format.
77
78         * agent.h (PROTECTED_SHARED_SECRET): New.
79
80 2010-09-02  Werner Koch  <wk@g10code.com>
81
82         * cache.c (new_data): Change arg and callers to use a string and
83         explicity return an error code.  We never used raw binary data and
84         thus it is easier to use a string.  Adjust callers.
85         (initialize_module_cache, deinitialize_module_cache): New.
86         (new_data): Encrypt the cached data.
87         (struct cache_item_s): Remove field LOCKCOUNT.  Change all users
88         accordingly.
89         (agent_unlock_cache_entry): Remove.
90         (agent_get_cache): Return an allocated string and remove CACHE_ID.
91         * genkey.c (agent_genkey): Remove cache marker stuff.
92         * findkey.c (unprotect): Ditto.
93         * cvt-openpgp.c (convert_openpgp): Ditto.
94         * command.c (cmd_get_passphrase): Ditto.
95         * gpg-agent.c (main, cleanup): Initialize and deinitialize the
96         cache module.
97
98 2010-09-01  Werner Koch  <wk@g10code.com>
99
100         * call-pinentry.c (start_pinentry): Disable pinentry logging.
101
102         * command.c (cmd_import_key, cmd_genkey, cmd_pksign): Add CACHE
103         handling.
104         * cvt-openpgp.c (convert_openpgp): Add arg CACHE_NONCE and try the
105         cached nonce first.
106         * genkey.c (agent_genkey): Add arg CACHE_NONCE.
107         * cache.c (agent_get_cache): Require user and nonce cache modes
108         to match the requested mode.
109         (agent_put_cache): Ditto.
110         * agent.h (CACHE_MODE_NONCE): New.
111         * pksign.c (agent_pksign_do, agent_pksign): Add arg CACHE_NONCE.
112         * findkey.c (agent_key_from_file): Ditto.
113         (unprotect): Implement it.
114
115 2010-08-31  Werner Koch  <wk@g10code.com>
116
117         * pksign.c (do_encode_dsa): Fix sign problem.
118         * findkey.c (agent_is_dsa_key): Adjust to actual usage.
119
120 2010-08-30  Werner Koch  <wk@g10code.com>
121
122         * protect.c (s2k_hash_passphrase): New public function.
123
124 2010-08-27  Werner Koch  <wk@g10code.com>
125
126         * command.c (cmd_import_key): Support OpenPGP keys.
127         * cvt-openpgp.h, cvt-openpgp.c: New.  Some of the code is based on
128         code taken from g10/seckey-cert.c.
129
130 2010-08-26  Werner Koch  <wk@g10code.com>
131
132         * command-ssh.c (open_control_file): Use estream to create the file.
133
134         * findkey.c (agent_write_private_key): Explicitly create file with
135         mode 600.
136         * gpg-agent.c (main): Ditto.
137         * trustlist.c (agent_marktrusted): Explicitly create file with
138         mode 640.
139
140 2010-08-16  Werner Koch  <wk@g10code.com>
141
142         * gpg-agent.c: Replace remaining printf by es_printf.
143
144 2010-08-11  Werner Koch  <wk@g10code.com>
145
146         * call-pinentry.c (agent_get_passphrase, agent_askpin): Fix
147         setting of confidential flag.
148
149         * call-scd.c (agent_card_scd): Pass assuan comment lines to the
150         caller.
151         (ASSUAN_CONVEY_COMMENTS): Provide replacement if needed.
152
153 2010-08-09  Werner Koch  <wk@g10code.com>
154
155         * Makefile.am (t_common_ldadd): Add NETLIBS for sake of the TCP
156         logging.
157
158 2010-06-24  Werner Koch  <wk@g10code.com>
159
160         * genkey.c (check_passphrase_pattern): Use HANG option for
161         gnupg_wait_progress.  Fixes regression from 2010-06-09.
162
163 2010-06-21  Werner Koch  <wk@g10code.com>
164
165         * protect-tool.c (export_p12_file, import_p12_cert_cb)
166         (import_p12_file, sexp_to_kparms, store_private_key): Remove
167         unused code.
168
169 2010-06-18  Werner Koch  <wk@g10code.com>
170
171         * protect-tool.c (store_private_key, rsa_key_check): Remove.
172
173         * command.c (cmd_export_key): New.
174
175 2010-06-15  Werner Koch  <wk@g10code.com>
176
177         * command.c (cmd_keywrap_key, cmd_import_key): New.
178
179         * genkey.c (agent_genkey, agent_protect_and_store): Factor common
180         code out to...
181         (agent_ask_new_passphrase): .. new.
182
183         * findkey.c (agent_write_private_key): Return GPG_ERR_EEXIST
184         instead of GPG_ERR_GENERAL.
185
186 2010-06-14  Werner Koch  <wk@g10code.com>
187
188         * protect-tool.c: Remove commands --p12-import and --p12-export.
189         * minip12.c, minip12.h: Move to ../sm.
190         * Makefile.am (gpg_protect_tool_SOURCES): Remove them.
191         * preset-passphrase.c: Remove unneeded minip12.h.
192
193         * command.c (cmd_keywrap_key): New.
194
195         * command.c (leave_cmd): New.
196         (cmd_istrusted, cmd_listtrusted, cmd_marktrusted, cmd_pksign)
197         (cmd_pkdecrypt, cmd_genkey, cmd_readkey, cmd_keyinfo)
198         (cmd_get_passphrase, cmd_get_confirmation, cmd_learn)
199         (cmd_passwd, cmd_preset_passphrase, cmd_getval, cmd_putval): Use it.
200
201 2010-05-12  Werner Koch  <wk@g10code.com>
202
203         * preset-passphrase.c (forget_passphrase): Actually implement
204         this.  Fixes bug#1198.
205
206 2010-05-11  Werner Koch  <wk@g10code.com>
207
208         * agent.h (opt): Add field USE_STANDARD_SOCKET.
209         * gpg-agent.c (use_standard_socket): Remove.  Use new option instead.
210
211         * command.c (cmd_killagent, cmd_reloadagent): Provide command also
212         for non-W32 platforms.
213         (cmd_getinfo): New subcommands std_session_env and std_startup_env.
214
215 2010-05-03  Werner Koch  <wk@g10code.com>
216
217         * gpg-agent.c (check_own_socket_thread): Do not release SOCKNAME
218         too early.
219
220 2010-04-30  Werner Koch  <wk@g10code.com>
221
222         * gpg-agent.c (main): Add command --use-standard-socket-p.
223
224 2010-04-26  Werner Koch  <wk@g10code.com>
225
226         * gpg-agent.c (create_server_socket) [W32]: Also check for EEXIST.
227
228 2010-04-19  Werner Koch  <wk@g10code.com>
229
230         * pksign.c (get_dsa_qbits, do_encode_dsa): New.
231         (agent_pksign_do): Detect DSA keys and use do_encode_dsa.
232         * findkey.c (agent_public_key_from_file): Factor some code out to ..
233         (key_parms_from_sexp): New.
234         (agent_is_dsa_key): New.
235
236         * command.c (cmd_sethash): Clear digeest.RAW_VALUE.
237
238 2010-04-14  Werner Koch  <wk@g10code.com>
239
240         * Makefile.am (libexec_PROGRAMS) [W32CE]: Do not build
241         gpg-preset-passphrase for now.
242         (pwquery_libs) [W32CE]: Set to empty.
243
244         * trustlist.c (read_one_trustfile): Use estream.
245
246 2010-04-13  Werner Koch  <wk@g10code.com>
247
248         * findkey.c (read_key_file): Use estream.
249         (agent_write_private_key): Ditto.
250
251 2010-04-07  Werner Koch  <wk@g10code.com>
252
253         * gpg-agent.c (handle_connections) [W32]: Assume that PTh support
254         the handle event.  Use a dummy event for W32CE.
255         (get_agent_scd_notify_event) [W32CE]: Do not build.
256
257         * call-pinentry.c: Remove setenv.h.  Include sysutils.h.
258         (atfork_cb): s/setenv/gnupg_setenv/.
259
260         * gpg-agent.c: Do not include setenv.h.
261         (main): s/unsetenv/gnupg_unsetenv/.
262
263         * protect.c (calibrate_get_time) [W32CE]: Use GetThreadTimes.
264
265 2010-04-06  Werner Koch  <wk@g10code.com>
266
267         * call-scd.c [!HAVE_SIGNAL_H]: Do not include signal.h.
268
269         * findkey.c (agent_write_private_key): s/remove/gnupg_remove/.
270
271         * command-ssh.c (search_control_file): Replace rewind by fseek and
272         clearerr.
273         * genkey.c (check_passphrase_pattern): Ditto.
274
275         * gpg-agent.c [!HAVE_SIGNAL_H]: Do not include signal.h.
276         (remove_socket): s/remove/gnupg_remove/.
277         (create_private_keys_directory): Use gnupg_mkdir.
278
279 2010-03-11  Werner Koch  <wk@g10code.com>
280
281         * gpg-agent.c: Include "asshelp.h".
282         (main): Remove assuan_set_assuan_log_prefix.  Add
283         assuan_set_log_cb.
284         (handle_signal): Disable pth ctrl dumping.
285         (parse_rereadable_options, main): Remove assuan_set_assuan_log_stream.
286         * call-scd.c (start_scd): Remove assuan_set_log_stream.
287
288 2010-03-10  Werner Koch  <wk@g10code.com>
289
290         * Makefile.am (common_libs): Remove libjnlib.a.
291
292         * trustlist.c, protect-tool.c, command-ssh.c: Remove estream.h.
293
294 2010-02-17  Werner Koch  <wk@g10code.com>
295
296         * call-pinentry.c (start_pinentry): Always free OPTSTR.  Send
297         default-xxx strings.
298
299 2010-01-26  Werner Koch  <wk@g10code.com>
300
301         * protect.c (do_encryption): Encode the s2kcount and no not use a
302         static value of 96.
303
304 2009-12-21  Werner Koch  <wk@g10code.com>
305
306         * command.c (cmd_getinfo): Add sub-command s2k_count.
307
308 2009-12-14  Werner Koch  <wk@g10code.com>
309
310         * protect.c (agent_unprotect): Decode the S2K count here and take
311         care of the new unencoded values.  Add a lower limit sanity check.
312         (hash_passphrase): Do not decode here.
313         (get_standard_s2k_count, calibrate_s2k_count): New.
314         (calibrate_get_time, calibrate_elapsed_time): New.
315         (do_encryption): Use get_standard_s2k_count.
316
317 2009-12-08  Werner Koch  <wk@g10code.com>
318
319         * protect.c (agent_unprotect): Avoid compiler warning.
320
321 2009-12-08  Marcus Brinkmann  <marcus@g10code.de>
322
323         * call-pinentry.c (start_pinentry): Convert posix fd to assuan fd.
324         * call-scd.c (start_scd): Likewise.
325
326 2009-12-03  Werner Koch  <wk@g10code.com>
327
328         * gpg-agent.c (set_debug): Allow for numerical debug leveles.  Print
329         active debug flags.
330
331 2009-12-02  Werner Koch  <wk@g10code.com>
332
333         * trustlist.c (read_trustfiles): Store the pointer returned from
334         shrinking the memory and not the orginal one.  Fixes bug#1163.
335         Reported by TAKAHASHI Tamotsu.  Also return correct error after
336         memory failure.
337
338 2009-11-27  Marcus Brinkmann  <marcus@g10code.de>
339
340         * command.c (start_command_handler): Do not call
341         assuan_set_log_stream anymore.
342         * gpg-agent.c (main): But call assuan_set_assuan_log_stream here.
343
344 2009-11-25  Marcus Brinkmann  <marcus@g10code.de>
345
346         * command.c (start_command_handler): Use assuan_fd_t and
347         assuan_fdopen on fds.
348
349 2009-11-05  Marcus Brinkmann  <marcus@g10code.de>
350
351         * call-pinentry.c (start_pinentry): Call assuan_pipe_connect, not
352         assuan_pipe_connect_ext.
353         * command.c (start_command_handler): Change
354         assuan_init_socket_server_ext into assuan_init_socket_server.
355         * call-scd.c (start_scd): Update use of assuan_socket_connect and
356         assuan_pipe_connect.
357         * gpg-agent.c (check_own_socket_thread, check_for_running_agent):
358         Update use of assuan_socket_connect.
359
360 2009-11-04  Werner Koch  <wk@g10code.com>
361
362         * command.c (register_commands): Add help arg to
363         assuan_register_command.  Convert all command comments to help
364         strings.
365
366 2009-11-02  Marcus Brinkmann  <marcus@g10code.de>
367
368         * command.c (reset_notify): Take LINE arg and return error.
369         (register_commands): Use assuan_handler_t type.
370
371 2009-10-16  Marcus Brinkmann  <marcus@g10code.com>
372
373         * gpg_agent_CFLAGS, gpg_agent_LDADD: Use libassuan instead of
374         libassuan-pth.
375         * gpg-agent.c: Invoke ASSUAN_SYSTEM_PTH_IMPL.
376         (main): Call assuan_set_system_hooks and assuan_sock_init.
377         Fix invocation of assuan_socket_connect.
378
379 2009-09-23  Werner Koch  <wk@g10code.com>
380
381         * command.c (register_commands) [HAVE_ASSUAN_SET_IO_MONITOR]:
382         Remove cpp condition.
383         (start_command_handler) [HAVE_ASSUAN_SET_IO_MONITOR]: Ditto.
384
385 2009-09-23  Marcus Brinkmann  <marcus@g10code.de>
386
387         * gpg-agent.c (parse_rereadable_options): Don't set global assuan
388         log file (there ain't one anymore).
389         (main): Update to new API.
390         (check_own_socket_pid_cb): Return gpg_error_t instead of int.
391         (check_own_socket_thread, check_for_running_agent): Create assuan
392         context before connecting to server.
393         * command.c: Include "scdaemon.h" before <assuan.h> because of
394         GPG_ERR_SOURCE_DEFAULT check.
395         (write_and_clear_outbuf): Use gpg_error_t instead of
396         assuan_error_t.
397         (cmd_geteventcounter, cmd_istrusted, cmd_listtrusted)
398         (cmd_marktrusted, cmd_havekey, cmd_sigkey, cmd_setkeydesc)
399         (cmd_sethash, cmd_pksign, cmd_pkdecrypt, cmd_genkey, cmd_readkey)
400         (cmd_keyinfo, cmd_get_passphrase, cmd_clear_passphrase)
401         (cmd_get_confirmation, cmd_learn, cmd_passwd)
402         (cmd_preset_passphrase, cmd_scd, cmd_getval, cmd_putval)
403         (cmd_updatestartuptty, cmd_killagent, cmd_reloadagent)
404         (cmd_getinfo, option_handler): Return gpg_error_t instead of int.
405         (post_cmd_notify): Change type of ERR to gpg_error_t from int.
406         (io_monitor): Add hook argument.  Use symbols for constants.
407         (register_commands): Change return type of HANDLER to gpg_error_t.
408         (start_command_handler): Allocate assuan context before starting
409         server.
410         * call-pinentry.c: Include "scdaemon.h" before <assuan.h> because
411         of GPG_ERR_SOURCE_DEFAULT check.
412         (unlock_pinentry): Call assuan_release instead of
413         assuan_disconnect.
414         (getinfo_pid_cb, getpin_cb): Return gpg_error_t instead of int.
415         (start_pinentry): Allocate assuan context before connecting to
416         server.
417         * call-scd.c (membuf_data_cb, learn_status_cb, get_serialno_cb)
418         (membuf_data_cb, inq_needpin, card_getattr_cb, pass_status_thru)
419         (pass_data_thru): Change return type to gpg_error_t.
420         (start_scd): Allocate assuan context before connecting to server.
421
422 2009-09-04  Marcus Brinkmann  <marcus@g10code.com>
423
424         * command.c (start_command_handler): Add comment about gap in
425         implementation (in dead code), for future reference.
426
427 2009-08-11  Werner Koch  <wk@g10code.com>
428
429         * divert-scd.c (ask_for_card): I18n a prompt string.
430
431 2009-07-06  Werner Koch  <wk@g10code.com>
432
433         * agent.h: Include session-env.h.
434         (opt): Replace most of the startup_xxx fields by a session_env_t.
435         (struct server_control_s): Likewise.
436         * gpg-agent.c (main): Rewrite setting of the startup fields.
437         (handle_connections, main): Allocate SESSION_ENV.
438         (agent_init_default_ctrl, agent_deinit_default_ctrl): Change
439         accordingly.
440         * command.c (option_handler): Ditto.
441         (cmd_updatestartuptty): Change accordingly.  Protect old values
442         from out of core failures.
443         * command-ssh.c (start_command_handler_ssh): Ditto.
444         (start_command_handler_ssh): Replace strdup by xtrystrdup.
445         * call-pinentry.c (atfork_cb): Pass new envrinmnet variables.
446         (start_pinentry): Use session_env stuff.
447         * protect-tool.c (main): Adjust call to gnupg_prepare_get_passphrase.
448
449 2009-06-24  Werner Koch  <wk@g10code.com>
450
451         * genkey.c (agent_protect_and_store): Return RC and not 0.
452         * protect.c (do_encryption): Fix ignored error code from malloc.
453         Reported by Fabian Keil.
454         
455 2009-06-17  Werner Koch  <wk@g10code.com>
456
457         * call-pinentry.c (agent_get_confirmation): Add arg WITH_CANCEL.
458         Change all callers.
459         * trustlist.c (agent_marktrusted): Use WITH_CANCEL
460
461 2009-06-09  Werner Koch  <wk@g10code.com>
462
463         * learncard.c (send_cert_back): Ignore certain error codes.
464
465 2009-06-05  Werner Koch  <wk@g10code.com>
466
467         * protect-tool.c (store_private_key): Fix last change by appending
468         a ".key".
469
470 2009-06-03  Werner Koch  <wk@g10code.com>
471
472         * protect-tool.c: Include estream.h.
473         (store_private_key): Replace stdio streams by estream functions
474         for a portable use of the "x" mode.
475         * trustlist.c: Include estream.h.
476         (agent_marktrusted): Replace stdio stream by estream functions.
477
478         * protect-tool.c (store_private_key): Use bin2hex.      
479
480 2009-06-02  Werner Koch  <wk@g10code.com>
481
482         * gpg-agent.c (main): Run pth_kill after fork.  Fixes bug#1066.
483
484 2009-05-19  Werner Koch  <wk@g10code.com>
485
486         * gpg-agent.c (JNLIB_NEED_AFLOCAL): Define.
487         (create_server_socket): Use SUN_LEN macro.
488
489 2009-05-15  Werner Koch  <wk@g10code.com>
490
491         Fix bug #1053.
492         
493         * agent.h (lookup_ttl_t): New.
494         * findkey.c (unprotect): Add arg LOOKUP_TTL.
495         (agent_key_from_file): Ditto.
496         * pksign.c (agent_pksign_do): Ditto.
497         * command-ssh.c (ttl_from_sshcontrol): New.
498         (data_sign): Pass new function to agent_pksign_do.
499         (search_control_file): Add new arg R_TTL.
500
501 2009-05-14  Werner Koch  <wk@g10code.com>
502
503         * command.c (cmd_get_passphrase): Add option --qualitybar.
504         * call-pinentry.c (agent_askpin): Factor some code out to ...
505         (setup_qualitybar): .. new.
506         (agent_get_passphrase): Add arg WITH_QUALITYBAR and implement it.
507
508 2009-04-14  Marcus Brinkmann  <marcus@g10code.de>
509
510         * call-pinentry.c (agent_get_confirmation): Try SETNOTOK command
511         with pinentry.
512
513 2009-04-01  Werner Koch  <wk@g10code.com>
514
515         * protect-tool.c (pe_opt): New.
516         (opts): Add option --agent-program.  Use ARGPARSE macros.
517         (get_new_passphrase): Remove.
518         (get_passphrase): Use gpg-agent directly. Remove arg OPT_CHECK and
519         change all callers.
520         * Makefile.am (gpg_protect_tool_LDADD): Replace pwquery_libs by
521         LIBASSUAN_LIBS.
522         (gpg_protect_tool_CFLAGS): New.
523
524         * command.c (percent_plus_unescape): Remove.
525         (cmd_putval): Use percent_plus_unescape_inplace.
526         * call-scd.c (unescape_status_string): Remove.
527         (card_getattr_cb): Use percent_plus_unescape.
528         * protect-tool.c (main): Use percent_plus_unescape from common/.
529         (percent_plus_unescape, percent_plus_unescape_string): Remove.
530
531 2009-03-27  Werner Koch  <wk@g10code.com>
532
533         * learncard.c (agent_handle_learn): Add new certtype 111.
534
535 2009-03-26  Werner Koch  <wk@g10code.com>
536
537         * agent.h (MAX_DIGEST_LEN): Change to 64.
538         * command.c (cmd_sethash): Allow digest length of 48 and 64.
539         (cmd_sethash): Allow more hash algos.
540
541         * trustlist.c (reformat_name): New.
542         (agent_marktrusted): Use a reformatted name.  Reload the table
543         before the update and always reload it at the end.
544         (agent_istrusted): Check early for the disabled flag.
545
546 2009-03-25  Werner Koch  <wk@g10code.com>
547
548         * pkdecrypt.c (agent_pkdecrypt): Return a specific error message
549         if the key is not available.
550
551         * gpg-agent.c (main): Print a started message to show the real pid.
552
553 2009-03-20  Werner Koch  <wk@g10code.com>
554
555         * learncard.c (struct kpinfo_cp_parm_s): Add field CTRL.
556         (struct certinfo_cb_parm_s): Ditto.
557         (agent_handle_learn): Set CTRL field.
558         (kpinfo_cb, certinfo_cb): Send progress status.
559
560         * agent.h (agent_write_status): Flag with GNUPG_GCC_A_SENTINEL.
561
562 2009-03-19  Werner Koch  <wk@g10code.com>
563
564         * trustlist.c (struct trustitem_s): Add field DISABLED.
565         (read_one_trustfile): Parse the '!' flag.
566         (agent_istrusted, agent_listtrusted): Check flag.
567         (agent_istrusted): Add arg R_DISABLED.  Change all callers.
568         (agent_marktrusted): Do not ask if flagged as disabled.  Reverse
569         the order of the questions.  Store the disabled flag.
570         
571         * gpg-agent.c (main): Save signal mask and open fds.  Restore mask
572         and close all fds prior to the exec.  Fixes bug#1013.
573
574 2009-03-17  Werner Koch  <wk@g10code.com>
575
576         * command.c (cmd_get_passphrase): Break repeat loop on error.
577         Show error message.
578         (cmd_getinfo): Add subcommand "cmd_has_option".
579         (command_has_option): New.
580
581 2009-03-17  Daiki Ueno  <ueno@unixuser.org>
582
583         * command.c (option_value): New function.
584         (cmd_get_passphrase): Accept new option --repeat, which makes
585         gpg-agent to ask passphrase several times.
586
587 2009-03-06  Werner Koch  <wk@g10code.com>
588
589         * command.c (cmd_keyinfo): New command.
590         (register_commands): Register it.
591         (agent_write_status): Make sure not to print LR or CR.
592         * divert-scd.c (ask_for_card): Factor shadow info parsing out to ...
593         * protect.c (parse_shadow_info): New.
594         * findkey.c (agent_key_from_file): Use make_canon_sexp.
595         (agent_write_private_key, unprotect, read_key_file)
596         (agent_key_available): Use bin2hex.
597         (agent_key_info_from_file): New.
598         (read_key_file): Log no error message for ENOENT.
599
600 2009-03-05  Werner Koch  <wk@g10code.com>
601
602         * divert-scd.c (getpin_cb): Support flag 'P'.  Change max_digits
603         from 8 to 16.  Append a message about keypads.
604         * findkey.c (unprotect): Change max digits to 16.
605
606 2009-03-02  Werner Koch  <wk@g10code.com>
607
608         * command.c (cmd_getinfo): Add subcommand "scd_running".
609
610         * call-scd.c (agent_scd_check_running): New.
611
612         * gpg-agent.c: Add missing option strings for "--batch" and
613         "--homedir".  Reported by Petr Uzel.
614
615         * protect-tool.c (import_p12_file): Take care of canceled
616         passphrase entry.  Fixes bug#1003.
617         (export_p12_file): Ditto.
618
619 2008-12-17  Werner Koch  <wk@g10code.com>
620
621         * gpg-agent.c (handle_connections): Set action of all pth event
622         handled signals to SIG_IGN.  Use a different pth_sigmask strategy.
623
624 2008-12-10  Werner Koch  <wk@g10code.com>
625
626         * command.c (cmd_get_passphrase): Implement option --no-ask.
627
628 2008-12-09  Werner Koch  <wk@g10code.com>
629
630         * gpg-agent.c (main): Call i18n_init before init_common_subsystems.
631         * preset-passphrase.c (main): Ditto.
632         * protect-tool.c (main): Ditto.
633
634         * command.c (cmd_preset_passphrase): Allow an arbitrary string for
635         the cache id.
636
637 2008-12-08  Werner Koch  <wk@g10code.com>
638
639         * gpg-agent.c (handle_connections): Sync the ticker to the next
640         full second.  This is bug#871.
641
642 2008-12-05  Werner Koch  <wk@g10code.com>
643
644         * minip12.c (decrypt_block): Fix const modified of CHARSETS.
645         * learncard.c (sinfo_cb_parm_s): Remove superflous semicolon.
646         Reported by Stoyan Angelov.
647
648 2008-11-18  Werner Koch  <wk@g10code.com>
649
650         * gpg-agent.c (make_libversion): New.
651         (my_strusage): Print libgcrypt version
652
653 2008-11-11  Werner Koch  <wk@g10code.com>
654
655         * call-scd.c (membuf_data_cb): Change return type to
656         assuan_error_t to avoid warnings with newer libassuan versions.
657
658 2008-11-04  Werner Koch  <wk@g10code.com>
659
660         * command.c (cmd_killagent): Stop the agent immediately.
661         (start_command_handler): Take care of GPG_ERR_EOF.
662
663 2008-10-29  Werner Koch  <wk@g10code.com>
664
665         * gpg-agent.c (main): Move USE_STANDARD_SOCKET to the outer scope.
666         (create_socket_name): Remove arg USE_STANDARD_SOCKET.  Change all
667         callers.
668         (create_server_socket): Remove IS_STANDARD_NAME and replace it by
669         USE_STANDARD_SOCKET.  Change all callers.
670         (check_own_socket_running): New.
671         (check_own_socket, check_own_socket_thread): New.
672         (handle_tick): Check server socket once a minute.
673         (handle_connections): Remove the extra pth_wait in the shutdown
674         case.
675
676 2008-10-20  Werner Koch  <wk@g10code.com>
677
678         * command.c (cmd_geteventcounter): Mark unused arg.
679         (cmd_listtrusted, cmd_pksign, cmd_pkdecrypt, cmd_genkey): Ditto.
680         (cmd_updatestartuptty, post_cmd_notify): Ditto.
681         * command-ssh.c (add_control_entry) 
682         (ssh_handler_request_identities, ssh_handler_remove_identity) 
683         (ssh_handler_remove_all_identities, ssh_handler_lock) 
684         (ssh_handler_unlock): Ditto.
685         * call-pinentry.c (pinentry_active_p, popup_message_thread) 
686         (agent_popup_message_stop): Ditto.
687         * findkey.c (agent_public_key_from_file): Ditto.
688         * genkey.c (check_passphrase_pattern): Ditto.
689         * call-scd.c (atfork_cb): Ditto.
690         * protect-tool.c (import_p12_cert_cb): Ditto.
691         * t-protect.c (main): Ditto.
692
693 2008-10-17  Werner Koch  <wk@g10code.com>
694
695         * call-scd.c (start_scd) [W32]: Use snprintf again because we now
696         always use the estream variant.
697
698 2008-10-15  Werner Koch  <wk@g10code.com>
699
700         * call-scd.c (start_scd): Enable assuan loggging if requested.
701         (agent_scd_check_aliveness) [W32]: Fix use of GetExitCodeProcess.
702
703 2008-10-14  Werner Koch  <wk@g10code.com>
704
705         * gpg-agent.c (get_agent_scd_notify_event): Need to use a manual
706         reset event.
707
708 2008-09-29  Werner Koch  <wk@g10code.com>
709
710         * agent.h (GCRY_MD_USER): Rename to GCRY_MODULE_ID_USER.
711         (GCRY_MD_USER_TLS_MD5SHA1): Rename to MD_USER_TLS_MD5SHA1 and
712         change all users.
713
714 2008-09-25  Werner Koch  <wk@g10code.com>
715
716         * divert-scd.c (getpin_cb): Support a Reset Code style PINs..
717
718 2008-09-03  Werner Koch  <wk@g10code.com>
719
720         * command.c (parse_keygrip): Use hex2bin.
721         (cmd_preset_passphrase): Decode the passphrase.  Reported by Kiss
722         Gabor.  Fixes #679 again.
723         * preset-passphrase.c (make_hexstring): Remove.
724         (preset_passphrase): Use bin2hex.
725
726 2008-05-27  Werner Koch  <wk@g10code.com>
727
728         * trustlist.c (insert_colons): Fix stupidly wrong allocation size
729         computation.
730
731 2008-05-26  Werner Koch  <wk@g10code.com>
732
733         * gpg-agent.c (main): Re-initialize default assuan log stream if a
734         log file is used.
735
736         * trustlist.c (agent_marktrusted): Use xtryasprintf and xfree.
737
738         * gpg-agent.c (main, agent_deinit_default_ctrl): Always use xfree
739         because our asprintf is mapped to an xmalloc style function in
740         util.h. Replace xstrdup by xtrystrdup.
741         * w32main.c (build_argv): Ditto.
742         * preset-passphrase.c (preset_passphrase): Ditto.
743         * divert-scd.c (ask_for_card): Ditto.
744         * command.c (option_handler): Ditto.
745         * command-ssh.c (ssh_handler_request_identities): Ditto.
746         * call-pinentry.c (start_pinentry): Ditto.
747
748         * gpg-agent.c (start_connection_thread)
749         (start_connection_thread_ssh): Use pth_thread_id for useful output
750         under W32.
751         (pth_thread_id) [!PTH_HAVE_PTH_THREAD_ID]: New.
752
753 2008-03-17  Werner Koch  <wk@g10code.com>
754
755         * agent.h (agent_inq_pinentry_launched): New prototype.
756
757         * call-pinentry.c: Include sys/types.h and signal.h.
758
759 2008-02-14  Werner Koch  <wk@g10code.com>
760
761         * command.c (agent_inq_pinentry_launched): New.
762         (option_handler): Add option allow-pinentry-notify.
763         * call-pinentry.c (getinfo_pid_cb): New.
764         (start_pinentry): Ask for the PID and notify the client.
765
766 2008-01-15  Marcus Brinkmann  <marcus@g10code.de>
767
768         * call-pinentry.c (start_pinentry): Start pinentry in detached
769         mode.
770
771 2007-12-04  Werner Koch  <wk@g10code.com>
772
773         * call-pinentry.c (agent_askpin): Use gnupg_get_help_string.
774
775 2007-12-03  Werner Koch  <wk@g10code.com>
776
777         * gpg-agent.c (main): s/standard_socket/use_standard_socket/ for
778         clarity.
779         (create_server_socket): New arg IS_SSH to avoid testing with
780         assuan commands.
781
782 2007-11-20  Werner Koch  <wk@g10code.com>
783
784         * gpg-agent.c (get_agent_scd_notify_event): New.
785         (handle_signal): Factor SIGUSR2 code out to:
786         (agent_sigusr2_action): .. New.
787         (agent_sighup_action): Print info message here and not in
788         handle_signal.
789         (handle_connections) [PTH_EVENT_HANDLE]: Call agent_sigusr2_action.
790
791         * call-scd.c (agent_scd_check_aliveness) [W32]: Implemented.
792         (start_scd) [W32]: Send event-signal option.
793
794 2007-11-19  Werner Koch  <wk@g10code.com>
795
796         * call-pinentry.c (agent_askpin): Set the tooltip for the quality
797         bar.
798
799 2007-11-15  Werner Koch  <wk@g10code.com>
800
801         * agent.h (struct server_control_s): Add XAUTHORITY and
802         PINENTRY_USER_DATA.
803         * gpg-agent.c: New option --xauthority.
804         (main, agent_init_default_ctrl) 
805         (agent_deinit_default_ctrl): Implemented
806         * command.c (cmd_updatestartuptty): Ditto.
807         * command-ssh.c (start_command_handler_ssh): Ditto.
808         * call-pinentry.c (atfork_cb): Set the environment.
809         (start_pinentry): Pass CTRL as arg to atfork_cb.
810
811 2007-11-14  Werner Koch  <wk@g10code.com>
812
813         * call-scd.c (start_scd) [W32]: Take care of fflush peculiarities.
814
815 2007-11-07  Werner Koch  <wk@g10code.com>
816
817         * agent.h: Remove errors.h.
818
819 2007-10-24  Werner Koch  <wk@g10code.com>
820
821         * genkey.c (check_passphrase_constraints): Changed the wording of
822         the warning messages.
823
824 2007-10-19  Werner Koch  <wk@g10code.com>
825
826         * protect-tool.c (get_passphrase): Use new utf8 switch fucntions.
827
828 2007-10-15  Daiki Ueno  <ueno@unixuser.org>  (wk)
829
830         * command-ssh.c (reenter_compare_cb): New function; imported from
831         genkey.c.
832         (ssh_identity_register): Ask initial passphrase twice.
833
834 2007-10-02  Werner Koch  <wk@g10code.com>
835
836         * command.c (cmd_getinfo): Add "pid" subcommand.
837
838 2007-10-01  Werner Koch  <wk@g10code.com>
839
840         * agent.h (struct server_control_s): Remove unused CONNECTION_FD.
841
842         * gpg-agent.c: Remove w32-afunix.h.  Include mkdtemp.h.
843         (socket_nonce, socket_nonce_ssh): New.
844         (create_server_socket): Use assuan socket wrappers.  Remove W32
845         specific stuff.  Save the server nonce.
846         (check_nonce): New.
847         (start_connection_thread, start_connection_thread_ssh): Call it.
848         (handle_connections): Change args to gnupg_fd_t.
849         * command.c (start_command_handler): Change LISTEN_FD to gnupg_fd_t.
850         * command-ssh.c (start_command_handler_ssh): Ditto.
851
852 2007-09-18  Werner Koch  <wk@g10code.com>
853
854         * agent.h (struct pin_entry_info_s): Add element WITH_QUALITYBAR.
855         * genkey.c (check_passphrase_constraints): New arg SILENT.
856         Changed all callers.
857         (agent_protect_and_store, agent_genkey): Enable qualitybar.
858         * call-pinentry.c (agent_askpin): Send that option.
859         (unescape_passphrase_string): New.
860         (inq_quality): New.
861         (estimate_passphrase_quality): New.
862
863 2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
864
865         * call-pinentry.c (agent_popup_message_stop): Implement kill for
866         Windows.
867
868 2007-08-28  Werner Koch  <wk@g10code.com>
869
870         * gpg-agent.c (main): Add option --faked-system-time.
871
872         * protect-tool.c (read_and_unprotect): Print the protected-at date.
873
874         * agent.h (struct server_control_s): Add member IN_PASSWD.
875         * command.c (cmd_passwd): Set it.
876         * findkey.c (try_unprotect_cb): Use it.
877
878         * protect.c (do_encryption): Replace asprintf by xtryasprint.
879         (agent_protect): Create the protected-at item.
880         (agent_unprotect): Add optional arg PROTECTED_AT.
881         (merge_lists): Add args CUTOFF and CUTLEN.
882         (agent_unprotect): Use them.
883         * findkey.c (try_unprotect_cb): Add code to test for expired keys.
884         (unprotect): Allow changing the passphrase.
885
886 2007-08-27  Werner Koch  <wk@g10code.com>
887
888         * gpg-agent.c: Add options --min-passphrase-nonalpha,
889         --check-passphrase-pattern and --enforce-passphrase-constraints.
890         (MIN_PASSPHRASE_NONALPHA): Init nonalpha option to 1.
891         (main): Declare options for gpgconf.
892         * agent.h (struct): Add members MIN_PASSPHRASE_NONALPHA,
893         ENFORCE_PASSPHRASE_CONSTRAINTS and CHECK_PASSPHRASE_PATTERN.
894         * genkey.c (nonalpha_charcount): New.
895         (check_passphrase_pattern): New.
896         (check_passphrase_constraints): Implement.  Factor some code out...
897         (take_this_one_anyway, take_this_one_anyway2): .. New.
898
899         * call-pinentry.c (agent_show_message): New.
900         (agent_askpin): We better reset the pin buffer before asking.
901
902         * trustlist.c (insert_colons): New.
903         (agent_marktrusted): Pretty print the fpr.
904
905 2007-08-22  Werner Koch  <wk@g10code.com>
906
907         * findkey.c (O_BINARY): Make sure it is defined.
908         (agent_write_private_key): Use O_BINARY
909
910         * protect-tool.c (import_p12_file): Add hack to allow importing of
911         gnupg 2.0.4 generated files.
912
913 2007-08-06  Werner Koch  <wk@g10code.com>
914
915         * trustlist.c (read_one_trustfile): Add flag "cm".
916         (agent_istrusted): Ditto.
917
918 2007-08-02  Werner Koch  <wk@g10code.com>
919
920         * gpg-agent.c: Include gc-opt-flags.h and remove their definition
921         here.
922
923 2007-07-13  Werner Koch  <wk@g10code.com>
924
925         * genkey.c (check_passphrase_constraints): Require a confirmation
926         for an empty passphrase.
927         (agent_genkey, agent_protect_and_store): No need to repeat an
928         empty passphrase.
929
930 2007-07-05  Werner Koch  <wk@g10code.com>
931
932         * call-scd.c (struct inq_needpin_s): New.
933         (inq_needpin): Pass unknown inquiries up.
934
935 2007-07-04  Werner Koch  <wk@g10code.com>
936
937         * gpg-agent.c (TIMERTICK_INTERVAL): New.
938         (fixed_gcry_pth_init, main): Kludge to fix Pth initialization.
939
940 2007-07-03  Werner Koch  <wk@g10code.com>
941
942         * gpg-agent.c (handle_connections): Do not use FD_SETSIZE for
943         select but compute the correct number.
944
945 2007-07-02  Werner Koch  <wk@g10code.com>
946
947         * command.c (cmd_reloadagent) [W32]: New.
948         (register_commands) [W32]: New command RELOADAGENT.
949
950         * Makefile.am (gpg_agent_SOURCES): Remove w32main.c and w32main.h.
951         (gpg_agent_res_ldflags): Remove icon file as we don't have a
952         proper icon yet.
953         * gpg-agent.c (main): do not include w32main.h.  Remove all calls
954         to w32main.c.
955         (agent_sighup_action): New.
956         (handle_signal): Use it.
957
958 2007-06-26  Werner Koch  <wk@g10code.com>
959
960         * gpg-agent.c (create_directories) [W32]: Made it work.
961
962 2007-06-21  Werner Koch  <wk@g10code.com>
963
964         * agent.h (ctrl_t): Remove.  It is now declared in ../common/util.h. 
965
966         * gpg-agent.c (check_for_running_agent): New arg SILENT.  Changed
967         all callers.
968         (create_server_socket): If the standard socket is in use check
969         whether a agent is running and avoid starting another one.
970
971 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
972
973         * gpg-agent.c (main): Percent escape pathname in --gpgconf-list
974         output.
975
976 2007-06-18  Werner Koch  <wk@g10code.com>
977
978         * w32main.c (build_argv): New.
979         (WinMain): Use it.
980
981         * command.c (cmd_killagent) [W32]: New.
982         (cmd_getinfo): New.
983         * gpg-agent.c (get_agent_ssh_socket_name): New.
984         (no_force_standard_socket) New.
985         (create_server_socket): Use it.
986         * Makefile.am (gpg_agent_res_ldflags): Pass windows option to ld.
987
988 2007-06-14  Werner Koch  <wk@g10code.com>
989
990         * protect-tool.c (main): Setup default socket name for
991         simple-pwquery.
992         (MAP_SPWQ_ERROR_IMPL): New.  Use map_spwq_error for spqw related
993         error codes.
994         * preset-passphrase.c (main): Setup default socket name for
995         simple-pwquery.
996         (map_spwq_error): Remove.
997         (MAP_SPWQ_ERROR_IMPL): New.  
998
999         * call-pinentry.c (start_pinentry): Use gnupg_module_name.
1000         * call-scd.c (start_scd): Ditto.
1001
1002 2007-06-12  Werner Koch  <wk@g10code.com>
1003
1004         * taskbar.c: New.
1005
1006         * trustlist.c (read_one_trustfile): Replace GNUPG_SYSCONFDIR by a
1007         function call.
1008         (read_trustfiles): Ditto.
1009
1010         * gpg-agent.c (main): Replace some calls by init_common_subsystems.
1011         * preset-passphrase.c (main): Ditto.
1012         * protect-tool.c (main): Ditto.
1013
1014 2007-06-11  Werner Koch  <wk@g10code.com>
1015
1016         * Makefile.am (common_libs): Use libcommonstd macro.
1017         (commonpth_libs): Use libcommonpth macro.
1018
1019         * protect-tool.c (main) [W32]: Call pth_init.
1020
1021         * preset-passphrase.c (main) [W32]: Replace the explicit Winsocket
1022         init by a call to pth_init.
1023
1024         * trustlist.c (initialize_module_trustlist): New.
1025         * gpg-agent.c (main): Call it.
1026
1027         * call-pinentry.c (initialize_module_query): Rename to
1028         initialize_module_call_pinentry.
1029
1030         * minip12.c: Remove iconv.h. Add utf8conf.h.  Changed all iconv
1031         calss to use these jnlib wrappers.
1032
1033 2007-06-06  Werner Koch  <wk@g10code.com>
1034
1035         * minip12.c (enum): Rename CONTEXT to ASNCONTEXT as winnt.h
1036         defines such a symbol to access the process context.
1037
1038         * call-pinentry.c (dump_mutex_state) [W32]: Handle the W32Pth case.
1039         * call-scd.c (dump_mutex_state): Ditto.
1040
1041         * protect-tool.c (i18n_init): Remove.
1042         * preset-passphrase.c (i18n_init): Remove.
1043         * gpg-agent.c (i18n_init): Remove.
1044
1045 2007-05-19  Marcus Brinkmann  <marcus@g10code.de>
1046
1047         * protect-tool.c (get_passphrase): Free ORIG_CODESET on error.
1048
1049 2007-05-14  Werner Koch  <wk@g10code.com>
1050
1051         * protect.c (make_shadow_info): Replace sprintf by smklen.
1052
1053 2007-04-20  Werner Koch  <wk@g10code.com>
1054
1055         * gpg-agent.c (my_gcry_logger, my_gcry_outofcore_handler): Removed.
1056         (main): Call the setup_libgcrypt_logging helper.
1057         * protect-tool.c (my_gcry_logger): Removed.
1058         (main): Call the setup_libgcrypt_logging helper.
1059         
1060 2007-04-03  Werner Koch  <wk@g10code.com>
1061
1062         * trustlist.c (read_trustfiles): Take a missing trustlist as an
1063         empty one.
1064
1065 2007-03-20  Werner Koch  <wk@g10code.com>
1066
1067         * protect-tool.c: New option --p12-charset. 
1068         * minip12.c (p12_build): Implement it.
1069
1070 2007-03-19  Werner Koch  <wk@g10code.com>
1071
1072         * minip12.c: Include iconv.h.
1073         (decrypt_block): New.
1074         (parse_bag_encrypted_data, parse_bag_data): Use it here.
1075         (bag_data_p, bag_decrypted_data_p): New helpers.
1076
1077 2007-03-06  Werner Koch  <wk@g10code.com>
1078
1079         * gpg-agent.c (main) <gpgconf>: Add entries for all ttl options.
1080
1081 2007-02-20  Werner Koch  <wk@g10code.com>
1082
1083         * call-pinentry.c (start_pinentry): Fix for OS X to allow loading
1084         of the bundle.  Tested by Benjamin Donnachie.
1085
1086 2007-02-14  Werner Koch  <wk@g10code.com>
1087
1088         * gpg-agent.c: New option --pinentry-touch-file.
1089         (get_agent_socket_name): New.
1090         * agent.h (opt):  Add pinentry_touch_file.
1091         * call-pinentry.c (start_pinentry): Send new option to the
1092         pinentry.
1093
1094 2007-01-31  Moritz Schulte  <moritz@g10code.com>  (wk)
1095
1096         * command-ssh.c (stream_read_string): Initialize LENGTH to zero.
1097         (start_command_handler_ssh): Use es_fgetc/es_ungetc to check if
1098         EOF has been reached before trying to process another request.
1099
1100 2007-01-31  Werner Koch  <wk@g10code.com>
1101
1102         * command-ssh.c (start_command_handler_ssh): 
1103
1104         * Makefile.am (t_common_ldadd): Add LIBICONV.
1105
1106 2007-01-25  Werner Koch  <wk@g10code.com>
1107
1108         * genkey.c (check_passphrase_constraints): Get ngettext call right
1109         and use UTF-8 aware strlen.
1110
1111         * protect-tool.c (get_passphrase): New arg OPT_CHECK.
1112         (get_new_passphrase): Enable OPT_CHECK on the first call.
1113         * command.c (cmd_get_passphrase): Implement option --check.
1114
1115 2007-01-24  Werner Koch  <wk@g10code.com>
1116
1117         * gpg-agent.c (MIN_PASSPHRASE_LEN): New
1118         (parse_rereadable_options): New option  --min-passphrase-len.
1119         * genkey.c (check_passphrase_constraints): New.
1120         (agent_genkey, agent_protect_and_store): Call new function.  Fix
1121         memory leak.
1122
1123         * call-pinentry.c (agent_askpin): Allow translation of the displayed
1124         error message.
1125         (agent_popup_message_start): Remove arg CANCEL_BTN.
1126         (popup_message_thread): Use --one-button option.
1127
1128         * command.c (cmd_passwd): Now that we don't distinguish between
1129         assuan and regular error codes we can jump to the end on error.
1130
1131 2006-12-07  David Shaw  <dshaw@jabberwocky.com>
1132
1133         * Makefile.am: Link to iconv for jnlib dependency.
1134
1135 2006-11-20  Werner Koch  <wk@g10code.com>
1136
1137         * call-pinentry.c (agent_popup_message_stop): Use SIGKILL.
1138         * call-scd.c (inq_needpin): Implement POPUPKEYPADPROMPT and
1139         DISMISSKEYPADPROMPT.
1140
1141 2006-11-15  Werner Koch  <wk@g10code.com>
1142
1143         * protect.c (make_shadow_info): Cast printf arg to unsigned int.
1144         * minip12.c (parse_bag_encrypted_data): Ditto.
1145         (parse_bag_data, p12_parse): Ditto.
1146         * command-ssh.c (ssh_identity_register): Changed buffer_n to
1147         size_t.
1148
1149         * agent.h (struct server_control_s): New field thread_startup.
1150         * command.c (start_command_handler): Moved CTRL init code to ..
1151         * gpg-agent.c (start_connection_thread): .. here.
1152         (agent_deinit_default_ctrl): New.
1153         (agent_init_default_ctrl): Made static.
1154         (handle_connections): Allocate CTRL and pass it pth_spawn.
1155         * command-ssh.c (start_command_handler_ssh): Moved CTRL init code
1156         to ..
1157         * gpg-agent.c (start_connection_thread_ssh): .. here.
1158
1159 2006-11-14  Werner Koch  <wk@g10code.com>
1160
1161         * command.c (bump_key_eventcounter): New.
1162         (bump_card_eventcounter): New.
1163         (cmd_geteventcounter): New command.
1164         * gpg-agent.c (handle_signal): Call bump_card_eventcounter.
1165         * findkey.c (agent_write_private_key): Call bump_key_eventcounter.
1166         * trustlist.c (agent_reload_trustlist): Ditto.
1167
1168         * command.c (post_cmd_notify, io_monitor): New.
1169         (register_commands, start_command_handler): Register them.
1170
1171 2006-11-09  Werner Koch  <wk@g10code.com>
1172
1173         * gpg-agent.c (main): In detached mode connect standard
1174         descriptors to /dev/null.
1175
1176         * trustlist.c (read_trustfiles): Make sure not to pass a zero size
1177         to realloc as the C standards says that this behaves like free.
1178
1179 2006-11-06  Werner Koch  <wk@g10code.com>
1180
1181         * protect-tool.c (my_strusage): Fixed typo.
1182
1183 2006-10-23  Werner Koch  <wk@g10code.com>
1184
1185         * gpg-agent.c (main): New command --gpgconf-test.
1186
1187         * minip12.c (parse_bag_encrypted_data, parse_bag_data): Allow for
1188         a salt of 20 bytes.
1189
1190 2006-10-20  Werner Koch  <wk@g10code.com>
1191
1192         * Makefile.am (t_common_ldadd): Use GPG_ERROR_LIBS instead -o just -l
1193
1194 2006-10-19  Werner Koch  <wk@g10code.com>
1195
1196         * findkey.c (unprotect): Use it to avoid unnecessary calls to
1197         agent_askpin.
1198         * call-pinentry.c (pinentry_active_p): New.
1199
1200 2006-10-17  Werner Koch  <wk@g10code.com>
1201
1202         * Makefile.am (gpg_agent_LDADD): Link to libcommonpth.
1203         (gpg_agent_CFLAGS): New.  This allows to only link this with Pth.
1204
1205 2006-10-16  Werner Koch  <wk@g10code.com>
1206
1207         * call-pinentry.c (agent_get_confirmation): Map Cancel code here too.
1208         * trustlist.c (agent_marktrusted): Return Cancel instead of
1209         Not_Confirmed for the first question.
1210
1211 2006-10-12  Werner Koch  <wk@g10code.com>
1212
1213         * protect-tool.c (get_passphrase): Fix if !HAVE_LANGINFO_CODESET.
1214
1215 2006-10-06  Werner Koch  <wk@g10code.com>
1216
1217         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
1218         (gpg_agent_LDADD): Ditto.
1219
1220         * divert-scd.c (divert_pksign): Use PKAUTH for the TLS algo.
1221
1222 2006-10-05  Werner Koch  <wk@g10code.com>
1223
1224         * command.c (has_option_name): New.
1225         (cmd_sethash): New --hash option.
1226         * pksign.c (do_encode_raw_pkcs1): New.
1227         (agent_pksign_do): Use it here for the TLS algo.
1228         * agent.h (GCRY_MD_USER_TLS_MD5SHA1): New.
1229         * divert-scd.c (pksign): Add case for tls-md5sha1.
1230         
1231         * divert-scd.c (encode_md_for_card): Check that the algo is valid.
1232
1233 2006-10-04  Werner Koch  <wk@g10code.com>
1234
1235         * call-pinentry.c (agent_get_passphrase): Changed to return the
1236         unencoded passphrase.
1237         (agent_askpin, agent_get_passphrase, agent_get_confirmation): Need
1238         to map the cancel error.
1239         * command.c (send_back_passphrase): New.
1240         (cmd_get_passphrase): Use it here.  Also implement --data option.
1241         (skip_options): New.
1242
1243 2006-09-26  Werner Koch  <wk@g10code.com>
1244
1245         * learncard.c (agent_handle_learn): Send back the keypair
1246         information.
1247
1248 2006-09-25  Werner Koch  <wk@g10code.com>
1249
1250         * trustlist.c (read_one_trustfile): Allow extra flags.
1251         (struct trustitem_s): Replaced KEYFLAGS by a FLAGS struct.
1252         Changed all code to use this.
1253         (agent_istrusted): New arg CTRL. Changed all callers.  Send back
1254         flags.
1255         * command.c (agent_write_status): New.
1256
1257 2006-09-20  Werner Koch  <wk@g10code.com>
1258
1259         * Makefile.am: Changes to allow parallel make runs.
1260
1261 2006-09-15  Werner Koch  <wk@g10code.com>
1262
1263         * trustlist.c: Entirely rewritten.
1264         (agent_trustlist_housekeeping): Removed and removed all calls.
1265
1266 2006-09-14  Werner Koch  <wk@g10code.com>
1267
1268         Replaced all call gpg_error_from_errno(errno) by
1269         gpg_error_from_syserror().
1270
1271         * call-pinentry.c (start_pinentry): Replaced pipe_connect2 by
1272         pipe_connect_ext.
1273         * call-scd.c (start_scd): Ditto.
1274         * command.c (start_command_handler): Replaced
1275         init_connected_socket_server by init_socket_server_ext.
1276
1277 2006-09-13  Werner Koch  <wk@g10code.com>
1278
1279         * preset-passphrase.c (main) [W32]: Check for WSAStartup error.
1280
1281 2006-09-08  Werner Koch  <wk@g10code.com>
1282
1283         * call-scd.c: Add signal.h as we are referencing SIGUSR2.
1284
1285 2006-09-06  Marcus Brinkmann  <marcus@g10code.de>
1286
1287         * Makefile.am (AM_CFLAGS): Add $(GPG_ERR_CFLAGS).
1288         (gpg_agent_LDADD): Replace -lgpg-error with $(GPG_ERROR_LIBS).
1289
1290 2006-09-06  Werner Koch  <wk@g10code.com>
1291
1292         * query.c: Renamed to ..
1293         * call-pinentry.c: .. this.
1294
1295         * agent.h (out_of_core): Removed.
1296         (CTRL): Removed and changed everywhere to ctrl_t.
1297
1298         Replaced all Assuan error codes by libgpg-error codes.  Removed
1299         all map_to_assuan_status and map_assuan_err.
1300         
1301         * gpg-agent.c (main): Call assuan_set_assuan_err_source to have Assuan
1302         switch to gpg-error codes.
1303         * command.c (set_error): Adjusted.
1304
1305 2006-09-04  Werner Koch  <wk@g10code.com>
1306
1307         * command.c (percent_plus_unescape): New.
1308         (cmd_get_val, cmd_putval): New.
1309
1310 2006-08-29  Werner Koch  <wk@g10code.com>
1311
1312         * command-ssh.c (stream_read_mpi): Sanity check for early
1313         detecting of too large keys.
1314         * gpg-agent.c (my_gcry_outofcore_handler): New.
1315         (main): Register it.
1316         (main): No allocate 32k secure memory (was 16k).
1317
1318 2006-07-31  Werner Koch  <wk@g10code.com>
1319
1320         * preset-passphrase.c (make_hexstring): For consistency use
1321         xtrymalloc and changed caller to use xfree.  Fixed function
1322         comment.
1323
1324 2006-07-29  Marcus Brinkmann  <marcus@g10code.de>
1325
1326         * preset-passphrase.c (preset_passphrase): Do not strip off last
1327         character of passphrase.
1328         (make_hexstring): New function.
1329         * command.c (cmd_preset_passphrase): Use parse_hexstring to syntax
1330         check passphrase argument.  Truncate passphrase at delimiter.
1331
1332 2006-07-24  Werner Koch  <wk@g10code.com>
1333
1334         * minip12.c (build_key_bag): New args SHA1HASH and
1335         KEYIDSTR. Append bag Attributes if these args are given.
1336         (build_cert_sequence): ditto.
1337         (p12_build): Calculate certificate hash and pass to build
1338         functions.
1339
1340 2006-07-21  Werner Koch  <wk@g10code.com>
1341
1342         * minip12.c (oid_pkcs_12_keyBag): New.
1343         (parse_bag_encrypted_data): New arg R_RESULT. Support keybags and
1344         return the key object. 
1345         (p12_parse): Take new arg into account.  Free RESULT on error.
1346
1347 2006-06-26  Werner Koch  <wk@g10code.com>
1348
1349         * gpg-agent.c (handle_signal): Print info for SIGUSR2 only in
1350         verbose mode.
1351
1352 2006-06-22  Werner Koch  <wk@g10code.com>
1353
1354         * command-ssh.c (make_cstring): Use memcpy instead of strncpy.
1355         (ssh_receive_mpint_list, sexp_key_extract, data_sign): Use
1356         xtrycalloc instead of xtrymalloc followed by memset.
1357
1358 2006-06-20  Werner Koch  <wk@g10code.com>
1359
1360         * minip12.c (create_final): New arg PW. Add code to calculate the
1361         MAC.
1362
1363 2006-06-09  Marcus Brinkmann  <marcus@g10code.de>
1364
1365         * Makefile.am (gpg_agent_LDADD): Add $(NETLIBS).
1366         (gpg_protect_tool_LDADD): Likewise.
1367         (gpg_preset_passphrase_LDADD): Likewise.
1368
1369 2006-04-09  Moritz Schulte  <moritz@g10code.com>
1370
1371         * command-ssh.c (ssh_request_process): Removed FIXME mentioning a
1372         possible DoS attack.
1373
1374 2006-04-01  Moritz Schulte  <moritz@g10code.com>
1375
1376         * command-ssh.c (ssh_identity_register): Make KEY_GRIP_RAW be 20
1377         instead of 21 bytes long; do not fill KEY_GRIP_RAW[20] with NUL
1378         byte - KEY_GRIP_RAW is a raw binary string anyway.
1379
1380 2006-02-09  Werner Koch  <wk@g10code.com>
1381
1382         * call-scd.c (struct scd_local_s): New field next_local.
1383         (scd_local_list): New.
1384         (start_scd): Put new local into list.
1385         (agent_reset_scd): Remove it from the list.
1386         (agent_scd_check_aliveness): Here is the actual reason why we need
1387         all this stuff.
1388         (agent_reset_scd): Send the new command RESTART instead of RESET.
1389
1390 2005-12-16  Werner Koch  <wk@g10code.com>
1391
1392         * minip12.c (cram_octet_string): New
1393         (p12_parse): Use it for NDEFed bags.
1394         (parse_bag_data): Ditto.
1395         (string_to_key, set_key_iv, crypt_block): New arg SALTLEN.
1396         (p12_build): Use old value 8 for new arg.
1397         (parse_bag_encrypted_data, parse_bag_data): Allow for salts of 8
1398         to 16 bytes.  Add new arg R_CONSUMED.
1399
1400 2005-11-24  Werner Koch  <wk@g10code.com>
1401
1402         * minip12.c (p12_parse): Fixed for case that the key object comes
1403         prior to the certificate.
1404
1405 2005-10-19  Werner Koch  <wk@g10code.com>
1406
1407         * divert-scd.c (getpin_cb): Hack to use it for a keypad message.
1408
1409         * call-scd.c (inq_needpin): Reworked to support the new KEYPADINFO.
1410
1411         * query.c (start_pinentry): Keep track of the owner.
1412         (popup_message_thread, agent_popup_message_start) 
1413         (agent_popup_message_stop, agent_reset_query): New.
1414         * command.c (start_command_handler): Make sure a popup window gets
1415         closed.
1416
1417 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
1418
1419         * Makefile.am (gpg_protect_tool_LDADD): Add ../gl/libgnu.a.
1420         (gpg_preset_passphrase_LDADD, t_common_ldadd): Likewise.
1421         (gpg_agent_LDADD): Add ../gl/libgnu.a after ../common/libcommon.a.
1422
1423 2005-09-16  Werner Koch  <wk@g10code.com>
1424
1425         * minip12.c (build_key_sequence, build_cert_sequence): Fixed
1426         padding.
1427
1428 2005-09-15  Moritz Schulte  <moritz@g10code.com>
1429
1430         * t-protect.c (test_agent_protect): Implemented.
1431         (main): Disable use of secure memory.
1432
1433 2005-09-09  Werner Koch  <wk@g10code.com>
1434
1435         * minip12.c (p12_build): Oops, array needs to be larger for the
1436         certificate.
1437         (build_cert_bag): Fixed yesterdays change.
1438
1439         * command-ssh.c (card_key_available): Let the card handler decide
1440         whether the card is supported here.  Also get a short serial
1441         number to return from the card handler.
1442
1443 2005-09-08  Werner Koch  <wk@g10code.com>
1444
1445         * minip12.c (build_cert_bag): Use a non constructed object.
1446         i.e. 0x80 and not 0xa0.
1447
1448 2005-08-16  Werner Koch  <wk@g10code.com>
1449
1450         * gpg-agent.c (main): Use a default file name for --write-env-file.
1451
1452 2005-07-25  Werner Koch  <wk@g10code.com>
1453
1454         * findkey.c (agent_public_key_from_file): Fixed array assignment.
1455         This was the cause for random segvs.
1456
1457 2005-06-29  Werner Koch  <wk@g10code.com>
1458
1459         * command-ssh.c (data_sign): Removed empty statement.
1460
1461 2005-06-21  Werner Koch  <wk@g10code.com>
1462
1463         * minip12.c (create_final): Cast size_t to ulong for printf. 
1464         (build_key_bag, build_cert_bag, build_cert_sequence): Ditto.
1465
1466 2005-06-16  Werner Koch  <wk@g10code.com>
1467
1468         * protect-tool.c (make_advanced): Makde RESULT a plain char.
1469         * call-scd.c (unescape_status_string): Need to cast unsigned char*
1470         for strcpy.
1471         (agent_card_pksign): Made arg R_BUF an unsigned char**.
1472         * divert-scd.c (divert_pksign): Made SIGVAL unsigned char*.
1473         (encode_md_for_card): Initialize R_VAL and R_LEN.
1474         * genkey.c (store_key): Made BUF unsigned.
1475         * protect.c (do_encryption): Ditto.
1476         (do_encryption): Made arg PROTBEGIN unsigned. Initialize RESULT
1477         and RESULTLEN even on error.
1478         (merge_lists): Need to cast unsigned char * for strcpy. Initialize 
1479         RESULTand RESULTLEN even on error.
1480         (agent_unprotect): Likewise for strtoul.
1481         (make_shadow_info): Made P and INFO plain char.
1482         (agent_shadow_key): Made P plain char.
1483
1484 2005-06-15  Werner Koch  <wk@g10code.com>
1485
1486         * query.c (agent_get_passphrase): Made HEXSTRING a char*.
1487         * command-ssh.c (ssh_key_grip): Made arg BUFFER unsigned.
1488         (ssh_key_grip): Simplified.
1489         (data_sign): Initialize variables with the definition.
1490         (ssh_convert_key_to_blob): Make sure that BLOB and BLOB_SIZE
1491         are set to NULL on error.  Cool, gcc-4 detects uninitialized stuff
1492         beyond function boundaries; well it can't know that we do error
1493         proper error handling so that this was not a real error.
1494         (file_to_buffer): Likewise for BUFFER and BUFFER_N.
1495         (data_sign): Likewise for SIG and SIG_N.
1496         (stream_read_byte): Set B to a value even on error.
1497         * command.c (cmd_genkey): Changed VALUE to char.
1498         (cmd_readkey): Cast arg for gcry_sexp_sprint.
1499         * agent.h (struct server_control_s): Made KEYGRIP unsigned.
1500
1501 2005-06-13  Werner Koch  <wk@g10code.com>
1502
1503         * command-ssh.c (start_command_handler_ssh): Reset the SCD.
1504
1505 2005-06-09  Werner Koch  <wk@g10code.com>
1506
1507         * gpg-agent.c (create_socket_name): New option --max-cache-ttl-ssh.
1508         * cache.c (housekeeping): Use it.
1509         (agent_put_cache): Use a switch to get the default ttl so that it
1510         is easier to add more cases.
1511
1512 2005-06-06  Werner Koch  <wk@g10code.com>
1513
1514         * gpg-agent.c: New option --default-cache-ttl-ssh.
1515         * agent.h (cache_mode_t): New.
1516         * pksign.c (agent_pksign_do): New arg CACHE_MODE to replace the
1517         ARG IGNORE_CACHE. Changed all callers.
1518         (agent_pksign): Ditto.
1519         * findkey.c (agent_key_from_file): Ditto. Canged all callers.
1520         (unprotect): Ditto.
1521         * command-ssh.c (data_sign): Use CACHE_MODE_SSH.
1522         * cache.c (agent_get_cache): New arg CACHE_MODE.
1523         (agent_put_cache): Ditto.  Store it in the cache.
1524
1525         * query.c (agent_query_dump_state, dump_mutex_state): New.
1526         (unlock_pinentry): Reset the global context before releasing the
1527         mutex.
1528         * gpg-agent.c (handle_signal): Dump query.c info on SIGUSR1.
1529
1530         * call-scd.c (agent_scd_check_aliveness): Always do a waitpid and
1531         add a timeout to the locking.
1532
1533 2005-06-03  Werner Koch  <wk@g10code.com>
1534
1535         * command.c (cmd_updatestartuptty): New.
1536
1537         * gpg-agent.c: New option --write-env-file.
1538         
1539         * gpg-agent.c (handle_connections): Make sure that the signals we
1540         are handling are not blocked.Block signals while creating new
1541         threads.
1542
1543 2005-06-02  Werner Koch  <wk@g10code.com>
1544
1545         * call-scd.c (agent_scd_dump_state, dump_mutex_state): New.
1546         * gpg-agent.c (handle_signal): Print it on SIGUSR1.
1547         (handle_connections): Include the file descriptor into the
1548         threadnames.
1549
1550 2005-06-01  Werner Koch  <wk@g10code.com>
1551
1552         * gpg-agent.c: Include setenv.h.
1553
1554 2005-05-31  Werner Koch  <wk@g10code.com>
1555
1556         * agent.h (out_of_core): s/__inline__/inine.  Noted by Ray Link.
1557
1558 2005-05-25  Werner Koch  <wk@g10code.com>
1559
1560         * gpg-agent.c (main): Do not unset the DISPLAY when we are
1561         continuing as child.
1562
1563 2005-05-24  Werner Koch  <wk@g10code.com>
1564
1565         * call-scd.c (inq_needpin): Skip leading spaces in of PIN
1566         description.
1567         * divert-scd.c (getpin_cb): Enhanced to cope with description
1568         flags.
1569         * query.c (agent_askpin): Add arg PROMPT_TEXT. Changed all
1570         callers.
1571
1572 2005-05-21  Werner Koch  <wk@g10code.com>
1573
1574         * call-scd.c (start_scd): Don't test for an alive scdaemon here.
1575         (agent_scd_check_aliveness): New.
1576         * gpg-agent.c (handle_tick): Test for an alive scdaemon.
1577         (handle_signal): Print thread info on SIGUSR1.
1578
1579 2005-05-20  Werner Koch  <wk@g10code.com>
1580
1581         * protect-tool.c: New option --canonical.
1582         (show_file): Implement it.
1583
1584         * keyformat.txt: Define the created-at attribute for keys.
1585
1586 2005-05-18  Werner Koch  <wk@g10code.com>
1587
1588         * divert-scd.c (ask_for_card): Removed the card reset kludge.
1589
1590 2005-05-17  Werner Koch  <wk@g10code.com>
1591
1592         * call-scd.c (unlock_scd): Add new arg CTRL. Changed all callers.
1593         (start_scd): Reoworked to allow for additional connections.
1594         * agent.h (ctrl_t): Add local data for the SCdaemon.
1595         * command.c (start_command_handler): Release SERVER_LOCAL.
1596
1597         * gpg-agent.c (create_server_socket): Use xmalloc.
1598         (main): Removed option --disable-pth a dummy.  Removed non-pth
1599         code path.
1600         (cleanup_sh): Removed.  Not needed anymore.
1601
1602 2005-05-05  Moritz Schulte  <moritz@g10code.com>
1603
1604         * command-ssh.c (ssh_key_to_buffer): Rename to ...
1605         (ssh_key_to_protected_buffer): ... this; change callers.
1606         Improved documentation.
1607         Use ssh_key_grip(), where gcry_pk_get_keygrip() has been used
1608         before.
1609         (ssh_handler_sign_request): Removed unusued variable P.
1610
1611 2005-04-20  Moritz Schulte  <moritz@g10code.com>
1612
1613         * command-ssh.c (ssh_handler_request_identities): Removed
1614         debugging code (sleep call), which was commited unintenionally.
1615
1616 2005-04-20  Werner Koch  <wk@g10code.com>
1617
1618         * minip12.c (parse_bag_encrypted_data): Fix the unpadding hack.
1619
1620         * gpg-agent.c: New option --disable-scdaemon.
1621         (handle_connections): Add time event to drive ...
1622         (handle_tick): New function.
1623         (main): Record the parent PID. Fixed segv when using ssh and a
1624         command.
1625
1626         * call-scd.c (start_scd): Take care of this option.
1627
1628 2005-04-03  Moritz Schulte  <moritz@g10code.com>
1629
1630         * command-ssh.c (ssh_request_spec): New member: secret_input.
1631         (REQUEST_SPEC_DEFINE): New argument: secret_input.
1632         (request_specs): Add secret_input flag.
1633         (request_spec_lookup): New function ...
1634         (ssh_request_process): ... use it here; depending on secret_input
1635         flag allocate secure or non-secure memory.
1636
1637 2005-03-02  Moritz Schulte  <moritz@g10code.com>
1638
1639         * command-ssh.c (sexp_key_extract): Removed FIXME, since
1640         xtrymallos does set errno correctly by now.
1641         (sexp_extract_identifier): Remove const attribute from identifier.
1642         (ssh_handler_request_identities): Remove const attribute from
1643         key_type; removes ugly casts and FIXME.
1644         (sexp_key_extract): Remove const attribute from comment.
1645         (ssh_send_key_public): Remove const attribute from
1646         key_type/comment; removes ugly cast.
1647         (data_sign): Remove const attribute from identifier; removes ugly
1648         cast.
1649         (key_secret_to_public): Remove const attribute from comment;
1650         removes ugly cast.
1651         (ssh_handler_sign_request): Remove const attribute from p.
1652         (sexp_key_extract): Use make_cstring().
1653         (ssh_key_extract_comment): Likewise.
1654         (ssh_key_to_buffer): Use secure memory for memory area to hold the
1655         key S-Expression.
1656         Added more comments.
1657
1658 2005-02-25  Werner Koch  <wk@g10code.com>
1659
1660         * findkey.c (modify_description): Keep invalid % escapes, so that
1661         %0A may pass through.
1662
1663         * agent.h (server_control_s): New field USE_AUTH_CALL.
1664         * call-scd.c (agent_card_pksign): Make use of it.
1665         * command-ssh.c (data_sign): Set the flag.
1666         (ssh_send_key_public): New arg OVERRIDE_COMMENT.
1667         (card_key_available): Add new arg CARDSN.
1668         (ssh_handler_request_identities): Use the card s/n as comment.
1669         (sexp_key_extract): Use GCRYMPI_FMT_STD.
1670         (data_sign): Ditto.
1671
1672         * learncard.c (make_shadow_info): Moved to ..
1673         * protect.c (make_shadow_info): .. here. Return NULL on malloc
1674         failure. Made global.
1675         * agent.h: Add prototype.
1676
1677 2005-02-24  Werner Koch  <wk@g10code.com>
1678
1679         * call-scd.c (unescape_status_string): New. Actual a copy of
1680         ../g10/call-agent.c
1681         (card_getattr_cb, agent_card_getattr): New.
1682
1683         * command-ssh.c (card_key_available): New.
1684         (ssh_handler_request_identities): First see whether a card key is
1685         available.
1686
1687         * gpg-agent.c (handle_connections): Need to check for events if
1688         select returns with -1.
1689
1690 2005-02-23  Werner Koch  <wk@g10code.com>
1691
1692         * command-ssh.c (get_passphrase): Removed.
1693         (ssh_identity_register): Partly rewritten.
1694         (open_control_file, search_control_file, add_control_entry): New.
1695         (ssh_handler_request_identities): Return only files listed in our
1696         control file.
1697
1698         * findkey.c (unprotect): Check for allocation error.
1699
1700         * agent.h (opt): Add fields to record the startup terminal
1701         settings.
1702         * gpg-agent.c (main): Record them and do not force keep display
1703         with --enable-ssh-support.
1704         * command-ssh.c (start_command_handler_ssh): Use them here.
1705
1706         * gpg-agent.c: Renamed option --ssh-support to
1707         --enable-ssh-support.
1708
1709         * command.c (cmd_readkey): New.
1710         (register_commands): Register new command "READKEY".
1711
1712         * command-ssh.c (ssh_request_process): Improved logging.
1713
1714         * findkey.c (agent_write_private_key): Always use plain open.
1715         Don't depend on an umask for permissions.
1716         (agent_key_from_file): Factored file reading code out to ..
1717         (read_key_file): .. new function.
1718         (agent_public_key_from_file): New.
1719
1720 2005-02-22  Werner Koch  <wk@g10code.com>
1721
1722         * command-ssh.c (stream_read_string): Removed call to abort on
1723         memory error because the CVS version of libgcrypt makes sure
1724         that ERRNO gets always set on error even with a faulty user
1725         supplied function.
1726
1727 2005-02-19  Moritz Schulte  <moritz@g10code.com>
1728
1729         * command-ssh.c (ssh_receive_mpint_list): Slightly rewritten, do
1730         not use elems_secret member of key_spec.
1731         (ssh_key_type_spec): Removed member: elems_secret.
1732         (ssh_key_types): Removed elems_secret data.
1733         (ssh_sexp_construct): Renamed to ...
1734         (sexp_key_construct): ... this; changed callers.
1735         (ssh_sexp_extract): Renamed to ...
1736         (sexp_key_extract): ... this; changed callers.
1737         (ssh_sexp_extract_key_type): Renamed to ...
1738         (sexp_extract_identifier): ... this; changed callers; use
1739         make_cstring().
1740         Added more comments.
1741
1742 2005-02-18  Moritz Schulte  <moritz@g10code.com>
1743
1744         * command-ssh.c (ssh_sexp_construct): Rewritten generation of sexp
1745         template, clarified.
1746         (ssh_sexp_extract): Support shadowed-private-key-sexp; treat
1747         protected-private key and shadowed-private-key as public keys.
1748         (key_secret_to_public): Rewritten: simply use ssh_sexp_extract()
1749         and ssh_sexp_construct().
1750
1751 2005-02-15  Werner Koch  <wk@g10code.com>
1752
1753         * findkey.c (modify_description): Don't increment OUT_LEN during
1754         the second pass.
1755
1756 2005-02-14  Moritz Schulte  <moritz@g10code.com>
1757
1758         * command-ssh.c (es_read_byte): Renamed to ...
1759         (stream_es_read_byte): ... this; changed callers.
1760         (es_write_byte): Renamed to ...
1761         (stream_write_byte): ... this; changed callers.
1762         (es_read_uint32): Renamed to ...
1763         (stream_read_uint32): ... this; changed callers.
1764         (es_write_uint32): Renamed to ...
1765         (stream_write_uint32): ... this; changed callers.
1766         (es_read_data): Renamed to ...
1767         (stream_read_data): ... this; changed callers.
1768         (es_write_data): Renamed to ...
1769         (stream_write_data): ... this; changed callers.
1770         (es_read_string): Renamed to ...
1771         (stream_read_string): ... this; changed callers.
1772         (es_read_cstring): Renamed to ...
1773         (stream_read_cstring): ... this; changed callers.
1774         (es_write_string): Renamed to ...
1775         (stream_write_string): ... this; changed callers.
1776         (es_write_cstring): Renamed to ...
1777         (stream_write_cstring): ... this; changed callers.
1778         (es_read_mpi): Renamed to ...
1779         (stream_read_mpi): ... this; changed callers.
1780         (es_write_mpi): Renamed to ...
1781         (stream_write_mpi): ... this; changed callers.
1782         (es_copy): Renamed to ...
1783         (stream_copy): ... this; changed callers.
1784         (es_read_file): Renamed to ...
1785         (file_to_buffer): ... this; changed callers.
1786         (ssh_identity_register): Removed variable description_length;
1787         changed code to use asprintf for description.
1788         (stream_write_uint32): Do not filter out the last byte of shift
1789         expression.
1790         (uint32_construct): New macro ...
1791         (stream_read_uint32): ... use it; removed unnecessary cast.
1792
1793 2005-02-03  Werner Koch  <wk@g10code.com>
1794
1795         * agent.h (agent_exit): Add JNLIB_GCC_A_NR to indicate that this
1796         function won't return.
1797
1798         * gpg-agent.c (check_for_running_agent): Initialize pid to a
1799         default value if not needed.
1800
1801         * command-ssh.c: Removed stdint.h.  s/byte_t/unsigned char/,
1802         s/uint32/u32/ becuase that is what we have always used in GnuPG.
1803         (ssh_request_specs): Moved to top of file.
1804         (ssh_key_types): Ditto.
1805         (make_cstring): Ditto.
1806         (data_sign): Don't use a variable for the passphrase prompt, make
1807         it translatable.
1808         (ssh_request_process): 
1809         
1810
1811         * findkey.c (modify_description): Renamed arguments for clarity,
1812         polished documentation.  Make comment a C-string.  Fixed case of
1813         DESCRIPTION being just "%".
1814         (agent_key_from_file): Make sure comment string to a C-string.
1815
1816         * gpg-agent.c (create_socket_name): Cleanup the implemntation, use
1817         DIMof, agent_exit, removed superflous args and return the
1818         allocated string as value.  Documented.  Changed callers.
1819         (create_server_socket): Cleanups similar to above.  Changed callers.
1820         (cleanup_do): Renamed to ..
1821         (remove_socket): .. this.  Changed caller.
1822         (handle_connections): The signals are to be handled in the select
1823         and not in the accept.  Test all FDs after returning from a
1824         select.  Remove the event tests from the accept calls.  The select
1825         already assured that the accept won't block.
1826
1827 2005-01-29  Moritz Schulte  <moritz@g10code.com>
1828
1829         * command-ssh.c (ssh_handler_request_identities)
1830         (ssh_handler_sign_request, ssh_handler_add_identity)
1831         (ssh_handler_remove_identity, ssh_handler_remove_all_identities)
1832         (ssh_handler_lock, ssh_handler_unlock): Changed to return an error
1833         code instead of a boolean.
1834         (ssh_request_process): Changed to return a boolean instead of an
1835         error; adjust caller.
1836         (ssh_request_handle_t): Adjusted type.
1837         (ssh_request_spec): New member: identifier.
1838         (REQUEST_SPEC_DEFINE): New macro; use it for initialization of
1839         request_specs[].
1840         (ssh_request_process): In debugging mode, log identifier of
1841         handler to execute.
1842         (start_command_handler_ssh): Moved most of the stream handling
1843         code ...
1844         (ssh_request_process): ... here.
1845
1846 2005-01-28  Moritz Schulte  <moritz@g10code.com>
1847
1848         * command-ssh.c (ssh_handler_add_identity): Pass ctrl to
1849         ssh_identity_register().
1850         (ssh_identity_register): New argument: ctrl; pass ctrl to
1851         get_passphrase().
1852         (get_passphrase): Pass ctrl instead of NULL to agent_askpin().
1853         (start_command_handler_ssh): Use agent_init_default_ctrl();
1854         deallocate structure members, which might be dynamically
1855         allocated.
1856         (lifetime_default): Removed variable.
1857         (ssh_handler_add_identity): Fix ttl handling; renamed variable
1858         `death' to `ttl'.
1859         (ssh_identity_register): Fix key grip handling.
1860
1861 2005-01-26  Moritz Schulte  <moritz@g10code.com>
1862
1863         * command-ssh.c (ssh_handler_sign_request): Confirm to agent
1864         protocol in case of failure.
1865
1866         * command-ssh.c: New file.
1867
1868         * Makefile.am (gpg_agent_SOURCES): New source file: command-ssh.c.
1869
1870         * findkey.c (modify_description): New function.
1871         (agent_key_from_file): Support comment field in key s-expressions.
1872
1873         * gpg-agent.c (enum cmd_and_opt_values): New item: oSSHSupport.
1874         (opts) New entry for oSSHSupport.
1875         New variable: socket_name_ssh.
1876         (cleanup_do): New function based on cleanup().
1877         (cleanup): Use cleanup_do() for socket_name and socket_name_ssh.
1878         (main): New switch case for oSSHSupport.
1879         (main): Move socket name creation code to ...
1880         (create_socket_name): ... this new function.
1881         (main): Use create_socket_name() for creating socket names for
1882         socket_name and for socket_name_ssh in case ssh support is
1883         enabled.
1884         Move socket creation code to ...
1885         (create_server_socket): ... this new function.
1886         (main): Use create_server_socket() for creating sockets.
1887         In case standard_socket is set, do not only store a socket name in
1888         socket_name, but also in socket_name_ssh.
1889         Generate additional environment info strings for ssh support.
1890         Pass additional ssh socket argument to handle_connections.
1891         (start_connection_thread_ssh): New function.
1892         (handle_connections): Use select to multiplex between gpg-agent
1893         and ssh-agent protocol.
1894
1895         * agent.h (struct opt): New member: ssh_support.
1896         (start_command_handler_ssh): Add prototype.
1897
1898 2005-01-04  Werner Koch  <wk@g10code.com>
1899
1900         * trustlist.c (agent_marktrusted): Use "Cancel" for the first
1901         confirmation and made the strings translatable.
1902
1903         * cache.c (agent_put_cache): Fix the test for using the default
1904         TTL.
1905
1906 2004-12-21  Werner Koch  <wk@g10code.com>
1907
1908         * preset-passphrase.c (preset_passphrase): Handle --passphrase.
1909
1910         * Makefile.am (gpg_preset_passphrase_LDADD): Reorder libs so that
1911         pwquery may use stuff from jnlib.  Conditionally add -lwsock2
1912         (gpg_protect_tool_LDADD): Ditto.
1913
1914         * preset-passphrase.c (main): Use default_homedir().
1915         (main) [W32]: Initialize sockets.
1916
1917 2004-12-21  Marcus Brinkmann  <marcus@g10code.de>
1918
1919         * Makefile.am (libexec_PROGRAMS): Add gpg-preset-passphrase.
1920         (gpg_preset_passphrase_SOURCES, gpg_preset_passphrase_LDADD): New
1921         targets.
1922         * agent.h (opt): New member allow_cache_passphrase.
1923         * cache.c (housekeeping): Check if R->ttl is not negative.
1924         (agent_put_cache): Allow ttl to be negative.
1925         * command.c (parse_hexstring): Allow something to follow the
1926         hexstring.
1927         (cmd_cache_passphrase): New function.
1928         (register_commands): Add it.
1929         * gpg-agent.c: Handle --allow-preset-passphrase.
1930         * preset-passphrase.c: New file.
1931
1932 2004-12-21  Werner Koch  <wk@g10code.com>
1933
1934         * gpg-agent.c (main): Use default_homedir().
1935         * protect-tool.c (main): Ditto. 
1936
1937 2004-12-20  Werner Koch  <wk@g10code.com>
1938
1939         * gpg-agent.c (main) [W32]: Now that Mutexes work we can remove
1940         the pth_init kludge.
1941         (main): Add new options --[no-]use-standard-socket.
1942         (check_for_running_agent): Check whether it is running on the
1943         standard socket.
1944
1945         * call-scd.c (init_membuf, put_membuf, get_membuf): Removed.  We
1946         now use the identical implementation from ../common/membuf.c.
1947
1948         * pksign.c (agent_pksign): Changed arg OUTFP to OUTBUF and use
1949         membuf functions to return the value.
1950         * pkdecrypt.c (agent_pkdecrypt): Ditto.
1951         * genkey.c (agent_genkey): Ditto.
1952         * command.c (cmd_pksign, cmd_pkdecrypt, cmd_genkey): Replaced
1953         assuan_get_data_fp() by a the membuf scheme.
1954         (clear_outbuf, write_and_clear_outbuf): New.
1955
1956 2004-12-19  Werner Koch  <wk@g10code.com>
1957
1958         * query.c (initialize_module_query): New.
1959         * call-scd.c (initialize_module_call_scd): New.
1960         * gpg-agent.c (main): Call them.
1961         
1962 2004-12-18  Werner Koch  <wk@g10code.com>
1963
1964         * gpg-agent.c (main):  Remove special Pth initialize.
1965
1966         * agent.h (map_assuan_err): Define in terms of
1967         map_assuan_err_with_source.
1968
1969 2004-12-17  Moritz Schulte  <moritz@g10code.com>
1970
1971         * query.c: Undo change from 2004-12-05.
1972
1973 2004-12-15  Werner Koch  <wk@g10code.com>
1974
1975         * gpg-agent.c [W32]: Various hacks to make it work.
1976
1977         * findkey.c (agent_write_private_key) [W32]: Adjust open call.
1978
1979         * call-scd.c (start_scd) [W32]: Don't check whether the daemon
1980         didn't died.  To hard to do under Windows.
1981         (start_scd) [W32]: Disable sending of the event signal option.
1982
1983         * protect-tool.c (read_file, export_p12_file) [W32]: Use setmode
1984         to get stdout and stin into binary mode.
1985
1986 2004-12-05  Moritz Schulte  <moritz@g10code.com>
1987
1988         * query.c (start_pinentry): Allow CTRL be NULL.
1989
1990 2004-10-22  Werner Koch  <wk@g10code.com>
1991
1992         * gpg-agent.c (parse_rereadable_options): Return "not handled"
1993         when the log file has not beend hadled.  This is will let the main
1994         option processing continue. Fixed a bug introduced on 2004-09-4
1995         resulting in logging to stderr until a HUP has been given.
1996         (main): Don't close the listen FD.
1997
1998 2004-09-30  Werner Koch  <wk@g10code.com>
1999
2000         * Makefile.am: Adjusted from gettext 1.14.
2001
2002 2004-09-29  Werner Koch  <wk@g10code.com>
2003
2004         * minip12.c (parse_bag_encrypted_data): Print error if a bad
2005         passphrase has been given.
2006
2007 2004-09-28  Werner Koch  <wk@g10code.com>
2008
2009         * protect.c (agent_unprotect): Fixed wiping of CLEARTEXT.  Thanks
2010         to Moritz for pointing this out.
2011
2012 2004-09-25  Moritz Schulte  <moritz@g10code.com>
2013         
2014         * agent.h: Declare: agent_pksign_do.
2015         (struct server_control_s): New member: raw_value.
2016         
2017         * pksign.c (do_encode_md): New argument: raw_value; support
2018         generation of raw (non-pkcs1) data objects; adjust callers.
2019         (agent_pksign_do): New function, based on code ripped
2020         out from agent_pksign.
2021         (agent_pksign): Use agent_pksign_do.
2022
2023         * command.c (start_command_handler): Set ctrl.digest.raw_value.
2024         
2025 2004-09-09  Werner Koch  <wk@g10code.de>
2026
2027         * gpg-agent.c (check_for_running_agent): New.
2028         (main): The default action is now to check for an already running
2029         agent.
2030         (parse_rereadable_options): Set logfile only on reread.
2031         (main): Do not print the "is development version" note.
2032
2033 2004-08-20  Werner Koch  <wk@g10code.de>
2034
2035         * gpg-agent.c: New option --max-cache-ttl.  Suggested by Alexander
2036         Belopolsky.
2037         * cache.c (housekeeping): Use it here instead of the hardwired
2038         default of 1 hour.
2039
2040         * query.c (start_pinentry): Use a timeout for the pinentry lock.
2041
2042 2004-08-18  Werner Koch  <wk@g10code.de>
2043
2044         * protect-tool.c (get_passphrase): Make sure that the default
2045         prompts passed to gpg-agent are utf-8 encoded. Add new prompt values.
2046         (import_p12_file, import_p12_file, export_p12_file): Changed calls
2047         to get_passphrase so that better prompts are displayed.
2048         (get_new_passphrase): New.
2049
2050 2004-07-22  Werner Koch  <wk@g10code.de>
2051
2052         * trustlist.c (read_list): Allow colons in the fingerprint.
2053         (headerblurb): Rephrased.
2054
2055         * gpg-agent.c (handle_connections): Increase the stack size ot 256k.
2056
2057 2004-06-20  Moritz Schulte  <moritz@g10code.com>
2058
2059         * gpg-agent.c: Include <sys/stat.h> (build fix for BSD).
2060
2061 2004-05-11  Werner Koch  <wk@gnupg.org>
2062
2063         * gpg-agent.c (handle_signal): Reload the trustlist on SIGHUP.
2064         (start_connection_thread): Hack to simulate a ticker.
2065         * trustlist.c (agent_trustlist_housekeeping) 
2066         (agent_reload_trustlist): New.  Protected all global functions
2067         here with a simple counter which is sufficient for Pth.
2068
2069 2004-05-03  Werner Koch  <wk@gnupg.org>
2070
2071         * gpg-agent.c: Remove help texts for options lile --lc-ctype.
2072         (main): New option --allow-mark-trusted. 
2073         * trustlist.c (agent_marktrusted): Use it here.
2074
2075 2004-04-30  Werner Koch  <wk@gnupg.org>
2076
2077         * protect-tool.c: New option --enable-status-msg.
2078         (store_private_key): Print status messages for imported keys.
2079         (read_and_unprotect): Ditto for bad passphrase.
2080
2081         * gpg-agent.c (parse_rereadable_options): New arg REREAD.  Allow
2082         changing oLogFile.
2083         (current_logfile): New.
2084
2085 2004-04-26  Werner Koch  <wk@gnupg.org>
2086
2087         * call-scd.c (start_scd): Do not register an event signal if we
2088         are running as a pipe server.
2089
2090 2004-04-21  Werner Koch  <wk@gnupg.org>
2091
2092         * call-scd.c (start_scd): Send event-signal option. Always check
2093         that the scdaemon is still running.
2094
2095         * gpg-agent.c (handle_signal): Do not use SIGUSR{1,2} anymore for
2096         changing the verbosity.
2097
2098 2004-04-16  Werner Koch  <wk@gnupg.org>
2099
2100         * gpg-agent.c (main): Tell the logging code that we are running
2101         detached.
2102
2103 2004-04-06  Werner Koch  <wk@gnupg.org>
2104
2105         * gpg-agent.c (main): Use new libgcrypt thread library register
2106         scheme.
2107
2108 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
2109
2110         * gpg-agent.c (main): For now, always print the default config
2111         file name for --gpgconf-list.
2112
2113 2004-03-17  Werner Koch  <wk@gnupg.org>
2114
2115         * gpg-agent.c (main) <gpgconf>: Fixed default value quoting.
2116
2117 2004-03-16  Werner Koch  <wk@gnupg.org>
2118
2119         * gpg-agent.c (parse_rereadable_options): Use the new
2120         DEFAULT_CACHE_TTL macro.
2121         (main): Updated --gpgconf-list output.
2122
2123 2004-02-21  Werner Koch  <wk@gnupg.org>
2124
2125         * command.c (cmd_passwd): Take acount of a key description.
2126
2127         * genkey.c (reenter_compare_cb): Do not set the error text.
2128         (agent_protect_and_store, agent_genkey): Force a re-enter after a
2129         non-matching passphrase.
2130         * query.c (agent_askpin): Add new arg INITIAL_ERRTEXT; changed
2131         all callers.
2132
2133 2004-02-19  Werner Koch  <wk@gnupg.org>
2134
2135         * protect-tool.c: New options --have-cert and --prompt.
2136         (export_p12_file): Read a certificate from STDIN and pass it to
2137         p12_build.  Detect a keygrip and construct the filename in that
2138         case.  Unprotcet a key if needed.  Print error messages for key
2139         formats we can't handle.
2140         (release_passphrase): New.
2141         (get_passphrase): New arg PROMPTNO. Return the allocated
2142         string. Changed all callers.
2143
2144         * minip12.c: Revamped the build part.
2145         (p12_build): New args CERT and CERTLEN.  
2146
2147 2004-02-18  Werner Koch  <wk@gnupg.org>
2148
2149         * protect-tool.c (main): Setup the used character set.
2150         * gpg-agent.c (main): Ditto.
2151
2152         * gpg-agent.c (set_debug): New.  New option --debug-level.
2153         (main): New option --gpgconf-list.
2154
2155 2004-02-17  Werner Koch  <wk@gnupg.org>
2156
2157         * pksign.c (do_encode_md): Cleaned up by using gcry_sexp_build.
2158
2159         * Makefile.am (gpg_protect_tool_SOURCES): Removed
2160         simple-pwquery.[ch], as we once moved it to ../common.
2161
2162 2004-02-13  Werner Koch  <wk@gnupg.org>
2163
2164         * command.c (cmd_setkeydesc): New.
2165         (register_commands): Add command SETKEYDESC.
2166         (cmd_pksign, cmd_pkdecrypt): Use the key description.
2167         (reset_notify): Reset the description.
2168         * findkey.c (unprotect): Add arg DESC_TEXT.
2169         (agent_key_from_file): Ditto.
2170         * pksign.c (agent_pksign): Ditto.
2171         * pkdecrypt.c (agent_pkdecrypt): Ditto. Made CIPHERTEXT an
2172         unsigned char*.
2173
2174         * protect-tool.c (main): New options --no-fail-on-exist, --homedir.
2175         (store_private_key): Use them here.
2176
2177 2004-02-12  Werner Koch  <wk@gnupg.org>
2178
2179         * protect-tool.c (read_file, main): Allow reading from stdin.
2180
2181         * Makefile.am: Include cmacros.am for common flags.
2182         (libexec_PROGRAMS): Put gpg-protect-tool there.
2183
2184 2004-02-10  Werner Koch  <wk@gnupg.org>
2185
2186         * minip12.c (parse_bag_encrypted_data): Finished implementation.
2187         (p12_parse): Add callback args.
2188         * protect-tool.c (import_p12_cert_cb): New.
2189         (import_p12_file): Use it.
2190
2191 2004-02-06  Werner Koch  <wk@gnupg.org>
2192
2193         * minip12.c (crypt_block): Add arg CIPHER_ALGO; changed all callers.
2194         (set_key_iv): Add arg KEYBYTES; changed caller.
2195
2196 2004-02-03  Werner Koch  <wk@gnupg.org>
2197
2198         * findkey.c (agent_key_from_file): Extra paranoid wipe.
2199         * protect.c (agent_unprotect): Ditto.
2200         (merge_lists): Ditto. Add arg RESULTLEN.
2201         * pkdecrypt.c (agent_pkdecrypt): Don't show the secret key even in
2202         debug mode.
2203
2204         * protect.c: Add DSA and Elgamal description.
2205
2206 2004-01-29  Werner Koch  <wk@gnupg.org>
2207
2208         * agent.h (server_control_s): Add connection_fd field.
2209         * command.c (start_command_handler): Init it here.
2210         * gpg-agent.c (agent_init_default_ctrl): and here.
2211         * call-scd.c: Add the CTRL arg to all functions calling start_scd
2212         and pass it to start_scd.  Changed all callers
2213         (start_scd): Keep track of the current active connection.
2214         (agent_reset_scd): New.
2215         * command.c (start_command_handler): Call it here.
2216         * learncard.c (agent_handle_learn): Add arg CTRL; changed caller.
2217         (send_cert_back): Ditto.
2218
2219 2004-01-28  Werner Koch  <wk@gnupg.org>
2220
2221         * trustlist.c (agent_marktrusted): Check whether the trustlist is
2222         writable.
2223
2224 2004-01-27  Werner Koch  <wk@gnupg.org>
2225
2226         * sexp-parse.h: Moved to ../common.
2227
2228 2004-01-24  Werner Koch  <wk@gnupg.org>
2229
2230         * call-scd.c (atfork_cb): New.
2231         (start_scd): Make sure secmem gets cleared.
2232         * query.c  (atfork_cb): New.
2233         (start_pinentry): Make sure secmem gets cleared.
2234
2235 2004-01-16  Werner Koch  <wk@gnupg.org>
2236
2237         * findkey.c (agent_key_from_file): Now return an error code so
2238         that we have more detailed error messages in the upper layers.
2239         This fixes the handling of pinentry's cancel button. 
2240         * pksign.c (agent_pksign): Changed accordingly.
2241         * pkdecrypt.c (agent_pkdecrypt): Ditto.
2242         * command.c (cmd_passwd): Ditto.
2243
2244 2003-12-16  Werner Koch  <wk@gnupg.org>
2245
2246         * gpg-agent.c (main): Set the prefixes for assuan logging.
2247
2248 2003-12-15  Werner Koch  <wk@gnupg.org>
2249
2250         * protect.c (do_encryption): Use gcry_create_nonce instad of the
2251         obsolete WEAK_RANDOM.
2252
2253 2003-11-20  Werner Koch  <wk@gnupg.org>
2254
2255         * sexp-parse.h (snext): Don't use atoi_1 and digitp macros, so
2256         that this file is useful by other applications too.
2257
2258 2003-10-27  Werner Koch  <wk@gnupg.org>
2259
2260         * command.c (cmd_get_confirmation): New command.
2261
2262 2003-08-20  Timo Schulz  <twoaday@freakmail.de>
2263
2264         * pksign.c (do_encode_md): Allocate enough space. Cast md
2265         byte to unsigned char to prevent sign extension.
2266         
2267 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
2268
2269         * pksign.c (do_encode_md): Due to the fact pkcs#1 padding
2270         is now in Libgcrypt, use the new interface.
2271         
2272 2003-07-31  Werner Koch  <wk@gnupg.org>
2273
2274         * Makefile.am (gpg_agent_LDADD): Added INTLLIBS.
2275         (gpg_protect_tool_SOURCES): Added simple-pwquery.[ch]
2276
2277 2003-07-27  Werner Koch  <wk@gnupg.org>
2278
2279         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
2280
2281 2003-07-15  Werner Koch  <wk@gnupg.org>
2282
2283         * simple-pwquery.c, simple-pwquery.h:  Moved to ../common.
2284         * Makefile.am (gpg_protect_tool_LDADD): Add simple-pwquery.o.
2285         Removed it from xx_SOURCES.
2286
2287 2003-07-04  Werner Koch  <wk@gnupg.org>
2288
2289         * gpg-agent.c (handle_connections): Kludge to allow use of Pth 1
2290         and 2.
2291
2292 2003-06-30  Werner Koch  <wk@gnupg.org>
2293
2294         * call-scd.c (learn_status_cb): Store the serialno in PARM.
2295
2296 2003-06-26  Werner Koch  <wk@gnupg.org>
2297
2298         * call-scd.c (agent_card_serialno): Don't do a RESET anymore.
2299
2300 2003-06-25  Werner Koch  <wk@gnupg.org>
2301
2302         * command.c (cmd_scd): New.
2303         * call-scd.c (agent_card_scd): New.
2304         * divert-scd.c (divert_generic_cmd): New
2305
2306         * call-scd.c (agent_card_learn): New callback args SINFO.
2307         (learn_status_cb): Pass all other status lines to the sinfo
2308         callback.
2309         * learncard.c (release_sinfo, sinfo_cb): New.
2310         (agent_handle_learn): Pass the new cb to the learn function and
2311         pass the collected information back to the client's assuan
2312         connection.
2313
2314         * gpg-agent.c (main): Moved pth_init before gcry_check_version.
2315
2316 2003-06-24  Werner Koch  <wk@gnupg.org>
2317
2318         * gpg-agent.c (handle_connections): Adjusted for Pth 2.0
2319
2320         Adjusted for changes in the libgcrypt API. Some more fixes for the
2321         libgpg-error stuff.  
2322
2323 2003-06-04  Werner Koch  <wk@gnupg.org>
2324
2325         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
2326
2327 2003-06-03  Werner Koch  <wk@gnupg.org>
2328
2329         Changed all error codes in all files to the new libgpg-error scheme.
2330
2331         * agent.h: Include gpg-error.h and errno.h
2332         * Makefile.am: Link with libgpg-error
2333
2334         * query.c: assuan.h is now a system header.
2335         * genkey.c (agent_genkey): Fixed silly use of xmalloc by
2336         xtrymalloc.
2337
2338 2003-04-29  Werner Koch  <wk@gnupg.org>
2339
2340         * command.c (register_commands): Adjusted for new Assuan semantics.
2341
2342         * Makefile.am: Don't override LDFLAGS.
2343
2344 2002-12-04  Werner Koch  <wk@gnupg.org>
2345
2346         * gpg-agent.c: New variable config_filename.
2347         (parse_rereadable_options): New.
2348         (main): Use it here.  Add setting of default values, set
2349         config_filename.
2350         (reread_configuration): Filled with actual code.
2351
2352 2002-12-03  Werner Koch  <wk@gnupg.org>
2353
2354         * protect-tool.c (read_key): Don't run make_canonical on a NULL
2355         buffer.
2356
2357         * command.c (parse_hexstring): New.
2358         (cmd_sethash): Use it.
2359         (parse_keygrip): New.
2360         (cmd_havekey, cmd_sigkey): Use it.
2361         (cmd_passwd): New.
2362         * genkey.c (agent_protect_and_store): New.
2363         (store_key): Add arg FORCE.
2364         (agent_genkey): Pass false to this force of store_key.
2365
2366 2002-11-13  Werner Koch  <wk@gnupg.org>
2367
2368         * gpg-agent.c (main): Switch all messages to utf-8.
2369
2370         * simple-pwquery.c (agent_send_all_options): Use $GPG_TTY and
2371         stdin with ttyname.
2372
2373         * cache.c (new_data): Uiih - /sizeof d/sizeof *d/.
2374
2375 2002-11-10  Werner Koch  <wk@gnupg.org>
2376
2377         * command.c (option_handler): Fix keep_tty check.
2378
2379 2002-11-06  Werner Koch  <wk@gnupg.org>
2380
2381         * gpg-agent.c (main): Make sure we have a default ttyname.
2382         * command.c (option_handler): Check opt.keep_tty here
2383         * query.c (start_pinentry): but not anymore here.
2384
2385 2002-11-05  Werner Koch  <wk@gnupg.org>
2386
2387         * agent.h (opt,server_control_s): Move display and lc_ variables
2388         to the control struct so that they are per connection.
2389         * gpg-agent.c (agent_init_default_ctrl): New.
2390         (main): Assign those command line options to new default_* variables.
2391         Reset DISPLAY in server mode so that tehre is no implicit default.
2392         * command.c (start_command_handler): Initialize and deinitialize
2393         the control values.
2394         (option_handler): Work on the ctrl values and not on the opt.
2395         * query.c (start_pinentry): New argument CTRL to set the display
2396         connection specific.  Changed all callers to pass this value.
2397         (agent_askpin,agent_get_passphrase,agent_get_confirmation): Add
2398         CTRL arg and pass it ot start_pinentry.
2399         * command.c (cmd_get_passphrase): Pass CTRL argument.
2400         * trustlist.c (agent_marktrusted):  Add CTRL argument  
2401         * command.c (cmd_marktrusted): Pass CTRL argument
2402         * divert-scd.c (ask_for_card):  Add CTRL arg. 
2403         (divert_pksign,divert_pkdecrypt): Ditto.  Changed caller.
2404         (getpin_cb): Use OPAQUE to pass the CTRL variable.  Changed both 
2405         users.
2406         * findkey.c (unprotect): Add CTRL arg.
2407         (agent_key_from_file): Ditto.
2408
2409         * query.c (unlock_pinentry): Disconnect the pinentry so that we
2410         start a new one for each request.  This is required to support
2411         clients with different environments (e.g. X magic cookies).
2412
2413 2002-09-05  Neal H. Walfield  <neal@cs.uml.edu>
2414
2415         * gpg-agent.c (main) [USE_GNU_PTH]: No need to call
2416         assuan_set_io_func as assuan is smart.
2417
2418 2002-09-25  Werner Koch  <wk@gnupg.org>
2419
2420         * gpg-agent.c (handle_signal): Flush cache on SIGHUP.
2421         * cache.c (agent_flush_cache): New.
2422
2423         * gpg-agent.c, agent.h: Add --keep-display and --keep-tty.
2424         * query.c (start_pinentry): Implement them.  The option passing
2425         needs more thoughts.
2426
2427 2002-09-09  Werner Koch  <wk@gnupg.org>
2428
2429         * gpg-agent.c (create_private_keys_directory)
2430         (create_directories): New.
2431         (main): Try to create a home directory.
2432
2433 2002-09-04  Neal H. Walfield  <neal@g10code.de>
2434
2435         * gpg-agent.c (main): Use sigaction, not signal.
2436
2437 2002-09-03  Neal H. Walfield  <neal@g10code.de>
2438
2439         * findkey.c: Include <fcntl.h>.
2440         (agent_write_private_key): Prefer POSIX compatibity, open and
2441         fdopen, over the simplicity of GNU extensions, fopen(file, "x").
2442
2443 2002-08-22  Werner Koch  <wk@gnupg.org>
2444
2445         * query.c (agent_askpin): Provide the default desc text depending
2446         on the pininfo.  Do the basic PIN verification only when
2447         min_digits is set.
2448
2449 2002-08-21  Werner Koch  <wk@gnupg.org>
2450
2451         * query.c (agent_askpin): Hack to show the right default prompt.
2452         (agent_get_passphrase): Ditto.
2453
2454         * trans.c: Removed and replaced all usages with standard _()
2455
2456         * divert-scd.c (getpin_cb): Pass a more descritive text to the
2457         pinentry.
2458
2459         * Makefile.am: Renamed the binary protect-tool to gpg-protect-tool.
2460         * protect-tool.c: Removed the note about internal use only.
2461
2462         * gpg-agent.c (main): New option --daemon so that the program is
2463         not accidently started in the background.
2464
2465 2002-08-16  Werner Koch  <wk@gnupg.org>
2466
2467         * call-scd.c (learn_status_cb): Handle CERTINFO status.
2468         (agent_card_learn): Add args for certinfo cb.
2469         * learncard.c (release_certinfo,certinfo_cb): New.
2470         (send_cert_back): New. With factored out code from ..
2471         (agent_handle_learn): here.  Return certinfo stuff.
2472
2473 2002-07-26  Werner Koch  <wk@gnupg.org>
2474
2475         * gpg-agent.c (main): New option --ignore-cache-for-signing.
2476         * command.c (option_handler): New server option
2477         use-cache-for-signing defaulting to true.
2478         (cmd_pksign): handle global and per session option.
2479         * findkey.c (agent_key_from_file, unprotect): New arg
2480         ignore_cache.  Changed all callers.
2481         * pksign.c (agent_pksign): Likewise.
2482
2483 2002-06-29  Werner Koch  <wk@gnupg.org>
2484
2485         * query.c (start_pinentry): Use GNUPG_DERAULT_PINENTRY.
2486         * call-scd.c (start_scd): Use GNUPG_DEFAULT_SCDAEMON.
2487
2488 2002-06-28  Werner Koch  <wk@gnupg.org>
2489
2490         * protect-tool.c (export_p12_file): New.
2491         (main): New command --p12-export.
2492         * minip12.c (create_final,p12_build,compute_tag_length): New.
2493         (store_tag_length): New.
2494
2495 2002-06-27  Werner Koch  <wk@gnupg.org>
2496
2497         * minip12.c (crypt_block): Renamed from decrypt_block, add arg to
2498         allow encryption.
2499
2500         * Makefile.am (pkglib_PROGRAMS): Put protect-tool there.
2501
2502         * findkey.c (agent_write_private_key,agent_key_from_file)
2503         (agent_key_available): Use GNUPG_PRIVATE_KEYS_DIR constant.
2504         * gpg-agent.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
2505
2506         * protect-tool.c (store_private_key): New.
2507         (import_p12_file): Store the new file if requested.
2508         (main): New options --force and --store.
2509
2510         * gpg-agent.c (main): Set a global flag when running detached.
2511         * query.c (start_pinentry): Pass the list of FD to keep in the
2512         child when not running detached.
2513         * call-scd.c (start_scd): Ditto.
2514
2515 2002-06-26  Werner Koch  <wk@gnupg.org>
2516
2517         * command.c (cmd_istrusted, cmd_listtrusted, cmd_marktrusted)
2518         (cmd_pksign, cmd_pkdecrypt, cmd_genkey, cmd_get_passphrase)
2519         (cmd_learn): Print an error message for a failed operation.
2520
2521         * simple-pwquery.c, simple-pwquery.h: New.
2522         * protect-tool. (get_passphrase): New, used to get a passphrase
2523         from the agent if none was given on the command line.
2524
2525 2002-06-25  Werner Koch  <wk@gnupg.org>
2526
2527         * protect-tool.c (rsa_key_check): New.
2528         (import_p12_file): New.
2529         (main): New command --p12-import.
2530         * minip12.c, minip12.h: New.
2531
2532 2002-06-24  Werner Koch  <wk@gnupg.org>
2533
2534         * protect-tool.c (read_file): New.
2535         (read_key): Factored most code out to read_file.
2536
2537 2002-06-17  Werner Koch  <wk@gnupg.org>
2538
2539         * agent.h: Add a callback function to the pin_entry_info structure.
2540         * query.c (agent_askpin): Use the callback to check for a correct
2541         PIN.  Removed the start_err_text argument because it is not
2542         anymore needed; changed callers.
2543         * findkey.c (unprotect): Replace our own check loop by a callback.
2544         (try_unprotect_cb): New.
2545         * genkey.c (reenter_compare_cb): New.
2546         (agent_genkey): Use this callback here.  Fixed setting of the pi2
2547         variable and a segv in case of an empty PIN.
2548
2549         * divert-scd.c (getpin_cb): Removed some unused stuff and
2550         explained what we still have to change.
2551
2552 2002-06-12  Werner Koch  <wk@gnupg.org>
2553
2554         * gpg-agent.c (main): New option --disable-pth.
2555
2556 2002-06-11  Werner Koch  <wk@gnupg.org>
2557
2558         * protect-tool.c: Add command --show-keygrip
2559         (show_keygrip): New.
2560
2561 2002-05-23  Werner Koch  <wk@gnupg.org>
2562
2563         * call-scd.c: Seirialized all scdaeom access when using Pth.
2564
2565         * cache.c: Made the cache Pth-thread-safe.
2566         (agent_unlock_cache_entry): New.
2567         * findkey.c (unprotect): Unlock the returned cache value.
2568         * command.c (cmd_get_passphrase): Ditto.
2569
2570         * gpg-agent.c (main): Register pth_read/write with Assuan.
2571
2572 2002-05-22  Werner Koch  <wk@gnupg.org>
2573
2574         * query.c: Serialized all pinentry access when using Pth.
2575
2576         * gpg-agent.c (handle_signal,start_connection_thread)
2577         (handle_connections): New
2578         (main): Use the new Pth stuff to allow concurrent connections.
2579         * command.c (start_command_handler): Add new arg FD so that the
2580         fucntion can also be used for an already connected socket.
2581         * Makefile.am: Link with Pth.
2582
2583 2002-05-14  Werner Koch  <wk@gnupg.org>
2584
2585         * cache.c (housekeeping, agent_put_cache): Use our time() wrapper.
2586
2587 2002-04-26  Werner Koch  <wk@gnupg.org>
2588
2589         * cache.c (agent_put_cache): Reinitialize the creation time and
2590         the ttl when reusing a slot.
2591
2592         * call-scd.c (start_scd): Print debug messages only with debug
2593         flags set.
2594         * query.c (start_pinentry): Ditto.
2595
2596 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
2597
2598         * agent.h (agent_get_confirmation): Replace paramter prompt with
2599         two parameters ok and cancel.
2600         * query.c (agent_get_confirmation): Likewise.  Implement this.
2601         * trustlist.c (agent_marktrusted): Fix invocation of
2602         agent_get_confirmation.
2603         * divert-scd.c (ask_for_card): Likewise.
2604
2605 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
2606
2607         * agent.h (struct opt): Add members display, ttyname, ttytype,
2608         lc_ctype, and lc_messages.
2609         * gpg-agent.c (enum cmd_and_opt_values): Add oDisplay, oTTYname,
2610         oTTYtype, oLCctype, and LCmessages.
2611         (main): Handle these options.
2612         * command.c (option_handler): New function.
2613         (register_commands): Register option handler.
2614         * query.c (start_pinentry): Pass the various display and tty
2615         options to the pinentry.
2616
2617 2002-04-05  Werner Koch  <wk@gnupg.org>
2618
2619         * protect-tool.c (show_file): New.  Used as default action.
2620
2621 2002-03-28  Werner Koch  <wk@gnupg.org>
2622
2623         * divert-scd.c (encode_md_for_card): Don't do the pkcs-1 padding,
2624         the scdaemon should take care of it.
2625         (ask_for_card): Hack to not display the trailing zero.
2626
2627 2002-03-11  Werner Koch  <wk@gnupg.org>
2628
2629         * learncard.c (kpinfo_cb): Remove the content restrictions from
2630         the keyID.
2631
2632 2002-03-06  Werner Koch  <wk@gnupg.org>
2633
2634         * learncard.c: New.
2635         * divert-scd.c (ask_for_card): The serial number is binary so
2636         convert it to hex here.
2637         * findkey.c (agent_write_private_key): New.
2638         * genkey.c (store_key): And use it here.
2639         
2640         * pkdecrypt.c (agent_pkdecrypt): Changed the way the diversion is done.
2641         * divert-scd.c (divert_pkdecrypt): Changed interface and
2642         implemented it.
2643
2644 2002-03-05  Werner Koch  <wk@gnupg.org>
2645
2646         * call-scd.c (inq_needpin): New.
2647         (agent_card_pksign): Add getpin_cb args.
2648         (agent_card_pkdecrypt): New.
2649
2650 2002-03-04  Werner Koch  <wk@gnupg.org>
2651
2652         * pksign.c (agent_pksign): Changed how the diversion is done.
2653         * divert-scd.c (divert_pksign): Changed interface and implemented it.
2654         (encode_md_for_card): New.
2655         * call-scd.c (agent_card_pksign): New.
2656
2657 2002-02-28  Werner Koch  <wk@gnupg.org>
2658
2659         * pksign.c (agent_pksign): Detect whether a Smartcard is to be
2660         used and divert the operation in this case.
2661         * pkdecrypt.c (agent_pkdecrypt): Likewise
2662         * findkey.c (agent_key_from_file): Add optional arg shadow_info
2663         and have it return information about a shadowed key.
2664         * protect.c (agent_get_shadow_info): New.
2665
2666         * protect.c (snext,sskip,smatch): Moved to
2667         * sexp-parse.h: New file.
2668         * divert-scd.c: New.
2669         
2670 2002-02-27  Werner Koch  <wk@gnupg.org>
2671
2672         * protect.c (agent_shadow_key): New.
2673
2674         * command.c (cmd_learn): New command LEARN.
2675         * gpg-agent.c: New option --scdaemon-program.
2676         * call-scd.c (start_scd): New. Based on query.c
2677         * query.c: Add 2 more arguments to all uses of assuan_transact.
2678
2679 2002-02-18  Werner Koch  <wk@gnupg.org>
2680
2681         * findkey.c (unprotect): Show an error message for a bad passphrase.
2682
2683         * command.c (cmd_marktrusted): Implemented.
2684         * trustlist.c (agent_marktrusted): New.
2685         (open_list): Add APPEND arg.
2686
2687         * query.c (agent_get_confirmation): New.
2688
2689 2002-02-06  Werner Koch  <wk@gnupg.org>
2690
2691         * cache.c (housekeeping): Fixed linking in the remove case.
2692
2693 2002-02-01  Werner Koch  <wk@gnupg.org>
2694
2695         * gpg-agent.c: New option --default-cache-ttl.
2696         * cache.c (agent_put_cache): Use it.
2697         
2698         * cache.c: Add a few debug outputs.
2699
2700         * protect.c (agent_private_key_type): New.
2701         * agent.h: Add PRIVATE_KEY_ enums.
2702         * findkey.c (agent_key_from_file): Use it to decide whether we
2703         have to unprotect a key.
2704         (unprotect): Cache the passphrase.
2705         
2706         * findkey.c (agent_key_from_file,agent_key_available): The key
2707         files do now require a ".key" suffix to make a script's life
2708         easier. 
2709         * genkey.c (store_key): Ditto.
2710
2711 2002-01-31  Werner Koch  <wk@gnupg.org>
2712
2713         * genkey.c (store_key): Protect the key.
2714         (agent_genkey): Ask for the passphrase.
2715         * findkey.c (unprotect): Actually unprotect the key.
2716         * query.c (agent_askpin): Add an optional start_err_text. 
2717
2718 2002-01-30  Werner Koch  <wk@gnupg.org>
2719
2720         * protect.c: New.  
2721         (hash_passphrase): Based on the GnuPG 1.0.6 version.
2722         * protect-tool.c: New
2723
2724 2002-01-29  Werner Koch  <wk@gnupg.org>
2725
2726         * findkey.c (agent_key_available): New.
2727         * command.c (cmd_havekey): New.
2728         (register_commands): And register new command.
2729
2730 2002-01-20  Werner Koch  <wk@gnupg.org>
2731
2732         * command.c (cmd_get_passphrase): Remove the plus signs.
2733
2734         * query.c (start_pinentry): Send no-grab option to pinentry
2735         * gpg-agent.c (main): Move variable grab as no_grab to agent.h.
2736
2737 2002-01-19  Werner Koch  <wk@gnupg.org>
2738
2739         * gpg-agent.c (main): Disable core dumps.
2740
2741         * cache.c: New.
2742         * command.c (cmd_get_passphrase): Use the cache.
2743         (cmd_clear_passphrase): Ditto.
2744
2745         * gpg-agent.c:  Removed unused cruft and implement the socket
2746         based server.
2747         (my_strusage): Take bug report address from configure.ac.
2748         * command.c (start_command_handler): Add an argument to start as
2749         regular server.
2750         (start_command_handler): Enable Assuan logging.
2751
2752 2002-01-15  Werner Koch  <wk@gnupg.org>
2753
2754         * trustlist.c: New.
2755         * command.c (cmd_istrusted, cmd_listtrusted, cmd_marktrusted): New.
2756
2757 2002-01-07  Werner Koch  <wk@gnupg.org>
2758
2759         * genkey.c: Store the secret part and return the public part.
2760
2761 2002-01-03  Werner Koch  <wk@gnupg.org>
2762
2763         * command.c (cmd_get_passphrase): New.
2764         (cmd_clear_passphrase): New.
2765         * query.c (agent_get_passphrase): New.
2766
2767 2002-01-02  Werner Koch  <wk@gnupg.org>
2768
2769         * genkey.c: New.
2770         * command.c (cmd_genkey): New.
2771
2772         * command.c (rc_to_assuan_status): Removed and changed all callers
2773         to use map_to_assuan_status.
2774         
2775 2001-12-19  Werner Koch  <wk@gnupg.org>
2776
2777         * keyformat.txt: New. 
2778
2779 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
2780
2781         * query.c (start_pinentry): Add new argument to assuan_pipe_connect.
2782
2783 2001-12-18  Werner Koch  <wk@gnupg.org>
2784
2785         * Makefile.am: Use LIBGCRYPT macros
2786
2787 2001-12-14  Werner Koch  <wk@gnupg.org>
2788
2789         * gpg-agent.c (main): New option --batch.  New option --debug-wait
2790         n, so that it is possible to attach gdb when used in server mode.
2791         * query.c (agent_askpin): Don't ask in batch mode.
2792
2793         * command.c: Removed the conversion macros as they are now in
2794         ../common/util.h.
2795
2796 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2797
2798         * query.c (LINELENGTH): Removed.
2799         (agent_askpin): Use ASSUAN_LINELENGTH, not LINELENGTH.
2800
2801 2001-11-19  Werner Koch  <wk@gnupg.org>
2802
2803         * gpg-agent.c: Removed all GUI code, removed code for old
2804         protocol.  New code to use the Assuan protocol as a server and
2805         also to communicate with a new ask-passphrase utility.
2806
2807 2000-11-22  Werner Koch  <wk@gnupg.org>
2808
2809         * gpg-agent.c (main): csh support by Dan Winship, new options --sh
2810         and --csh and set default by consulting $SHELL.
2811
2812 Mon Aug 21 17:59:17 CEST 2000  Werner Koch  <wk@openit.de>
2813
2814         * gpg-agent.c (passphrase_dialog): Cleanup the window and added the
2815         user supplied text to the window.
2816         (main): Fixed segv in gtk_init when used without a command to start.
2817
2818         * gpg-agent.c: --flush option.
2819         (req_flush): New.
2820         (req_clear_passphrase): Implemented.
2821
2822 Fri Aug 18 14:27:14 CEST 2000  Werner Koch  <wk@openit.de>
2823
2824         * gpg-agent.c: New.
2825         * Makefile.am: New.
2826
2827
2828  Copyright 2001, 2002, 2003, 2004, 2005,
2829            2007, 2008, 2009, 2010 Free Software Foundation, Inc.
2830
2831  This file is free software; as a special exception the author gives
2832  unlimited permission to copy and/or distribute it, with or without
2833  modifications, as long as this notice is preserved.
2834
2835  This file is distributed in the hope that it will be useful, but
2836  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2837  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.