Fixed testing for an alive ssh standard socket.
[gnupg.git] / agent / ChangeLog
1 2007-12-03  Werner Koch  <wk@g10code.com>
2
3         * gpg-agent.c (main): s/standard_socket/use_standard_socket/ for
4         clarity.
5         (create_server_socket): New arg IS_SSH to avoid testing with
6         assuan commands.
7
8 2007-11-20  Werner Koch  <wk@g10code.com>
9
10         * gpg-agent.c (get_agent_scd_notify_event): New.
11         (handle_signal): Factor SIGUSR2 code out to:
12         (agent_sigusr2_action): .. New.
13         (agent_sighup_action): Print info message here and not in
14         handle_signal.
15         (handle_connections) [PTH_EVENT_HANDLE]: Call agent_sigusr2_action.
16
17         * call-scd.c (agent_scd_check_aliveness) [W32]: Implemented.
18         (start_scd) [W32]: Send event-signal option.
19
20 2007-11-19  Werner Koch  <wk@g10code.com>
21
22         * call-pinentry.c (agent_askpin): Set the tooltip for the quality
23         bar.
24
25 2007-11-15  Werner Koch  <wk@g10code.com>
26
27         * agent.h (struct server_control_s): Add XAUTHORITY and
28         PINENTRY_USER_DATA.
29         * gpg-agent.c: New option --xauthority.
30         (main, agent_init_default_ctrl) 
31         (agent_deinit_default_ctrl): Implemented
32         * command.c (cmd_updatestartuptty): Ditto.
33         * command-ssh.c (start_command_handler_ssh): Ditto.
34         * call-pinentry.c (atfork_cb): Set the environment.
35         (start_pinentry): Pass CTRL as arg to atfork_cb.
36
37 2007-11-14  Werner Koch  <wk@g10code.com>
38
39         * call-scd.c (start_scd) [W32]: Take care of fflush peculiarities.
40
41 2007-11-07  Werner Koch  <wk@g10code.com>
42
43         * agent.h: Remove errors.h.
44
45 2007-10-24  Werner Koch  <wk@g10code.com>
46
47         * genkey.c (check_passphrase_constraints): Changed the wording of
48         the warning messages.
49
50 2007-10-19  Werner Koch  <wk@g10code.com>
51
52         * protect-tool.c (get_passphrase): Use new utf8 switch fucntions.
53
54 2007-10-15  Daiki Ueno  <ueno@unixuser.org>  (wk)
55
56         * command-ssh.c (reenter_compare_cb): New function; imported from
57         genkey.c.
58         (ssh_identity_register): Ask initial passphrase twice.
59
60 2007-10-02  Werner Koch  <wk@g10code.com>
61
62         * command.c (cmd_getinfo): Add "pid" subcommand.
63
64 2007-10-01  Werner Koch  <wk@g10code.com>
65
66         * agent.h (struct server_control_s): Remove unused CONNECTION_FD.
67
68         * gpg-agent.c: Remove w32-afunix.h.  Include mkdtemp.h.
69         (socket_nonce, socket_nonce_ssh): New.
70         (create_server_socket): Use assuan socket wrappers.  Remove W32
71         specific stuff.  Save the server nonce.
72         (check_nonce): New.
73         (start_connection_thread, start_connection_thread_ssh): Call it.
74         (handle_connections): Change args to gnupg_fd_t.
75         * command.c (start_command_handler): Change LISTEN_FD to gnupg_fd_t.
76         * command-ssh.c (start_command_handler_ssh): Ditto.
77
78 2007-09-18  Werner Koch  <wk@g10code.com>
79
80         * agent.h (struct pin_entry_info_s): Add element WITH_QUALITYBAR.
81         * genkey.c (check_passphrase_constraints): New arg SILENT.
82         Changed all callers.
83         (agent_protect_and_store, agent_genkey): Enable qualitybar.
84         * call-pinentry.c (agent_askpin): Send that option.
85         (unescape_passphrase_string): New.
86         (inq_quality): New.
87         (estimate_passphrase_quality): New.
88
89 2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
90
91         * call-pinentry.c (agent_popup_message_stop): Implement kill for
92         Windows.
93
94 2007-08-28  Werner Koch  <wk@g10code.com>
95
96         * gpg-agent.c (main): Add option --faked-system-time.
97
98         * protect-tool.c (read_and_unprotect): Print the protected-at date.
99
100         * agent.h (struct server_control_s): Add member IN_PASSWD.
101         * command.c (cmd_passwd): Set it.
102         * findkey.c (try_unprotect_cb): Use it.
103
104         * protect.c (do_encryption): Replace asprintf by xtryasprint.
105         (agent_protect): Create the protected-at item.
106         (agent_unprotect): Add optional arg PROTECTED_AT.
107         (merge_lists): Add args CUTOFF and CUTLEN.
108         (agent_unprotect): Use them.
109         * findkey.c (try_unprotect_cb): Add code to test for expired keys.
110         (unprotect): Allow changing the passphrase.
111
112 2007-08-27  Werner Koch  <wk@g10code.com>
113
114         * gpg-agent.c: Add options --min-passphrase-nonalpha,
115         --check-passphrase-pattern and --enforce-passphrase-constraints.
116         (MIN_PASSPHRASE_NONALPHA): Init nonalpha option to 1.
117         (main): Declare options for gpgconf.
118         * agent.h (struct): Add members MIN_PASSPHRASE_NONALPHA,
119         ENFORCE_PASSPHRASE_CONSTRAINTS and CHECK_PASSPHRASE_PATTERN.
120         * genkey.c (nonalpha_charcount): New.
121         (check_passphrase_pattern): New.
122         (check_passphrase_constraints): Implement.  Factor some code out...
123         (take_this_one_anyway, take_this_one_anyway2): .. New.
124
125         * call-pinentry.c (agent_show_message): New.
126         (agent_askpin): We better reset the pin buffer before asking.
127
128         * trustlist.c (insert_colons): New.
129         (agent_marktrusted): Pretty print the fpr.
130
131 2007-08-22  Werner Koch  <wk@g10code.com>
132
133         * findkey.c (O_BINARY): Make sure it is defined.
134         (agent_write_private_key): Use O_BINARY
135
136         * protect-tool.c (import_p12_file): Add hack to allow importing of
137         gnupg 2.0.4 generated files.
138
139 2007-08-06  Werner Koch  <wk@g10code.com>
140
141         * trustlist.c (read_one_trustfile): Add flag "cm".
142         (agent_istrusted): Ditto.
143
144 2007-08-02  Werner Koch  <wk@g10code.com>
145
146         * gpg-agent.c: Include gc-opt-flags.h and remove their definition
147         here.
148
149 2007-07-13  Werner Koch  <wk@g10code.com>
150
151         * genkey.c (check_passphrase_constraints): Require a confirmation
152         for an empty passphrase.
153         (agent_genkey, agent_protect_and_store): No need to repeat an
154         empty passphrase.
155
156 2007-07-05  Werner Koch  <wk@g10code.com>
157
158         * call-scd.c (struct inq_needpin_s): New.
159         (inq_needpin): Pass unknown inquiries up.
160
161 2007-07-04  Werner Koch  <wk@g10code.com>
162
163         * gpg-agent.c (TIMERTICK_INTERVAL): New.
164         (fixed_gcry_pth_init, main): Kludge to fix Pth initialization.
165
166 2007-07-03  Werner Koch  <wk@g10code.com>
167
168         * gpg-agent.c (handle_connections): Do not use FD_SETSIZE for
169         select but compute the correct number.
170
171 2007-07-02  Werner Koch  <wk@g10code.com>
172
173         * command.c (cmd_reloadagent) [W32]: New.
174         (register_commands) [W32]: New command RELOADAGENT.
175
176         * Makefile.am (gpg_agent_SOURCES): Remove w32main.c and w32main.h.
177         (gpg_agent_res_ldflags): Remove icon file as we don't have a
178         proper icon yet.
179         * gpg-agent.c (main): do not include w32main.h.  Remove all calls
180         to w32main.c.
181         (agent_sighup_action): New.
182         (handle_signal): Use it.
183
184 2007-06-26  Werner Koch  <wk@g10code.com>
185
186         * gpg-agent.c (create_directories) [W32]: Made it work.
187
188 2007-06-21  Werner Koch  <wk@g10code.com>
189
190         * agent.h (ctrl_t): Remove.  It is now declared in ../common/util.h. 
191
192         * gpg-agent.c (check_for_running_agent): New arg SILENT.  Changed
193         all callers.
194         (create_server_socket): If the standard socket is in use check
195         whether a agent is running and avoid starting another one.
196
197 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
198
199         * gpg-agent.c (main): Percent escape pathname in --gpgconf-list
200         output.
201
202 2007-06-18  Werner Koch  <wk@g10code.com>
203
204         * w32main.c (build_argv): New.
205         (WinMain): Use it.
206
207         * command.c (cmd_killagent) [W32]: New.
208         (cmd_getinfo): New.
209         * gpg-agent.c (get_agent_ssh_socket_name): New.
210         (no_force_standard_socket) New.
211         (create_server_socket): Use it.
212         * Makefile.am (gpg_agent_res_ldflags): Pass windows option to ld.
213
214 2007-06-14  Werner Koch  <wk@g10code.com>
215
216         * protect-tool.c (main): Setup default socket name for
217         simple-pwquery.
218         (MAP_SPWQ_ERROR_IMPL): New.  Use map_spwq_error for spqw related
219         error codes.
220         * preset-passphrase.c (main): Setup default socket name for
221         simple-pwquery.
222         (map_spwq_error): Remove.
223         (MAP_SPWQ_ERROR_IMPL): New.  
224
225         * call-pinentry.c (start_pinentry): Use gnupg_module_name.
226         * call-scd.c (start_scd): Ditto.
227
228 2007-06-12  Werner Koch  <wk@g10code.com>
229
230         * taskbar.c: New.
231
232         * trustlist.c (read_one_trustfile): Replace GNUPG_SYSCONFDIR by a
233         function call.
234         (read_trustfiles): Ditto.
235
236         * gpg-agent.c (main): Replace some calls by init_common_subsystems.
237         * preset-passphrase.c (main): Ditto.
238         * protect-tool.c (main): Ditto.
239
240 2007-06-11  Werner Koch  <wk@g10code.com>
241
242         * Makefile.am (common_libs): Use libcommonstd macro.
243         (commonpth_libs): Use libcommonpth macro.
244
245         * protect-tool.c (main) [W32]: Call pth_init.
246
247         * preset-passphrase.c (main) [W32]: Replace the explicit Winsocket
248         init by a call to pth_init.
249
250         * trustlist.c (initialize_module_trustlist): New.
251         * gpg-agent.c (main): Call it.
252
253         * call-pinentry.c (initialize_module_query): Rename to
254         initialize_module_call_pinentry.
255
256         * minip12.c: Remove iconv.h. Add utf8conf.h.  Changed all iconv
257         calss to use these jnlib wrappers.
258
259 2007-06-06  Werner Koch  <wk@g10code.com>
260
261         * minip12.c (enum): Rename CONTEXT to ASNCONTEXT as winnt.h
262         defines such a symbol to access the process context.
263
264         * call-pinentry.c (dump_mutex_state) [W32]: Handle the W32Pth case.
265         * call-scd.c (dump_mutex_state): Ditto.
266
267         * protect-tool.c (i18n_init): Remove.
268         * preset-passphrase.c (i18n_init): Remove.
269         * gpg-agent.c (i18n_init): Remove.
270
271 2007-05-19  Marcus Brinkmann  <marcus@g10code.de>
272
273         * protect-tool.c (get_passphrase): Free ORIG_CODESET on error.
274
275 2007-05-14  Werner Koch  <wk@g10code.com>
276
277         * protect.c (make_shadow_info): Replace sprintf by smklen.
278
279 2007-04-20  Werner Koch  <wk@g10code.com>
280
281         * gpg-agent.c (my_gcry_logger, my_gcry_outofcore_handler): Removed.
282         (main): Call the setup_libgcrypt_logging helper.
283         * protect-tool.c (my_gcry_logger): Removed.
284         (main): Call the setup_libgcrypt_logging helper.
285         
286 2007-04-03  Werner Koch  <wk@g10code.com>
287
288         * trustlist.c (read_trustfiles): Take a missing trustlist as an
289         empty one.
290
291 2007-03-20  Werner Koch  <wk@g10code.com>
292
293         * protect-tool.c: New option --p12-charset. 
294         * minip12.c (p12_build): Implement it.
295
296 2007-03-19  Werner Koch  <wk@g10code.com>
297
298         * minip12.c: Include iconv.h.
299         (decrypt_block): New.
300         (parse_bag_encrypted_data, parse_bag_data): Use it here.
301         (bag_data_p, bag_decrypted_data_p): New helpers.
302
303 2007-03-06  Werner Koch  <wk@g10code.com>
304
305         * gpg-agent.c (main) <gpgconf>: Add entries for all ttl options.
306
307 2007-02-20  Werner Koch  <wk@g10code.com>
308
309         * call-pinentry.c (start_pinentry): Fix for OS X to allow loading
310         of the bundle.  Tested by Benjamin Donnachie.
311
312 2007-02-14  Werner Koch  <wk@g10code.com>
313
314         * gpg-agent.c: New option --pinentry-touch-file.
315         (get_agent_socket_name): New.
316         * agent.h (opt):  Add pinentry_touch_file.
317         * call-pinentry.c (start_pinentry): Send new option to the
318         pinentry.
319
320 2007-01-31  Moritz Schulte  <moritz@g10code.com>  (wk)
321
322         * command-ssh.c (stream_read_string): Initialize LENGTH to zero.
323         (start_command_handler_ssh): Use es_fgetc/es_ungetc to check if
324         EOF has been reached before trying to process another request.
325
326 2007-01-31  Werner Koch  <wk@g10code.com>
327
328         * command-ssh.c (start_command_handler_ssh): 
329
330         * Makefile.am (t_common_ldadd): Add LIBICONV.
331
332 2007-01-25  Werner Koch  <wk@g10code.com>
333
334         * genkey.c (check_passphrase_constraints): Get ngettext call right
335         and use UTF-8 aware strlen.
336
337         * protect-tool.c (get_passphrase): New arg OPT_CHECK.
338         (get_new_passphrase): Enable OPT_CHECK on the first call.
339         * command.c (cmd_get_passphrase): Implement option --check.
340
341 2007-01-24  Werner Koch  <wk@g10code.com>
342
343         * gpg-agent.c (MIN_PASSPHRASE_LEN): New
344         (parse_rereadable_options): New option  --min-passphrase-len.
345         * genkey.c (check_passphrase_constraints): New.
346         (agent_genkey, agent_protect_and_store): Call new function.  Fix
347         memory leak.
348
349         * call-pinentry.c (agent_askpin): Allow translation of the displayed
350         error message.
351         (agent_popup_message_start): Remove arg CANCEL_BTN.
352         (popup_message_thread): Use --one-button option.
353
354         * command.c (cmd_passwd): Now that we don't distinguish between
355         assuan and regular error codes we can jump to the end on error.
356
357 2006-12-07  David Shaw  <dshaw@jabberwocky.com>
358
359         * Makefile.am: Link to iconv for jnlib dependency.
360
361 2006-11-20  Werner Koch  <wk@g10code.com>
362
363         * call-pinentry.c (agent_popup_message_stop): Use SIGKILL.
364         * call-scd.c (inq_needpin): Implement POPUPKEYPADPROMPT and
365         DISMISSKEYPADPROMPT.
366
367 2006-11-15  Werner Koch  <wk@g10code.com>
368
369         * protect.c (make_shadow_info): Cast printf arg to unsigned int.
370         * minip12.c (parse_bag_encrypted_data): Ditto.
371         (parse_bag_data, p12_parse): Ditto.
372         * command-ssh.c (ssh_identity_register): Changed buffer_n to
373         size_t.
374
375         * agent.h (struct server_control_s): New field thread_startup.
376         * command.c (start_command_handler): Moved CTRL init code to ..
377         * gpg-agent.c (start_connection_thread): .. here.
378         (agent_deinit_default_ctrl): New.
379         (agent_init_default_ctrl): Made static.
380         (handle_connections): Allocate CTRL and pass it pth_spawn.
381         * command-ssh.c (start_command_handler_ssh): Moved CTRL init code
382         to ..
383         * gpg-agent.c (start_connection_thread_ssh): .. here.
384
385 2006-11-14  Werner Koch  <wk@g10code.com>
386
387         * command.c (bump_key_eventcounter): New.
388         (bump_card_eventcounter): New.
389         (cmd_geteventcounter): New command.
390         * gpg-agent.c (handle_signal): Call bump_card_eventcounter.
391         * findkey.c (agent_write_private_key): Call bump_key_eventcounter.
392         * trustlist.c (agent_reload_trustlist): Ditto.
393
394         * command.c (post_cmd_notify, io_monitor): New.
395         (register_commands, start_command_handler): Register them.
396
397 2006-11-09  Werner Koch  <wk@g10code.com>
398
399         * gpg-agent.c (main): In detached mode connect standard
400         descriptors to /dev/null.
401
402         * trustlist.c (read_trustfiles): Make sure not to pass a zero size
403         to realloc as the C standards says that this behaves like free.
404
405 2006-11-06  Werner Koch  <wk@g10code.com>
406
407         * protect-tool.c (my_strusage): Fixed typo.
408
409 2006-10-23  Werner Koch  <wk@g10code.com>
410
411         * gpg-agent.c (main): New command --gpgconf-test.
412
413         * minip12.c (parse_bag_encrypted_data, parse_bag_data): Allow for
414         a salt of 20 bytes.
415
416 2006-10-20  Werner Koch  <wk@g10code.com>
417
418         * Makefile.am (t_common_ldadd): Use GPG_ERROR_LIBS instead -o just -l
419
420 2006-10-19  Werner Koch  <wk@g10code.com>
421
422         * findkey.c (unprotect): Use it to avoid unnecessary calls to
423         agent_askpin.
424         * call-pinentry.c (pinentry_active_p): New.
425
426 2006-10-17  Werner Koch  <wk@g10code.com>
427
428         * Makefile.am (gpg_agent_LDADD): Link to libcommonpth.
429         (gpg_agent_CFLAGS): New.  This allows to only link this with Pth.
430
431 2006-10-16  Werner Koch  <wk@g10code.com>
432
433         * call-pinentry.c (agent_get_confirmation): Map Cancel code here too.
434         * trustlist.c (agent_marktrusted): Return Cancel instead of
435         Not_Confirmed for the first question.
436
437 2006-10-12  Werner Koch  <wk@g10code.com>
438
439         * protect-tool.c (get_passphrase): Fix if !HAVE_LANGINFO_CODESET.
440
441 2006-10-06  Werner Koch  <wk@g10code.com>
442
443         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
444         (gpg_agent_LDADD): Ditto.
445
446         * divert-scd.c (divert_pksign): Use PKAUTH for the TLS algo.
447
448 2006-10-05  Werner Koch  <wk@g10code.com>
449
450         * command.c (has_option_name): New.
451         (cmd_sethash): New --hash option.
452         * pksign.c (do_encode_raw_pkcs1): New.
453         (agent_pksign_do): Use it here for the TLS algo.
454         * agent.h (GCRY_MD_USER_TLS_MD5SHA1): New.
455         * divert-scd.c (pksign): Add case for tls-md5sha1.
456         
457         * divert-scd.c (encode_md_for_card): Check that the algo is valid.
458
459 2006-10-04  Werner Koch  <wk@g10code.com>
460
461         * call-pinentry.c (agent_get_passphrase): Changed to return the
462         unencoded passphrase.
463         (agent_askpin, agent_get_passphrase, agent_get_confirmation): Need
464         to map the cancel error.
465         * command.c (send_back_passphrase): New.
466         (cmd_get_passphrase): Use it here.  Also implement --data option.
467         (skip_options): New.
468
469 2006-09-26  Werner Koch  <wk@g10code.com>
470
471         * learncard.c (agent_handle_learn): Send back the keypair
472         information.
473
474 2006-09-25  Werner Koch  <wk@g10code.com>
475
476         * trustlist.c (read_one_trustfile): Allow extra flags.
477         (struct trustitem_s): Replaced KEYFLAGS by a FLAGS struct.
478         Changed all code to use this.
479         (agent_istrusted): New arg CTRL. Changed all callers.  Send back
480         flags.
481         * command.c (agent_write_status): New.
482
483 2006-09-20  Werner Koch  <wk@g10code.com>
484
485         * Makefile.am: Changes to allow parallel make runs.
486
487 2006-09-15  Werner Koch  <wk@g10code.com>
488
489         * trustlist.c: Entirely rewritten.
490         (agent_trustlist_housekeeping): Removed and removed all calls.
491
492 2006-09-14  Werner Koch  <wk@g10code.com>
493
494         Replaced all call gpg_error_from_errno(errno) by
495         gpg_error_from_syserror().
496
497         * call-pinentry.c (start_pinentry): Replaced pipe_connect2 by
498         pipe_connect_ext.
499         * call-scd.c (start_scd): Ditto.
500         * command.c (start_command_handler): Replaced
501         init_connected_socket_server by init_socket_server_ext.
502
503 2006-09-13  Werner Koch  <wk@g10code.com>
504
505         * preset-passphrase.c (main) [W32]: Check for WSAStartup error.
506
507 2006-09-08  Werner Koch  <wk@g10code.com>
508
509         * call-scd.c: Add signal.h as we are referencing SIGUSR2.
510
511 2006-09-06  Marcus Brinkmann  <marcus@g10code.de>
512
513         * Makefile.am (AM_CFLAGS): Add $(GPG_ERR_CFLAGS).
514         (gpg_agent_LDADD): Replace -lgpg-error with $(GPG_ERROR_LIBS).
515
516 2006-09-06  Werner Koch  <wk@g10code.com>
517
518         * query.c: Renamed to ..
519         * call-pinentry.c: .. this.
520
521         * agent.h (out_of_core): Removed.
522         (CTRL): Removed and changed everywhere to ctrl_t.
523
524         Replaced all Assuan error codes by libgpg-error codes.  Removed
525         all map_to_assuan_status and map_assuan_err.
526         
527         * gpg-agent.c (main): Call assuan_set_assuan_err_source to have Assuan
528         switch to gpg-error codes.
529         * command.c (set_error): Adjusted.
530
531 2006-09-04  Werner Koch  <wk@g10code.com>
532
533         * command.c (percent_plus_unescape): New.
534         (cmd_get_val, cmd_putval): New.
535
536 2006-08-29  Werner Koch  <wk@g10code.com>
537
538         * command-ssh.c (stream_read_mpi): Sanity check for early
539         detecting of too large keys.
540         * gpg-agent.c (my_gcry_outofcore_handler): New.
541         (main): Register it.
542         (main): No allocate 32k secure memory (was 16k).
543
544 2006-07-31  Werner Koch  <wk@g10code.com>
545
546         * preset-passphrase.c (make_hexstring): For consistency use
547         xtrymalloc and changed caller to use xfree.  Fixed function
548         comment.
549
550 2006-07-29  Marcus Brinkmann  <marcus@g10code.de>
551
552         * preset-passphrase.c (preset_passphrase): Do not strip off last
553         character of passphrase.
554         (make_hexstring): New function.
555         * command.c (cmd_preset_passphrase): Use parse_hexstring to syntax
556         check passphrase argument.  Truncate passphrase at delimiter.
557
558 2006-07-24  Werner Koch  <wk@g10code.com>
559
560         * minip12.c (build_key_bag): New args SHA1HASH and
561         KEYIDSTR. Append bag Attributes if these args are given.
562         (build_cert_sequence): ditto.
563         (p12_build): Calculate certificate hash and pass to build
564         functions.
565
566 2006-07-21  Werner Koch  <wk@g10code.com>
567
568         * minip12.c (oid_pkcs_12_keyBag): New.
569         (parse_bag_encrypted_data): New arg R_RESULT. Support keybags and
570         return the key object. 
571         (p12_parse): Take new arg into account.  Free RESULT on error.
572
573 2006-06-26  Werner Koch  <wk@g10code.com>
574
575         * gpg-agent.c (handle_signal): Print info for SIGUSR2 only in
576         verbose mode.
577
578 2006-06-22  Werner Koch  <wk@g10code.com>
579
580         * command-ssh.c (make_cstring): Use memcpy instead of strncpy.
581         (ssh_receive_mpint_list, sexp_key_extract, data_sign): Use
582         xtrycalloc instead of xtrymalloc followed by memset.
583
584 2006-06-20  Werner Koch  <wk@g10code.com>
585
586         * minip12.c (create_final): New arg PW. Add code to calculate the
587         MAC.
588
589 2006-06-09  Marcus Brinkmann  <marcus@g10code.de>
590
591         * Makefile.am (gpg_agent_LDADD): Add $(NETLIBS).
592         (gpg_protect_tool_LDADD): Likewise.
593         (gpg_preset_passphrase_LDADD): Likewise.
594
595 2006-04-09  Moritz Schulte  <moritz@g10code.com>
596
597         * command-ssh.c (ssh_request_process): Removed FIXME mentioning a
598         possible DoS attack.
599
600 2006-04-01  Moritz Schulte  <moritz@g10code.com>
601
602         * command-ssh.c (ssh_identity_register): Make KEY_GRIP_RAW be 20
603         instead of 21 bytes long; do not fill KEY_GRIP_RAW[20] with NUL
604         byte - KEY_GRIP_RAW is a raw binary string anyway.
605
606 2006-02-09  Werner Koch  <wk@g10code.com>
607
608         * call-scd.c (struct scd_local_s): New field next_local.
609         (scd_local_list): New.
610         (start_scd): Put new local into list.
611         (agent_reset_scd): Remove it from the list.
612         (agent_scd_check_aliveness): Here is the actual reason why we need
613         all this stuff.
614         (agent_reset_scd): Send the new command RESTART instead of RESET.
615
616 2005-12-16  Werner Koch  <wk@g10code.com>
617
618         * minip12.c (cram_octet_string): New
619         (p12_parse): Use it for NDEFed bags.
620         (parse_bag_data): Ditto.
621         (string_to_key, set_key_iv, crypt_block): New arg SALTLEN.
622         (p12_build): Use old value 8 for new arg.
623         (parse_bag_encrypted_data, parse_bag_data): Allow for salts of 8
624         to 16 bytes.  Add new arg R_CONSUMED.
625
626 2005-11-24  Werner Koch  <wk@g10code.com>
627
628         * minip12.c (p12_parse): Fixed for case that the key object comes
629         prior to the certificate.
630
631 2005-10-19  Werner Koch  <wk@g10code.com>
632
633         * divert-scd.c (getpin_cb): Hack to use it for a keypad message.
634
635         * call-scd.c (inq_needpin): Reworked to support the new KEYPADINFO.
636
637         * query.c (start_pinentry): Keep track of the owner.
638         (popup_message_thread, agent_popup_message_start) 
639         (agent_popup_message_stop, agent_reset_query): New.
640         * command.c (start_command_handler): Make sure a popup window gets
641         closed.
642
643 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
644
645         * Makefile.am (gpg_protect_tool_LDADD): Add ../gl/libgnu.a.
646         (gpg_preset_passphrase_LDADD, t_common_ldadd): Likewise.
647         (gpg_agent_LDADD): Add ../gl/libgnu.a after ../common/libcommon.a.
648
649 2005-09-16  Werner Koch  <wk@g10code.com>
650
651         * minip12.c (build_key_sequence, build_cert_sequence): Fixed
652         padding.
653
654 2005-09-15  Moritz Schulte  <moritz@g10code.com>
655
656         * t-protect.c (test_agent_protect): Implemented.
657         (main): Disable use of secure memory.
658
659 2005-09-09  Werner Koch  <wk@g10code.com>
660
661         * minip12.c (p12_build): Oops, array needs to be larger for the
662         certificate.
663         (build_cert_bag): Fixed yesterdays change.
664
665         * command-ssh.c (card_key_available): Let the card handler decide
666         whether the card is supported here.  Also get a short serial
667         number to return from the card handler.
668
669 2005-09-08  Werner Koch  <wk@g10code.com>
670
671         * minip12.c (build_cert_bag): Use a non constructed object.
672         i.e. 0x80 and not 0xa0.
673
674 2005-08-16  Werner Koch  <wk@g10code.com>
675
676         * gpg-agent.c (main): Use a default file name for --write-env-file.
677
678 2005-07-25  Werner Koch  <wk@g10code.com>
679
680         * findkey.c (agent_public_key_from_file): Fixed array assignment.
681         This was the cause for random segvs.
682
683 2005-06-29  Werner Koch  <wk@g10code.com>
684
685         * command-ssh.c (data_sign): Removed empty statement.
686
687 2005-06-21  Werner Koch  <wk@g10code.com>
688
689         * minip12.c (create_final): Cast size_t to ulong for printf. 
690         (build_key_bag, build_cert_bag, build_cert_sequence): Ditto.
691
692 2005-06-16  Werner Koch  <wk@g10code.com>
693
694         * protect-tool.c (make_advanced): Makde RESULT a plain char.
695         * call-scd.c (unescape_status_string): Need to cast unsigned char*
696         for strcpy.
697         (agent_card_pksign): Made arg R_BUF an unsigned char**.
698         * divert-scd.c (divert_pksign): Made SIGVAL unsigned char*.
699         (encode_md_for_card): Initialize R_VAL and R_LEN.
700         * genkey.c (store_key): Made BUF unsigned.
701         * protect.c (do_encryption): Ditto.
702         (do_encryption): Made arg PROTBEGIN unsigned. Initialize RESULT
703         and RESULTLEN even on error.
704         (merge_lists): Need to cast unsigned char * for strcpy. Initialize 
705         RESULTand RESULTLEN even on error.
706         (agent_unprotect): Likewise for strtoul.
707         (make_shadow_info): Made P and INFO plain char.
708         (agent_shadow_key): Made P plain char.
709
710 2005-06-15  Werner Koch  <wk@g10code.com>
711
712         * query.c (agent_get_passphrase): Made HEXSTRING a char*.
713         * command-ssh.c (ssh_key_grip): Made arg BUFFER unsigned.
714         (ssh_key_grip): Simplified.
715         (data_sign): Initialize variables with the definition.
716         (ssh_convert_key_to_blob): Make sure that BLOB and BLOB_SIZE
717         are set to NULL on error.  Cool, gcc-4 detects uninitialized stuff
718         beyond function boundaries; well it can't know that we do error
719         proper error handling so that this was not a real error.
720         (file_to_buffer): Likewise for BUFFER and BUFFER_N.
721         (data_sign): Likewise for SIG and SIG_N.
722         (stream_read_byte): Set B to a value even on error.
723         * command.c (cmd_genkey): Changed VALUE to char.
724         (cmd_readkey): Cast arg for gcry_sexp_sprint.
725         * agent.h (struct server_control_s): Made KEYGRIP unsigned.
726
727 2005-06-13  Werner Koch  <wk@g10code.com>
728
729         * command-ssh.c (start_command_handler_ssh): Reset the SCD.
730
731 2005-06-09  Werner Koch  <wk@g10code.com>
732
733         * gpg-agent.c (create_socket_name): New option --max-cache-ttl-ssh.
734         * cache.c (housekeeping): Use it.
735         (agent_put_cache): Use a switch to get the default ttl so that it
736         is easier to add more cases.
737
738 2005-06-06  Werner Koch  <wk@g10code.com>
739
740         * gpg-agent.c: New option --default-cache-ttl-ssh.
741         * agent.h (cache_mode_t): New.
742         * pksign.c (agent_pksign_do): New arg CACHE_MODE to replace the
743         ARG IGNORE_CACHE. Changed all callers.
744         (agent_pksign): Ditto.
745         * findkey.c (agent_key_from_file): Ditto. Canged all callers.
746         (unprotect): Ditto.
747         * command-ssh.c (data_sign): Use CACHE_MODE_SSH.
748         * cache.c (agent_get_cache): New arg CACHE_MODE.
749         (agent_put_cache): Ditto.  Store it in the cache.
750
751         * query.c (agent_query_dump_state, dump_mutex_state): New.
752         (unlock_pinentry): Reset the global context before releasing the
753         mutex.
754         * gpg-agent.c (handle_signal): Dump query.c info on SIGUSR1.
755
756         * call-scd.c (agent_scd_check_aliveness): Always do a waitpid and
757         add a timeout to the locking.
758
759 2005-06-03  Werner Koch  <wk@g10code.com>
760
761         * command.c (cmd_updatestartuptty): New.
762
763         * gpg-agent.c: New option --write-env-file.
764         
765         * gpg-agent.c (handle_connections): Make sure that the signals we
766         are handling are not blocked.Block signals while creating new
767         threads.
768
769 2005-06-02  Werner Koch  <wk@g10code.com>
770
771         * call-scd.c (agent_scd_dump_state, dump_mutex_state): New.
772         * gpg-agent.c (handle_signal): Print it on SIGUSR1.
773         (handle_connections): Include the file descriptor into the
774         threadnames.
775
776 2005-06-01  Werner Koch  <wk@g10code.com>
777
778         * gpg-agent.c: Include setenv.h.
779
780 2005-05-31  Werner Koch  <wk@g10code.com>
781
782         * agent.h (out_of_core): s/__inline__/inine.  Noted by Ray Link.
783
784 2005-05-25  Werner Koch  <wk@g10code.com>
785
786         * gpg-agent.c (main): Do not unset the DISPLAY when we are
787         continuing as child.
788
789 2005-05-24  Werner Koch  <wk@g10code.com>
790
791         * call-scd.c (inq_needpin): Skip leading spaces in of PIN
792         description.
793         * divert-scd.c (getpin_cb): Enhanced to cope with description
794         flags.
795         * query.c (agent_askpin): Add arg PROMPT_TEXT. Changed all
796         callers.
797
798 2005-05-21  Werner Koch  <wk@g10code.com>
799
800         * call-scd.c (start_scd): Don't test for an alive scdaemon here.
801         (agent_scd_check_aliveness): New.
802         * gpg-agent.c (handle_tick): Test for an alive scdaemon.
803         (handle_signal): Print thread info on SIGUSR1.
804
805 2005-05-20  Werner Koch  <wk@g10code.com>
806
807         * protect-tool.c: New option --canonical.
808         (show_file): Implement it.
809
810         * keyformat.txt: Define the created-at attribute for keys.
811
812 2005-05-18  Werner Koch  <wk@g10code.com>
813
814         * divert-scd.c (ask_for_card): Removed the card reset kludge.
815
816 2005-05-17  Werner Koch  <wk@g10code.com>
817
818         * call-scd.c (unlock_scd): Add new arg CTRL. Changed all callers.
819         (start_scd): Reoworked to allow for additional connections.
820         * agent.h (ctrl_t): Add local data for the SCdaemon.
821         * command.c (start_command_handler): Release SERVER_LOCAL.
822
823         * gpg-agent.c (create_server_socket): Use xmalloc.
824         (main): Removed option --disable-pth a dummy.  Removed non-pth
825         code path.
826         (cleanup_sh): Removed.  Not needed anymore.
827
828 2005-05-05  Moritz Schulte  <moritz@g10code.com>
829
830         * command-ssh.c (ssh_key_to_buffer): Rename to ...
831         (ssh_key_to_protected_buffer): ... this; change callers.
832         Improved documentation.
833         Use ssh_key_grip(), where gcry_pk_get_keygrip() has been used
834         before.
835         (ssh_handler_sign_request): Removed unusued variable P.
836
837 2005-04-20  Moritz Schulte  <moritz@g10code.com>
838
839         * command-ssh.c (ssh_handler_request_identities): Removed
840         debugging code (sleep call), which was commited unintenionally.
841
842 2005-04-20  Werner Koch  <wk@g10code.com>
843
844         * minip12.c (parse_bag_encrypted_data): Fix the unpadding hack.
845
846         * gpg-agent.c: New option --disable-scdaemon.
847         (handle_connections): Add time event to drive ...
848         (handle_tick): New function.
849         (main): Record the parent PID. Fixed segv when using ssh and a
850         command.
851
852         * call-scd.c (start_scd): Take care of this option.
853
854 2005-04-03  Moritz Schulte  <moritz@g10code.com>
855
856         * command-ssh.c (ssh_request_spec): New member: secret_input.
857         (REQUEST_SPEC_DEFINE): New argument: secret_input.
858         (request_specs): Add secret_input flag.
859         (request_spec_lookup): New function ...
860         (ssh_request_process): ... use it here; depending on secret_input
861         flag allocate secure or non-secure memory.
862
863 2005-03-02  Moritz Schulte  <moritz@g10code.com>
864
865         * command-ssh.c (sexp_key_extract): Removed FIXME, since
866         xtrymallos does set errno correctly by now.
867         (sexp_extract_identifier): Remove const attribute from identifier.
868         (ssh_handler_request_identities): Remove const attribute from
869         key_type; removes ugly casts and FIXME.
870         (sexp_key_extract): Remove const attribute from comment.
871         (ssh_send_key_public): Remove const attribute from
872         key_type/comment; removes ugly cast.
873         (data_sign): Remove const attribute from identifier; removes ugly
874         cast.
875         (key_secret_to_public): Remove const attribute from comment;
876         removes ugly cast.
877         (ssh_handler_sign_request): Remove const attribute from p.
878         (sexp_key_extract): Use make_cstring().
879         (ssh_key_extract_comment): Likewise.
880         (ssh_key_to_buffer): Use secure memory for memory area to hold the
881         key S-Expression.
882         Added more comments.
883
884 2005-02-25  Werner Koch  <wk@g10code.com>
885
886         * findkey.c (modify_description): Keep invalid % escapes, so that
887         %0A may pass through.
888
889         * agent.h (server_control_s): New field USE_AUTH_CALL.
890         * call-scd.c (agent_card_pksign): Make use of it.
891         * command-ssh.c (data_sign): Set the flag.
892         (ssh_send_key_public): New arg OVERRIDE_COMMENT.
893         (card_key_available): Add new arg CARDSN.
894         (ssh_handler_request_identities): Use the card s/n as comment.
895         (sexp_key_extract): Use GCRYMPI_FMT_STD.
896         (data_sign): Ditto.
897
898         * learncard.c (make_shadow_info): Moved to ..
899         * protect.c (make_shadow_info): .. here. Return NULL on malloc
900         failure. Made global.
901         * agent.h: Add prototype.
902
903 2005-02-24  Werner Koch  <wk@g10code.com>
904
905         * call-scd.c (unescape_status_string): New. Actual a copy of
906         ../g10/call-agent.c
907         (card_getattr_cb, agent_card_getattr): New.
908
909         * command-ssh.c (card_key_available): New.
910         (ssh_handler_request_identities): First see whether a card key is
911         available.
912
913         * gpg-agent.c (handle_connections): Need to check for events if
914         select returns with -1.
915
916 2005-02-23  Werner Koch  <wk@g10code.com>
917
918         * command-ssh.c (get_passphrase): Removed.
919         (ssh_identity_register): Partly rewritten.
920         (open_control_file, search_control_file, add_control_entry): New.
921         (ssh_handler_request_identities): Return only files listed in our
922         control file.
923
924         * findkey.c (unprotect): Check for allocation error.
925
926         * agent.h (opt): Add fields to record the startup terminal
927         settings.
928         * gpg-agent.c (main): Record them and do not force keep display
929         with --enable-ssh-support.
930         * command-ssh.c (start_command_handler_ssh): Use them here.
931
932         * gpg-agent.c: Renamed option --ssh-support to
933         --enable-ssh-support.
934
935         * command.c (cmd_readkey): New.
936         (register_commands): Register new command "READKEY".
937
938         * command-ssh.c (ssh_request_process): Improved logging.
939
940         * findkey.c (agent_write_private_key): Always use plain open.
941         Don't depend on an umask for permissions.
942         (agent_key_from_file): Factored file reading code out to ..
943         (read_key_file): .. new function.
944         (agent_public_key_from_file): New.
945
946 2005-02-22  Werner Koch  <wk@g10code.com>
947
948         * command-ssh.c (stream_read_string): Removed call to abort on
949         memory error because the CVS version of libgcrypt makes sure
950         that ERRNO gets always set on error even with a faulty user
951         supplied function.
952
953 2005-02-19  Moritz Schulte  <moritz@g10code.com>
954
955         * command-ssh.c (ssh_receive_mpint_list): Slightly rewritten, do
956         not use elems_secret member of key_spec.
957         (ssh_key_type_spec): Removed member: elems_secret.
958         (ssh_key_types): Removed elems_secret data.
959         (ssh_sexp_construct): Renamed to ...
960         (sexp_key_construct): ... this; changed callers.
961         (ssh_sexp_extract): Renamed to ...
962         (sexp_key_extract): ... this; changed callers.
963         (ssh_sexp_extract_key_type): Renamed to ...
964         (sexp_extract_identifier): ... this; changed callers; use
965         make_cstring().
966         Added more comments.
967
968 2005-02-18  Moritz Schulte  <moritz@g10code.com>
969
970         * command-ssh.c (ssh_sexp_construct): Rewritten generation of sexp
971         template, clarified.
972         (ssh_sexp_extract): Support shadowed-private-key-sexp; treat
973         protected-private key and shadowed-private-key as public keys.
974         (key_secret_to_public): Rewritten: simply use ssh_sexp_extract()
975         and ssh_sexp_construct().
976
977 2005-02-15  Werner Koch  <wk@g10code.com>
978
979         * findkey.c (modify_description): Don't increment OUT_LEN during
980         the second pass.
981
982 2005-02-14  Moritz Schulte  <moritz@g10code.com>
983
984         * command-ssh.c (es_read_byte): Renamed to ...
985         (stream_es_read_byte): ... this; changed callers.
986         (es_write_byte): Renamed to ...
987         (stream_write_byte): ... this; changed callers.
988         (es_read_uint32): Renamed to ...
989         (stream_read_uint32): ... this; changed callers.
990         (es_write_uint32): Renamed to ...
991         (stream_write_uint32): ... this; changed callers.
992         (es_read_data): Renamed to ...
993         (stream_read_data): ... this; changed callers.
994         (es_write_data): Renamed to ...
995         (stream_write_data): ... this; changed callers.
996         (es_read_string): Renamed to ...
997         (stream_read_string): ... this; changed callers.
998         (es_read_cstring): Renamed to ...
999         (stream_read_cstring): ... this; changed callers.
1000         (es_write_string): Renamed to ...
1001         (stream_write_string): ... this; changed callers.
1002         (es_write_cstring): Renamed to ...
1003         (stream_write_cstring): ... this; changed callers.
1004         (es_read_mpi): Renamed to ...
1005         (stream_read_mpi): ... this; changed callers.
1006         (es_write_mpi): Renamed to ...
1007         (stream_write_mpi): ... this; changed callers.
1008         (es_copy): Renamed to ...
1009         (stream_copy): ... this; changed callers.
1010         (es_read_file): Renamed to ...
1011         (file_to_buffer): ... this; changed callers.
1012         (ssh_identity_register): Removed variable description_length;
1013         changed code to use asprintf for description.
1014         (stream_write_uint32): Do not filter out the last byte of shift
1015         expression.
1016         (uint32_construct): New macro ...
1017         (stream_read_uint32): ... use it; removed unnecessary cast.
1018
1019 2005-02-03  Werner Koch  <wk@g10code.com>
1020
1021         * agent.h (agent_exit): Add JNLIB_GCC_A_NR to indicate that this
1022         function won't return.
1023
1024         * gpg-agent.c (check_for_running_agent): Initialize pid to a
1025         default value if not needed.
1026
1027         * command-ssh.c: Removed stdint.h.  s/byte_t/unsigned char/,
1028         s/uint32/u32/ becuase that is what we have always used in GnuPG.
1029         (ssh_request_specs): Moved to top of file.
1030         (ssh_key_types): Ditto.
1031         (make_cstring): Ditto.
1032         (data_sign): Don't use a variable for the passphrase prompt, make
1033         it translatable.
1034         (ssh_request_process): 
1035         
1036
1037         * findkey.c (modify_description): Renamed arguments for clarity,
1038         polished documentation.  Make comment a C-string.  Fixed case of
1039         DESCRIPTION being just "%".
1040         (agent_key_from_file): Make sure comment string to a C-string.
1041
1042         * gpg-agent.c (create_socket_name): Cleanup the implemntation, use
1043         DIMof, agent_exit, removed superflous args and return the
1044         allocated string as value.  Documented.  Changed callers.
1045         (create_server_socket): Cleanups similar to above.  Changed callers.
1046         (cleanup_do): Renamed to ..
1047         (remove_socket): .. this.  Changed caller.
1048         (handle_connections): The signals are to be handled in the select
1049         and not in the accept.  Test all FDs after returning from a
1050         select.  Remove the event tests from the accept calls.  The select
1051         already assured that the accept won't block.
1052
1053 2005-01-29  Moritz Schulte  <moritz@g10code.com>
1054
1055         * command-ssh.c (ssh_handler_request_identities)
1056         (ssh_handler_sign_request, ssh_handler_add_identity)
1057         (ssh_handler_remove_identity, ssh_handler_remove_all_identities)
1058         (ssh_handler_lock, ssh_handler_unlock): Changed to return an error
1059         code instead of a boolean.
1060         (ssh_request_process): Changed to return a boolean instead of an
1061         error; adjust caller.
1062         (ssh_request_handle_t): Adjusted type.
1063         (ssh_request_spec): New member: identifier.
1064         (REQUEST_SPEC_DEFINE): New macro; use it for initialization of
1065         request_specs[].
1066         (ssh_request_process): In debugging mode, log identifier of
1067         handler to execute.
1068         (start_command_handler_ssh): Moved most of the stream handling
1069         code ...
1070         (ssh_request_process): ... here.
1071
1072 2005-01-28  Moritz Schulte  <moritz@g10code.com>
1073
1074         * command-ssh.c (ssh_handler_add_identity): Pass ctrl to
1075         ssh_identity_register().
1076         (ssh_identity_register): New argument: ctrl; pass ctrl to
1077         get_passphrase().
1078         (get_passphrase): Pass ctrl instead of NULL to agent_askpin().
1079         (start_command_handler_ssh): Use agent_init_default_ctrl();
1080         deallocate structure members, which might be dynamically
1081         allocated.
1082         (lifetime_default): Removed variable.
1083         (ssh_handler_add_identity): Fix ttl handling; renamed variable
1084         `death' to `ttl'.
1085         (ssh_identity_register): Fix key grip handling.
1086
1087 2005-01-26  Moritz Schulte  <moritz@g10code.com>
1088
1089         * command-ssh.c (ssh_handler_sign_request): Confirm to agent
1090         protocol in case of failure.
1091
1092         * command-ssh.c: New file.
1093
1094         * Makefile.am (gpg_agent_SOURCES): New source file: command-ssh.c.
1095
1096         * findkey.c (modify_description): New function.
1097         (agent_key_from_file): Support comment field in key s-expressions.
1098
1099         * gpg-agent.c (enum cmd_and_opt_values): New item: oSSHSupport.
1100         (opts) New entry for oSSHSupport.
1101         New variable: socket_name_ssh.
1102         (cleanup_do): New function based on cleanup().
1103         (cleanup): Use cleanup_do() for socket_name and socket_name_ssh.
1104         (main): New switch case for oSSHSupport.
1105         (main): Move socket name creation code to ...
1106         (create_socket_name): ... this new function.
1107         (main): Use create_socket_name() for creating socket names for
1108         socket_name and for socket_name_ssh in case ssh support is
1109         enabled.
1110         Move socket creation code to ...
1111         (create_server_socket): ... this new function.
1112         (main): Use create_server_socket() for creating sockets.
1113         In case standard_socket is set, do not only store a socket name in
1114         socket_name, but also in socket_name_ssh.
1115         Generate additional environment info strings for ssh support.
1116         Pass additional ssh socket argument to handle_connections.
1117         (start_connection_thread_ssh): New function.
1118         (handle_connections): Use select to multiplex between gpg-agent
1119         and ssh-agent protocol.
1120
1121         * agent.h (struct opt): New member: ssh_support.
1122         (start_command_handler_ssh): Add prototype.
1123
1124 2005-01-04  Werner Koch  <wk@g10code.com>
1125
1126         * trustlist.c (agent_marktrusted): Use "Cancel" for the first
1127         confirmation and made the strings translatable.
1128
1129         * cache.c (agent_put_cache): Fix the test for using the default
1130         TTL.
1131
1132 2004-12-21  Werner Koch  <wk@g10code.com>
1133
1134         * preset-passphrase.c (preset_passphrase): Handle --passphrase.
1135
1136         * Makefile.am (gpg_preset_passphrase_LDADD): Reorder libs so that
1137         pwquery may use stuff from jnlib.  Conditionally add -lwsock2
1138         (gpg_protect_tool_LDADD): Ditto.
1139
1140         * preset-passphrase.c (main): Use default_homedir().
1141         (main) [W32]: Initialize sockets.
1142
1143 2004-12-21  Marcus Brinkmann  <marcus@g10code.de>
1144
1145         * Makefile.am (libexec_PROGRAMS): Add gpg-preset-passphrase.
1146         (gpg_preset_passphrase_SOURCES, gpg_preset_passphrase_LDADD): New
1147         targets.
1148         * agent.h (opt): New member allow_cache_passphrase.
1149         * cache.c (housekeeping): Check if R->ttl is not negative.
1150         (agent_put_cache): Allow ttl to be negative.
1151         * command.c (parse_hexstring): Allow something to follow the
1152         hexstring.
1153         (cmd_cache_passphrase): New function.
1154         (register_commands): Add it.
1155         * gpg-agent.c: Handle --allow-preset-passphrase.
1156         * preset-passphrase.c: New file.
1157
1158 2004-12-21  Werner Koch  <wk@g10code.com>
1159
1160         * gpg-agent.c (main): Use default_homedir().
1161         * protect-tool.c (main): Ditto. 
1162
1163 2004-12-20  Werner Koch  <wk@g10code.com>
1164
1165         * gpg-agent.c (main) [W32]: Now that Mutexes work we can remove
1166         the pth_init kludge.
1167         (main): Add new options --[no-]use-standard-socket.
1168         (check_for_running_agent): Check whether it is running on the
1169         standard socket.
1170
1171         * call-scd.c (init_membuf, put_membuf, get_membuf): Removed.  We
1172         now use the identical implementation from ../common/membuf.c.
1173
1174         * pksign.c (agent_pksign): Changed arg OUTFP to OUTBUF and use
1175         membuf functions to return the value.
1176         * pkdecrypt.c (agent_pkdecrypt): Ditto.
1177         * genkey.c (agent_genkey): Ditto.
1178         * command.c (cmd_pksign, cmd_pkdecrypt, cmd_genkey): Replaced
1179         assuan_get_data_fp() by a the membuf scheme.
1180         (clear_outbuf, write_and_clear_outbuf): New.
1181
1182 2004-12-19  Werner Koch  <wk@g10code.com>
1183
1184         * query.c (initialize_module_query): New.
1185         * call-scd.c (initialize_module_call_scd): New.
1186         * gpg-agent.c (main): Call them.
1187         
1188 2004-12-18  Werner Koch  <wk@g10code.com>
1189
1190         * gpg-agent.c (main):  Remove special Pth initialize.
1191
1192         * agent.h (map_assuan_err): Define in terms of
1193         map_assuan_err_with_source.
1194
1195 2004-12-17  Moritz Schulte  <moritz@g10code.com>
1196
1197         * query.c: Undo change from 2004-12-05.
1198
1199 2004-12-15  Werner Koch  <wk@g10code.com>
1200
1201         * gpg-agent.c [W32]: Various hacks to make it work.
1202
1203         * findkey.c (agent_write_private_key) [W32]: Adjust open call.
1204
1205         * call-scd.c (start_scd) [W32]: Don't check whether the daemon
1206         didn't died.  To hard to do under Windows.
1207         (start_scd) [W32]: Disable sending of the event signal option.
1208
1209         * protect-tool.c (read_file, export_p12_file) [W32]: Use setmode
1210         to get stdout and stin into binary mode.
1211
1212 2004-12-05  Moritz Schulte  <moritz@g10code.com>
1213
1214         * query.c (start_pinentry): Allow CTRL be NULL.
1215
1216 2004-10-22  Werner Koch  <wk@g10code.com>
1217
1218         * gpg-agent.c (parse_rereadable_options): Return "not handled"
1219         when the log file has not beend hadled.  This is will let the main
1220         option processing continue. Fixed a bug introduced on 2004-09-4
1221         resulting in logging to stderr until a HUP has been given.
1222         (main): Don't close the listen FD.
1223
1224 2004-09-30  Werner Koch  <wk@g10code.com>
1225
1226         * Makefile.am: Adjusted from gettext 1.14.
1227
1228 2004-09-29  Werner Koch  <wk@g10code.com>
1229
1230         * minip12.c (parse_bag_encrypted_data): Print error if a bad
1231         passphrase has been given.
1232
1233 2004-09-28  Werner Koch  <wk@g10code.com>
1234
1235         * protect.c (agent_unprotect): Fixed wiping of CLEARTEXT.  Thanks
1236         to Moritz for pointing this out.
1237
1238 2004-09-25  Moritz Schulte  <moritz@g10code.com>
1239         
1240         * agent.h: Declare: agent_pksign_do.
1241         (struct server_control_s): New member: raw_value.
1242         
1243         * pksign.c (do_encode_md): New argument: raw_value; support
1244         generation of raw (non-pkcs1) data objects; adjust callers.
1245         (agent_pksign_do): New function, based on code ripped
1246         out from agent_pksign.
1247         (agent_pksign): Use agent_pksign_do.
1248
1249         * command.c (start_command_handler): Set ctrl.digest.raw_value.
1250         
1251 2004-09-09  Werner Koch  <wk@g10code.de>
1252
1253         * gpg-agent.c (check_for_running_agent): New.
1254         (main): The default action is now to check for an already running
1255         agent.
1256         (parse_rereadable_options): Set logfile only on reread.
1257         (main): Do not print the "is development version" note.
1258
1259 2004-08-20  Werner Koch  <wk@g10code.de>
1260
1261         * gpg-agent.c: New option --max-cache-ttl.  Suggested by Alexander
1262         Belopolsky.
1263         * cache.c (housekeeping): Use it here instead of the hardwired
1264         default of 1 hour.
1265
1266         * query.c (start_pinentry): Use a timeout for the pinentry lock.
1267
1268 2004-08-18  Werner Koch  <wk@g10code.de>
1269
1270         * protect-tool.c (get_passphrase): Make sure that the default
1271         prompts passed to gpg-agent are utf-8 encoded. Add new prompt values.
1272         (import_p12_file, import_p12_file, export_p12_file): Changed calls
1273         to get_passphrase so that better prompts are displayed.
1274         (get_new_passphrase): New.
1275
1276 2004-07-22  Werner Koch  <wk@g10code.de>
1277
1278         * trustlist.c (read_list): Allow colons in the fingerprint.
1279         (headerblurb): Rephrased.
1280
1281         * gpg-agent.c (handle_connections): Increase the stack size ot 256k.
1282
1283 2004-06-20  Moritz Schulte  <moritz@g10code.com>
1284
1285         * gpg-agent.c: Include <sys/stat.h> (build fix for BSD).
1286
1287 2004-05-11  Werner Koch  <wk@gnupg.org>
1288
1289         * gpg-agent.c (handle_signal): Reload the trustlist on SIGHUP.
1290         (start_connection_thread): Hack to simulate a ticker.
1291         * trustlist.c (agent_trustlist_housekeeping) 
1292         (agent_reload_trustlist): New.  Protected all global functions
1293         here with a simple counter which is sufficient for Pth.
1294
1295 2004-05-03  Werner Koch  <wk@gnupg.org>
1296
1297         * gpg-agent.c: Remove help texts for options lile --lc-ctype.
1298         (main): New option --allow-mark-trusted. 
1299         * trustlist.c (agent_marktrusted): Use it here.
1300
1301 2004-04-30  Werner Koch  <wk@gnupg.org>
1302
1303         * protect-tool.c: New option --enable-status-msg.
1304         (store_private_key): Print status messages for imported keys.
1305         (read_and_unprotect): Ditto for bad passphrase.
1306
1307         * gpg-agent.c (parse_rereadable_options): New arg REREAD.  Allow
1308         changing oLogFile.
1309         (current_logfile): New.
1310
1311 2004-04-26  Werner Koch  <wk@gnupg.org>
1312
1313         * call-scd.c (start_scd): Do not register an event signal if we
1314         are running as a pipe server.
1315
1316 2004-04-21  Werner Koch  <wk@gnupg.org>
1317
1318         * call-scd.c (start_scd): Send event-signal option. Always check
1319         that the scdaemon is still running.
1320
1321         * gpg-agent.c (handle_signal): Do not use SIGUSR{1,2} anymore for
1322         changing the verbosity.
1323
1324 2004-04-16  Werner Koch  <wk@gnupg.org>
1325
1326         * gpg-agent.c (main): Tell the logging code that we are running
1327         detached.
1328
1329 2004-04-06  Werner Koch  <wk@gnupg.org>
1330
1331         * gpg-agent.c (main): Use new libgcrypt thread library register
1332         scheme.
1333
1334 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
1335
1336         * gpg-agent.c (main): For now, always print the default config
1337         file name for --gpgconf-list.
1338
1339 2004-03-17  Werner Koch  <wk@gnupg.org>
1340
1341         * gpg-agent.c (main) <gpgconf>: Fixed default value quoting.
1342
1343 2004-03-16  Werner Koch  <wk@gnupg.org>
1344
1345         * gpg-agent.c (parse_rereadable_options): Use the new
1346         DEFAULT_CACHE_TTL macro.
1347         (main): Updated --gpgconf-list output.
1348
1349 2004-02-21  Werner Koch  <wk@gnupg.org>
1350
1351         * command.c (cmd_passwd): Take acount of a key description.
1352
1353         * genkey.c (reenter_compare_cb): Do not set the error text.
1354         (agent_protect_and_store, agent_genkey): Force a re-enter after a
1355         non-matching passphrase.
1356         * query.c (agent_askpin): Add new arg INITIAL_ERRTEXT; changed
1357         all callers.
1358
1359 2004-02-19  Werner Koch  <wk@gnupg.org>
1360
1361         * protect-tool.c: New options --have-cert and --prompt.
1362         (export_p12_file): Read a certificate from STDIN and pass it to
1363         p12_build.  Detect a keygrip and construct the filename in that
1364         case.  Unprotcet a key if needed.  Print error messages for key
1365         formats we can't handle.
1366         (release_passphrase): New.
1367         (get_passphrase): New arg PROMPTNO. Return the allocated
1368         string. Changed all callers.
1369
1370         * minip12.c: Revamped the build part.
1371         (p12_build): New args CERT and CERTLEN.  
1372
1373 2004-02-18  Werner Koch  <wk@gnupg.org>
1374
1375         * protect-tool.c (main): Setup the used character set.
1376         * gpg-agent.c (main): Ditto.
1377
1378         * gpg-agent.c (set_debug): New.  New option --debug-level.
1379         (main): New option --gpgconf-list.
1380
1381 2004-02-17  Werner Koch  <wk@gnupg.org>
1382
1383         * pksign.c (do_encode_md): Cleaned up by using gcry_sexp_build.
1384
1385         * Makefile.am (gpg_protect_tool_SOURCES): Removed
1386         simple-pwquery.[ch], as we once moved it to ../common.
1387
1388 2004-02-13  Werner Koch  <wk@gnupg.org>
1389
1390         * command.c (cmd_setkeydesc): New.
1391         (register_commands): Add command SETKEYDESC.
1392         (cmd_pksign, cmd_pkdecrypt): Use the key description.
1393         (reset_notify): Reset the description.
1394         * findkey.c (unprotect): Add arg DESC_TEXT.
1395         (agent_key_from_file): Ditto.
1396         * pksign.c (agent_pksign): Ditto.
1397         * pkdecrypt.c (agent_pkdecrypt): Ditto. Made CIPHERTEXT an
1398         unsigned char*.
1399
1400         * protect-tool.c (main): New options --no-fail-on-exist, --homedir.
1401         (store_private_key): Use them here.
1402
1403 2004-02-12  Werner Koch  <wk@gnupg.org>
1404
1405         * protect-tool.c (read_file, main): Allow reading from stdin.
1406
1407         * Makefile.am: Include cmacros.am for common flags.
1408         (libexec_PROGRAMS): Put gpg-protect-tool there.
1409
1410 2004-02-10  Werner Koch  <wk@gnupg.org>
1411
1412         * minip12.c (parse_bag_encrypted_data): Finished implementation.
1413         (p12_parse): Add callback args.
1414         * protect-tool.c (import_p12_cert_cb): New.
1415         (import_p12_file): Use it.
1416
1417 2004-02-06  Werner Koch  <wk@gnupg.org>
1418
1419         * minip12.c (crypt_block): Add arg CIPHER_ALGO; changed all callers.
1420         (set_key_iv): Add arg KEYBYTES; changed caller.
1421
1422 2004-02-03  Werner Koch  <wk@gnupg.org>
1423
1424         * findkey.c (agent_key_from_file): Extra paranoid wipe.
1425         * protect.c (agent_unprotect): Ditto.
1426         (merge_lists): Ditto. Add arg RESULTLEN.
1427         * pkdecrypt.c (agent_pkdecrypt): Don't show the secret key even in
1428         debug mode.
1429
1430         * protect.c: Add DSA and Elgamal description.
1431
1432 2004-01-29  Werner Koch  <wk@gnupg.org>
1433
1434         * agent.h (server_control_s): Add connection_fd field.
1435         * command.c (start_command_handler): Init it here.
1436         * gpg-agent.c (agent_init_default_ctrl): and here.
1437         * call-scd.c: Add the CTRL arg to all functions calling start_scd
1438         and pass it to start_scd.  Changed all callers
1439         (start_scd): Keep track of the current active connection.
1440         (agent_reset_scd): New.
1441         * command.c (start_command_handler): Call it here.
1442         * learncard.c (agent_handle_learn): Add arg CTRL; changed caller.
1443         (send_cert_back): Ditto.
1444
1445 2004-01-28  Werner Koch  <wk@gnupg.org>
1446
1447         * trustlist.c (agent_marktrusted): Check whether the trustlist is
1448         writable.
1449
1450 2004-01-27  Werner Koch  <wk@gnupg.org>
1451
1452         * sexp-parse.h: Moved to ../common.
1453
1454 2004-01-24  Werner Koch  <wk@gnupg.org>
1455
1456         * call-scd.c (atfork_cb): New.
1457         (start_scd): Make sure secmem gets cleared.
1458         * query.c  (atfork_cb): New.
1459         (start_pinentry): Make sure secmem gets cleared.
1460
1461 2004-01-16  Werner Koch  <wk@gnupg.org>
1462
1463         * findkey.c (agent_key_from_file): Now return an error code so
1464         that we have more detailed error messages in the upper layers.
1465         This fixes the handling of pinentry's cancel button. 
1466         * pksign.c (agent_pksign): Changed accordingly.
1467         * pkdecrypt.c (agent_pkdecrypt): Ditto.
1468         * command.c (cmd_passwd): Ditto.
1469
1470 2003-12-16  Werner Koch  <wk@gnupg.org>
1471
1472         * gpg-agent.c (main): Set the prefixes for assuan logging.
1473
1474 2003-12-15  Werner Koch  <wk@gnupg.org>
1475
1476         * protect.c (do_encryption): Use gcry_create_nonce instad of the
1477         obsolete WEAK_RANDOM.
1478
1479 2003-11-20  Werner Koch  <wk@gnupg.org>
1480
1481         * sexp-parse.h (snext): Don't use atoi_1 and digitp macros, so
1482         that this file is useful by other applications too.
1483
1484 2003-10-27  Werner Koch  <wk@gnupg.org>
1485
1486         * command.c (cmd_get_confirmation): New command.
1487
1488 2003-08-20  Timo Schulz  <twoaday@freakmail.de>
1489
1490         * pksign.c (do_encode_md): Allocate enough space. Cast md
1491         byte to unsigned char to prevent sign extension.
1492         
1493 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
1494
1495         * pksign.c (do_encode_md): Due to the fact pkcs#1 padding
1496         is now in Libgcrypt, use the new interface.
1497         
1498 2003-07-31  Werner Koch  <wk@gnupg.org>
1499
1500         * Makefile.am (gpg_agent_LDADD): Added INTLLIBS.
1501         (gpg_protect_tool_SOURCES): Added simple-pwquery.[ch]
1502
1503 2003-07-27  Werner Koch  <wk@gnupg.org>
1504
1505         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
1506
1507 2003-07-15  Werner Koch  <wk@gnupg.org>
1508
1509         * simple-pwquery.c, simple-pwquery.h:  Moved to ../common.
1510         * Makefile.am (gpg_protect_tool_LDADD): Add simple-pwquery.o.
1511         Removed it from xx_SOURCES.
1512
1513 2003-07-04  Werner Koch  <wk@gnupg.org>
1514
1515         * gpg-agent.c (handle_connections): Kludge to allow use of Pth 1
1516         and 2.
1517
1518 2003-06-30  Werner Koch  <wk@gnupg.org>
1519
1520         * call-scd.c (learn_status_cb): Store the serialno in PARM.
1521
1522 2003-06-26  Werner Koch  <wk@gnupg.org>
1523
1524         * call-scd.c (agent_card_serialno): Don't do a RESET anymore.
1525
1526 2003-06-25  Werner Koch  <wk@gnupg.org>
1527
1528         * command.c (cmd_scd): New.
1529         * call-scd.c (agent_card_scd): New.
1530         * divert-scd.c (divert_generic_cmd): New
1531
1532         * call-scd.c (agent_card_learn): New callback args SINFO.
1533         (learn_status_cb): Pass all other status lines to the sinfo
1534         callback.
1535         * learncard.c (release_sinfo, sinfo_cb): New.
1536         (agent_handle_learn): Pass the new cb to the learn function and
1537         pass the collected information back to the client's assuan
1538         connection.
1539
1540         * gpg-agent.c (main): Moved pth_init before gcry_check_version.
1541
1542 2003-06-24  Werner Koch  <wk@gnupg.org>
1543
1544         * gpg-agent.c (handle_connections): Adjusted for Pth 2.0
1545
1546         Adjusted for changes in the libgcrypt API. Some more fixes for the
1547         libgpg-error stuff.  
1548
1549 2003-06-04  Werner Koch  <wk@gnupg.org>
1550
1551         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
1552
1553 2003-06-03  Werner Koch  <wk@gnupg.org>
1554
1555         Changed all error codes in all files to the new libgpg-error scheme.
1556
1557         * agent.h: Include gpg-error.h and errno.h
1558         * Makefile.am: Link with libgpg-error
1559
1560         * query.c: assuan.h is now a system header.
1561         * genkey.c (agent_genkey): Fixed silly use of xmalloc by
1562         xtrymalloc.
1563
1564 2003-04-29  Werner Koch  <wk@gnupg.org>
1565
1566         * command.c (register_commands): Adjusted for new Assuan semantics.
1567
1568         * Makefile.am: Don't override LDFLAGS.
1569
1570 2002-12-04  Werner Koch  <wk@gnupg.org>
1571
1572         * gpg-agent.c: New variable config_filename.
1573         (parse_rereadable_options): New.
1574         (main): Use it here.  Add setting of default values, set
1575         config_filename.
1576         (reread_configuration): Filled with actual code.
1577
1578 2002-12-03  Werner Koch  <wk@gnupg.org>
1579
1580         * protect-tool.c (read_key): Don't run make_canonical on a NULL
1581         buffer.
1582
1583         * command.c (parse_hexstring): New.
1584         (cmd_sethash): Use it.
1585         (parse_keygrip): New.
1586         (cmd_havekey, cmd_sigkey): Use it.
1587         (cmd_passwd): New.
1588         * genkey.c (agent_protect_and_store): New.
1589         (store_key): Add arg FORCE.
1590         (agent_genkey): Pass false to this force of store_key.
1591
1592 2002-11-13  Werner Koch  <wk@gnupg.org>
1593
1594         * gpg-agent.c (main): Switch all messages to utf-8.
1595
1596         * simple-pwquery.c (agent_send_all_options): Use $GPG_TTY and
1597         stdin with ttyname.
1598
1599         * cache.c (new_data): Uiih - /sizeof d/sizeof *d/.
1600
1601 2002-11-10  Werner Koch  <wk@gnupg.org>
1602
1603         * command.c (option_handler): Fix keep_tty check.
1604
1605 2002-11-06  Werner Koch  <wk@gnupg.org>
1606
1607         * gpg-agent.c (main): Make sure we have a default ttyname.
1608         * command.c (option_handler): Check opt.keep_tty here
1609         * query.c (start_pinentry): but not anymore here.
1610
1611 2002-11-05  Werner Koch  <wk@gnupg.org>
1612
1613         * agent.h (opt,server_control_s): Move display and lc_ variables
1614         to the control struct so that they are per connection.
1615         * gpg-agent.c (agent_init_default_ctrl): New.
1616         (main): Assign those command line options to new default_* variables.
1617         Reset DISPLAY in server mode so that tehre is no implicit default.
1618         * command.c (start_command_handler): Initialize and deinitialize
1619         the control values.
1620         (option_handler): Work on the ctrl values and not on the opt.
1621         * query.c (start_pinentry): New argument CTRL to set the display
1622         connection specific.  Changed all callers to pass this value.
1623         (agent_askpin,agent_get_passphrase,agent_get_confirmation): Add
1624         CTRL arg and pass it ot start_pinentry.
1625         * command.c (cmd_get_passphrase): Pass CTRL argument.
1626         * trustlist.c (agent_marktrusted):  Add CTRL argument  
1627         * command.c (cmd_marktrusted): Pass CTRL argument
1628         * divert-scd.c (ask_for_card):  Add CTRL arg. 
1629         (divert_pksign,divert_pkdecrypt): Ditto.  Changed caller.
1630         (getpin_cb): Use OPAQUE to pass the CTRL variable.  Changed both 
1631         users.
1632         * findkey.c (unprotect): Add CTRL arg.
1633         (agent_key_from_file): Ditto.
1634
1635         * query.c (unlock_pinentry): Disconnect the pinentry so that we
1636         start a new one for each request.  This is required to support
1637         clients with different environments (e.g. X magic cookies).
1638
1639 2002-09-05  Neal H. Walfield  <neal@cs.uml.edu>
1640
1641         * gpg-agent.c (main) [USE_GNU_PTH]: No need to call
1642         assuan_set_io_func as assuan is smart.
1643
1644 2002-09-25  Werner Koch  <wk@gnupg.org>
1645
1646         * gpg-agent.c (handle_signal): Flush cache on SIGHUP.
1647         * cache.c (agent_flush_cache): New.
1648
1649         * gpg-agent.c, agent.h: Add --keep-display and --keep-tty.
1650         * query.c (start_pinentry): Implement them.  The option passing
1651         needs more thoughts.
1652
1653 2002-09-09  Werner Koch  <wk@gnupg.org>
1654
1655         * gpg-agent.c (create_private_keys_directory)
1656         (create_directories): New.
1657         (main): Try to create a home directory.
1658
1659 2002-09-04  Neal H. Walfield  <neal@g10code.de>
1660
1661         * gpg-agent.c (main): Use sigaction, not signal.
1662
1663 2002-09-03  Neal H. Walfield  <neal@g10code.de>
1664
1665         * findkey.c: Include <fcntl.h>.
1666         (agent_write_private_key): Prefer POSIX compatibity, open and
1667         fdopen, over the simplicity of GNU extensions, fopen(file, "x").
1668
1669 2002-08-22  Werner Koch  <wk@gnupg.org>
1670
1671         * query.c (agent_askpin): Provide the default desc text depending
1672         on the pininfo.  Do the basic PIN verification only when
1673         min_digits is set.
1674
1675 2002-08-21  Werner Koch  <wk@gnupg.org>
1676
1677         * query.c (agent_askpin): Hack to show the right default prompt.
1678         (agent_get_passphrase): Ditto.
1679
1680         * trans.c: Removed and replaced all usages with standard _()
1681
1682         * divert-scd.c (getpin_cb): Pass a more descritive text to the
1683         pinentry.
1684
1685         * Makefile.am: Renamed the binary protect-tool to gpg-protect-tool.
1686         * protect-tool.c: Removed the note about internal use only.
1687
1688         * gpg-agent.c (main): New option --daemon so that the program is
1689         not accidently started in the background.
1690
1691 2002-08-16  Werner Koch  <wk@gnupg.org>
1692
1693         * call-scd.c (learn_status_cb): Handle CERTINFO status.
1694         (agent_card_learn): Add args for certinfo cb.
1695         * learncard.c (release_certinfo,certinfo_cb): New.
1696         (send_cert_back): New. With factored out code from ..
1697         (agent_handle_learn): here.  Return certinfo stuff.
1698
1699 2002-07-26  Werner Koch  <wk@gnupg.org>
1700
1701         * gpg-agent.c (main): New option --ignore-cache-for-signing.
1702         * command.c (option_handler): New server option
1703         use-cache-for-signing defaulting to true.
1704         (cmd_pksign): handle global and per session option.
1705         * findkey.c (agent_key_from_file, unprotect): New arg
1706         ignore_cache.  Changed all callers.
1707         * pksign.c (agent_pksign): Likewise.
1708
1709 2002-06-29  Werner Koch  <wk@gnupg.org>
1710
1711         * query.c (start_pinentry): Use GNUPG_DERAULT_PINENTRY.
1712         * call-scd.c (start_scd): Use GNUPG_DEFAULT_SCDAEMON.
1713
1714 2002-06-28  Werner Koch  <wk@gnupg.org>
1715
1716         * protect-tool.c (export_p12_file): New.
1717         (main): New command --p12-export.
1718         * minip12.c (create_final,p12_build,compute_tag_length): New.
1719         (store_tag_length): New.
1720
1721 2002-06-27  Werner Koch  <wk@gnupg.org>
1722
1723         * minip12.c (crypt_block): Renamed from decrypt_block, add arg to
1724         allow encryption.
1725
1726         * Makefile.am (pkglib_PROGRAMS): Put protect-tool there.
1727
1728         * findkey.c (agent_write_private_key,agent_key_from_file)
1729         (agent_key_available): Use GNUPG_PRIVATE_KEYS_DIR constant.
1730         * gpg-agent.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
1731
1732         * protect-tool.c (store_private_key): New.
1733         (import_p12_file): Store the new file if requested.
1734         (main): New options --force and --store.
1735
1736         * gpg-agent.c (main): Set a global flag when running detached.
1737         * query.c (start_pinentry): Pass the list of FD to keep in the
1738         child when not running detached.
1739         * call-scd.c (start_scd): Ditto.
1740
1741 2002-06-26  Werner Koch  <wk@gnupg.org>
1742
1743         * command.c (cmd_istrusted, cmd_listtrusted, cmd_marktrusted)
1744         (cmd_pksign, cmd_pkdecrypt, cmd_genkey, cmd_get_passphrase)
1745         (cmd_learn): Print an error message for a failed operation.
1746
1747         * simple-pwquery.c, simple-pwquery.h: New.
1748         * protect-tool. (get_passphrase): New, used to get a passphrase
1749         from the agent if none was given on the command line.
1750
1751 2002-06-25  Werner Koch  <wk@gnupg.org>
1752
1753         * protect-tool.c (rsa_key_check): New.
1754         (import_p12_file): New.
1755         (main): New command --p12-import.
1756         * minip12.c, minip12.h: New.
1757
1758 2002-06-24  Werner Koch  <wk@gnupg.org>
1759
1760         * protect-tool.c (read_file): New.
1761         (read_key): Factored most code out to read_file.
1762
1763 2002-06-17  Werner Koch  <wk@gnupg.org>
1764
1765         * agent.h: Add a callback function to the pin_entry_info structure.
1766         * query.c (agent_askpin): Use the callback to check for a correct
1767         PIN.  Removed the start_err_text argument because it is not
1768         anymore needed; changed callers.
1769         * findkey.c (unprotect): Replace our own check loop by a callback.
1770         (try_unprotect_cb): New.
1771         * genkey.c (reenter_compare_cb): New.
1772         (agent_genkey): Use this callback here.  Fixed setting of the pi2
1773         variable and a segv in case of an empty PIN.
1774
1775         * divert-scd.c (getpin_cb): Removed some unused stuff and
1776         explained what we still have to change.
1777
1778 2002-06-12  Werner Koch  <wk@gnupg.org>
1779
1780         * gpg-agent.c (main): New option --disable-pth.
1781
1782 2002-06-11  Werner Koch  <wk@gnupg.org>
1783
1784         * protect-tool.c: Add command --show-keygrip
1785         (show_keygrip): New.
1786
1787 2002-05-23  Werner Koch  <wk@gnupg.org>
1788
1789         * call-scd.c: Seirialized all scdaeom access when using Pth.
1790
1791         * cache.c: Made the cache Pth-thread-safe.
1792         (agent_unlock_cache_entry): New.
1793         * findkey.c (unprotect): Unlock the returned cache value.
1794         * command.c (cmd_get_passphrase): Ditto.
1795
1796         * gpg-agent.c (main): Register pth_read/write with Assuan.
1797
1798 2002-05-22  Werner Koch  <wk@gnupg.org>
1799
1800         * query.c: Serialized all pinentry access when using Pth.
1801
1802         * gpg-agent.c (handle_signal,start_connection_thread)
1803         (handle_connections): New
1804         (main): Use the new Pth stuff to allow concurrent connections.
1805         * command.c (start_command_handler): Add new arg FD so that the
1806         fucntion can also be used for an already connected socket.
1807         * Makefile.am: Link with Pth.
1808
1809 2002-05-14  Werner Koch  <wk@gnupg.org>
1810
1811         * cache.c (housekeeping, agent_put_cache): Use our time() wrapper.
1812
1813 2002-04-26  Werner Koch  <wk@gnupg.org>
1814
1815         * cache.c (agent_put_cache): Reinitialize the creation time and
1816         the ttl when reusing a slot.
1817
1818         * call-scd.c (start_scd): Print debug messages only with debug
1819         flags set.
1820         * query.c (start_pinentry): Ditto.
1821
1822 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
1823
1824         * agent.h (agent_get_confirmation): Replace paramter prompt with
1825         two parameters ok and cancel.
1826         * query.c (agent_get_confirmation): Likewise.  Implement this.
1827         * trustlist.c (agent_marktrusted): Fix invocation of
1828         agent_get_confirmation.
1829         * divert-scd.c (ask_for_card): Likewise.
1830
1831 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
1832
1833         * agent.h (struct opt): Add members display, ttyname, ttytype,
1834         lc_ctype, and lc_messages.
1835         * gpg-agent.c (enum cmd_and_opt_values): Add oDisplay, oTTYname,
1836         oTTYtype, oLCctype, and LCmessages.
1837         (main): Handle these options.
1838         * command.c (option_handler): New function.
1839         (register_commands): Register option handler.
1840         * query.c (start_pinentry): Pass the various display and tty
1841         options to the pinentry.
1842
1843 2002-04-05  Werner Koch  <wk@gnupg.org>
1844
1845         * protect-tool.c (show_file): New.  Used as default action.
1846
1847 2002-03-28  Werner Koch  <wk@gnupg.org>
1848
1849         * divert-scd.c (encode_md_for_card): Don't do the pkcs-1 padding,
1850         the scdaemon should take care of it.
1851         (ask_for_card): Hack to not display the trailing zero.
1852
1853 2002-03-11  Werner Koch  <wk@gnupg.org>
1854
1855         * learncard.c (kpinfo_cb): Remove the content restrictions from
1856         the keyID.
1857
1858 2002-03-06  Werner Koch  <wk@gnupg.org>
1859
1860         * learncard.c: New.
1861         * divert-scd.c (ask_for_card): The serial number is binary so
1862         convert it to hex here.
1863         * findkey.c (agent_write_private_key): New.
1864         * genkey.c (store_key): And use it here.
1865         
1866         * pkdecrypt.c (agent_pkdecrypt): Changed the way the diversion is done.
1867         * divert-scd.c (divert_pkdecrypt): Changed interface and
1868         implemented it.
1869
1870 2002-03-05  Werner Koch  <wk@gnupg.org>
1871
1872         * call-scd.c (inq_needpin): New.
1873         (agent_card_pksign): Add getpin_cb args.
1874         (agent_card_pkdecrypt): New.
1875
1876 2002-03-04  Werner Koch  <wk@gnupg.org>
1877
1878         * pksign.c (agent_pksign): Changed how the diversion is done.
1879         * divert-scd.c (divert_pksign): Changed interface and implemented it.
1880         (encode_md_for_card): New.
1881         * call-scd.c (agent_card_pksign): New.
1882
1883 2002-02-28  Werner Koch  <wk@gnupg.org>
1884
1885         * pksign.c (agent_pksign): Detect whether a Smartcard is to be
1886         used and divert the operation in this case.
1887         * pkdecrypt.c (agent_pkdecrypt): Likewise
1888         * findkey.c (agent_key_from_file): Add optional arg shadow_info
1889         and have it return information about a shadowed key.
1890         * protect.c (agent_get_shadow_info): New.
1891
1892         * protect.c (snext,sskip,smatch): Moved to
1893         * sexp-parse.h: New file.
1894         * divert-scd.c: New.
1895         
1896 2002-02-27  Werner Koch  <wk@gnupg.org>
1897
1898         * protect.c (agent_shadow_key): New.
1899
1900         * command.c (cmd_learn): New command LEARN.
1901         * gpg-agent.c: New option --scdaemon-program.
1902         * call-scd.c (start_scd): New. Based on query.c
1903         * query.c: Add 2 more arguments to all uses of assuan_transact.
1904
1905 2002-02-18  Werner Koch  <wk@gnupg.org>
1906
1907         * findkey.c (unprotect): Show an error message for a bad passphrase.
1908
1909         * command.c (cmd_marktrusted): Implemented.
1910         * trustlist.c (agent_marktrusted): New.
1911         (open_list): Add APPEND arg.
1912
1913         * query.c (agent_get_confirmation): New.
1914
1915 2002-02-06  Werner Koch  <wk@gnupg.org>
1916
1917         * cache.c (housekeeping): Fixed linking in the remove case.
1918
1919 2002-02-01  Werner Koch  <wk@gnupg.org>
1920
1921         * gpg-agent.c: New option --default-cache-ttl.
1922         * cache.c (agent_put_cache): Use it.
1923         
1924         * cache.c: Add a few debug outputs.
1925
1926         * protect.c (agent_private_key_type): New.
1927         * agent.h: Add PRIVATE_KEY_ enums.
1928         * findkey.c (agent_key_from_file): Use it to decide whether we
1929         have to unprotect a key.
1930         (unprotect): Cache the passphrase.
1931         
1932         * findkey.c (agent_key_from_file,agent_key_available): The key
1933         files do now require a ".key" suffix to make a script's life
1934         easier. 
1935         * genkey.c (store_key): Ditto.
1936
1937 2002-01-31  Werner Koch  <wk@gnupg.org>
1938
1939         * genkey.c (store_key): Protect the key.
1940         (agent_genkey): Ask for the passphrase.
1941         * findkey.c (unprotect): Actually unprotect the key.
1942         * query.c (agent_askpin): Add an optional start_err_text. 
1943
1944 2002-01-30  Werner Koch  <wk@gnupg.org>
1945
1946         * protect.c: New.  
1947         (hash_passphrase): Based on the GnuPG 1.0.6 version.
1948         * protect-tool.c: New
1949
1950 2002-01-29  Werner Koch  <wk@gnupg.org>
1951
1952         * findkey.c (agent_key_available): New.
1953         * command.c (cmd_havekey): New.
1954         (register_commands): And register new command.
1955
1956 2002-01-20  Werner Koch  <wk@gnupg.org>
1957
1958         * command.c (cmd_get_passphrase): Remove the plus signs.
1959
1960         * query.c (start_pinentry): Send no-grab option to pinentry
1961         * gpg-agent.c (main): Move variable grab as no_grab to agent.h.
1962
1963 2002-01-19  Werner Koch  <wk@gnupg.org>
1964
1965         * gpg-agent.c (main): Disable core dumps.
1966
1967         * cache.c: New.
1968         * command.c (cmd_get_passphrase): Use the cache.
1969         (cmd_clear_passphrase): Ditto.
1970
1971         * gpg-agent.c:  Removed unused cruft and implement the socket
1972         based server.
1973         (my_strusage): Take bug report address from configure.ac.
1974         * command.c (start_command_handler): Add an argument to start as
1975         regular server.
1976         (start_command_handler): Enable Assuan logging.
1977
1978 2002-01-15  Werner Koch  <wk@gnupg.org>
1979
1980         * trustlist.c: New.
1981         * command.c (cmd_istrusted, cmd_listtrusted, cmd_marktrusted): New.
1982
1983 2002-01-07  Werner Koch  <wk@gnupg.org>
1984
1985         * genkey.c: Store the secret part and return the public part.
1986
1987 2002-01-03  Werner Koch  <wk@gnupg.org>
1988
1989         * command.c (cmd_get_passphrase): New.
1990         (cmd_clear_passphrase): New.
1991         * query.c (agent_get_passphrase): New.
1992
1993 2002-01-02  Werner Koch  <wk@gnupg.org>
1994
1995         * genkey.c: New.
1996         * command.c (cmd_genkey): New.
1997
1998         * command.c (rc_to_assuan_status): Removed and changed all callers
1999         to use map_to_assuan_status.
2000         
2001 2001-12-19  Werner Koch  <wk@gnupg.org>
2002
2003         * keyformat.txt: New. 
2004
2005 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
2006
2007         * query.c (start_pinentry): Add new argument to assuan_pipe_connect.
2008
2009 2001-12-18  Werner Koch  <wk@gnupg.org>
2010
2011         * Makefile.am: Use LIBGCRYPT macros
2012
2013 2001-12-14  Werner Koch  <wk@gnupg.org>
2014
2015         * gpg-agent.c (main): New option --batch.  New option --debug-wait
2016         n, so that it is possible to attach gdb when used in server mode.
2017         * query.c (agent_askpin): Don't ask in batch mode.
2018
2019         * command.c: Removed the conversion macros as they are now in
2020         ../common/util.h.
2021
2022 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2023
2024         * query.c (LINELENGTH): Removed.
2025         (agent_askpin): Use ASSUAN_LINELENGTH, not LINELENGTH.
2026
2027 2001-11-19  Werner Koch  <wk@gnupg.org>
2028
2029         * gpg-agent.c: Removed all GUI code, removed code for old
2030         protocol.  New code to use the Assuan protocol as a server and
2031         also to communicate with a new ask-passphrase utility.
2032
2033 2000-11-22  Werner Koch  <wk@gnupg.org>
2034
2035         * gpg-agent.c (main): csh support by Dan Winship, new options --sh
2036         and --csh and set default by consulting $SHELL.
2037
2038 Mon Aug 21 17:59:17 CEST 2000  Werner Koch  <wk@openit.de>
2039
2040         * gpg-agent.c (passphrase_dialog): Cleanup the window and added the
2041         user supplied text to the window.
2042         (main): Fixed segv in gtk_init when used without a command to start.
2043
2044         * gpg-agent.c: --flush option.
2045         (req_flush): New.
2046         (req_clear_passphrase): Implemented.
2047
2048 Fri Aug 18 14:27:14 CEST 2000  Werner Koch  <wk@openit.de>
2049
2050         * gpg-agent.c: New.
2051         * Makefile.am: New.
2052
2053
2054  Copyright 2001, 2002, 2003, 2004, 2005,
2055            2007 Free Software Foundation, Inc.
2056
2057  This file is free software; as a special exception the author gives
2058  unlimited permission to copy and/or distribute it, with or without
2059  modifications, as long as this notice is preserved.
2060
2061  This file is distributed in the hope that it will be useful, but
2062  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2063  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.