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