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