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