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