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