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