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