2005-02-18 Moritz Schulte <moritz@g10code.com>
[gnupg.git] / agent / ChangeLog
1 2005-02-18  Moritz Schulte  <moritz@g10code.com>
2
3         * command-ssh.c (ssh_sexp_construct): Rewritten generation of sexp
4         template, clarified.
5         (ssh_sexp_extract): Support shadowed-private-key-sexp; treat
6         protected-private key and shadowed-private-key as public keys.
7         (key_secret_to_public): Rewritten: simply use ssh_sexp_extract()
8         and ssh_sexp_construct().
9
10 2005-02-15  Werner Koch  <wk@g10code.com>
11
12         * findkey.c (modify_description): Don't increment OUT_LEN during
13         the second pass.
14
15 2005-02-14  Moritz Schulte  <moritz@g10code.com>
16
17         * command-ssh.c (es_read_byte): Renamed to ...
18         (stream_es_read_byte): ... this; changed callers.
19         (es_write_byte): Renamed to ...
20         (stream_write_byte): ... this; changed callers.
21         (es_read_uint32): Renamed to ...
22         (stream_read_uint32): ... this; changed callers.
23         (es_write_uint32): Renamed to ...
24         (stream_write_uint32): ... this; changed callers.
25         (es_read_data): Renamed to ...
26         (stream_read_data): ... this; changed callers.
27         (es_write_data): Renamed to ...
28         (stream_write_data): ... this; changed callers.
29         (es_read_string): Renamed to ...
30         (stream_read_string): ... this; changed callers.
31         (es_read_cstring): Renamed to ...
32         (stream_read_cstring): ... this; changed callers.
33         (es_write_string): Renamed to ...
34         (stream_write_string): ... this; changed callers.
35         (es_write_cstring): Renamed to ...
36         (stream_write_cstring): ... this; changed callers.
37         (es_read_mpi): Renamed to ...
38         (stream_read_mpi): ... this; changed callers.
39         (es_write_mpi): Renamed to ...
40         (stream_write_mpi): ... this; changed callers.
41         (es_copy): Renamed to ...
42         (stream_copy): ... this; changed callers.
43         (es_read_file): Renamed to ...
44         (file_to_buffer): ... this; changed callers.
45         (ssh_identity_register): Removed variable description_length;
46         changed code to use asprintf for description.
47         (stream_write_uint32): Do not filter out the last byte of shift
48         expression.
49         (uint32_construct): New macro ...
50         (stream_read_uint32): ... use it; removed unnecessary cast.
51
52 2005-02-03  Werner Koch  <wk@g10code.com>
53
54         * agent.h (agent_exit): Add JNLIB_GCC_A_NR to indicate that this
55         function won't return.
56
57         * gpg-agent.c (check_for_running_agent): Initialize pid to a
58         default value if not needed.
59
60         * command-ssh.c: Removed stdint.h.  s/byte_t/unsigned char/,
61         s/uint32/u32/ becuase that is what we have always used in GnuPG.
62         (ssh_request_specs): Moved to top of file.
63         (ssh_key_types): Ditto.
64         (make_cstring): Ditto.
65         (data_sign): Don't use a variable for the passphrase prompt, make
66         it translatable.
67         (ssh_request_process): 
68         
69
70         * findkey.c (modify_description): Renamed arguments for clarity,
71         polished documentation.  Make comment a C-string.  Fixed case of
72         DESCRIPTION being just "%".
73         (agent_key_from_file): Make sure comment string to a C-string.
74
75         * gpg-agent.c (create_socket_name): Cleanup the implemntation, use
76         DIMof, agent_exit, removed superflous args and return the
77         allocated string as value.  Documented.  Changed callers.
78         (create_server_socket): Cleanups similar to above.  Changed callers.
79         (cleanup_do): Renamed to ..
80         (remove_socket): .. this.  Changed caller.
81         (handle_connections): The signals are to be handled in the select
82         and not in the accept.  Test all FDs after returning from a
83         select.  Remove the event tests from the accept calls.  The select
84         already assured that the accept won't block.
85
86 2005-01-29  Moritz Schulte  <moritz@g10code.com>
87
88         * command-ssh.c (ssh_handler_request_identities)
89         (ssh_handler_sign_request, ssh_handler_add_identity)
90         (ssh_handler_remove_identity, ssh_handler_remove_all_identities)
91         (ssh_handler_lock, ssh_handler_unlock): Changed to return an error
92         code instead of a boolean.
93         (ssh_request_process): Changed to return a boolean instead of an
94         error; adjust caller.
95         (ssh_request_handle_t): Adjusted type.
96         (ssh_request_spec): New member: identifier.
97         (REQUEST_SPEC_DEFINE): New macro; use it for initialization of
98         request_specs[].
99         (ssh_request_process): In debugging mode, log identifier of
100         handler to execute.
101         (start_command_handler_ssh): Moved most of the stream handling
102         code ...
103         (ssh_request_process): ... here.
104
105 2005-01-28  Moritz Schulte  <moritz@g10code.com>
106
107         * command-ssh.c (ssh_handler_add_identity): Pass ctrl to
108         ssh_identity_register().
109         (ssh_identity_register): New argument: ctrl; pass ctrl to
110         get_passphrase().
111         (get_passphrase): Pass ctrl instead of NULL to agent_askpin().
112         (start_command_handler_ssh): Use agent_init_default_ctrl();
113         deallocate structure members, which might be dynamically
114         allocated.
115         (lifetime_default): Removed variable.
116         (ssh_handler_add_identity): Fix ttl handling; renamed variable
117         `death' to `ttl'.
118         (ssh_identity_register): Fix key grip handling.
119
120 2005-01-26  Moritz Schulte  <moritz@g10code.com>
121
122         * command-ssh.c (ssh_handler_sign_request): Confirm to agent
123         protocol in case of failure.
124
125         * command-ssh.c: New file.
126
127         * Makefile.am (gpg_agent_SOURCES): New source file: command-ssh.c.
128
129         * findkey.c (modify_description): New function.
130         (agent_key_from_file): Support comment field in key s-expressions.
131
132         * gpg-agent.c (enum cmd_and_opt_values): New item: oSSHSupport.
133         (opts) New entry for oSSHSupport.
134         New variable: socket_name_ssh.
135         (cleanup_do): New function based on cleanup().
136         (cleanup): Use cleanup_do() for socket_name and socket_name_ssh.
137         (main): New switch case for oSSHSupport.
138         (main): Move socket name creation code to ...
139         (create_socket_name): ... this new function.
140         (main): Use create_socket_name() for creating socket names for
141         socket_name and for socket_name_ssh in case ssh support is
142         enabled.
143         Move socket creation code to ...
144         (create_server_socket): ... this new function.
145         (main): Use create_server_socket() for creating sockets.
146         In case standard_socket is set, do not only store a socket name in
147         socket_name, but also in socket_name_ssh.
148         Generate additional environment info strings for ssh support.
149         Pass additional ssh socket argument to handle_connections.
150         (start_connection_thread_ssh): New function.
151         (handle_connections): Use select to multiplex between gpg-agent
152         and ssh-agent protocol.
153
154         * agent.h (struct opt): New member: ssh_support.
155         (start_command_handler_ssh): Add prototype.
156
157 2005-01-04  Werner Koch  <wk@g10code.com>
158
159         * trustlist.c (agent_marktrusted): Use "Cancel" for the first
160         confirmation and made the strings translatable.
161
162         * cache.c (agent_put_cache): Fix the test for using the default
163         TTL.
164
165 2004-12-21  Werner Koch  <wk@g10code.com>
166
167         * preset-passphrase.c (preset_passphrase): Handle --passphrase.
168
169         * Makefile.am (gpg_preset_passphrase_LDADD): Reorder libs so that
170         pwquery may use stuff from jnlib.  Conditionally add -lwsock2
171         (gpg_protect_tool_LDADD): Ditto.
172
173         * preset-passphrase.c (main): Use default_homedir().
174         (main) [W32]: Initialize sockets.
175
176 2004-12-21  Marcus Brinkmann  <marcus@g10code.de>
177
178         * Makefile.am (libexec_PROGRAMS): Add gpg-preset-passphrase.
179         (gpg_preset_passphrase_SOURCES, gpg_preset_passphrase_LDADD): New
180         targets.
181         * agent.h (opt): New member allow_cache_passphrase.
182         * cache.c (housekeeping): Check if R->ttl is not negative.
183         (agent_put_cache): Allow ttl to be negative.
184         * command.c (parse_hexstring): Allow something to follow the
185         hexstring.
186         (cmd_cache_passphrase): New function.
187         (register_commands): Add it.
188         * gpg-agent.c: Handle --allow-preset-passphrase.
189         * preset-passphrase.c: New file.
190
191 2004-12-21  Werner Koch  <wk@g10code.com>
192
193         * gpg-agent.c (main): Use default_homedir().
194         * protect-tool.c (main): Ditto. 
195
196 2004-12-20  Werner Koch  <wk@g10code.com>
197
198         * gpg-agent.c (main) [W32]: Now that Mutexes work we can remove
199         the pth_init kludge.
200         (main): Add new options --[no-]use-standard-socket.
201         (check_for_running_agent): Check whether it is running on the
202         standard socket.
203
204         * call-scd.c (init_membuf, put_membuf, get_membuf): Removed.  We
205         now use the identical implementation from ../common/membuf.c.
206
207         * pksign.c (agent_pksign): Changed arg OUTFP to OUTBUF and use
208         membuf functions to return the value.
209         * pkdecrypt.c (agent_pkdecrypt): Ditto.
210         * genkey.c (agent_genkey): Ditto.
211         * command.c (cmd_pksign, cmd_pkdecrypt, cmd_genkey): Replaced
212         assuan_get_data_fp() by a the membuf scheme.
213         (clear_outbuf, write_and_clear_outbuf): New.
214
215 2004-12-19  Werner Koch  <wk@g10code.com>
216
217         * query.c (initialize_module_query): New.
218         * call-scd.c (initialize_module_call_scd): New.
219         * gpg-agent.c (main): Call them.
220         
221 2004-12-18  Werner Koch  <wk@g10code.com>
222
223         * gpg-agent.c (main):  Remove special Pth initialize.
224
225         * agent.h (map_assuan_err): Define in terms of
226         map_assuan_err_with_source.
227
228 2004-12-17  Moritz Schulte  <moritz@g10code.com>
229
230         * query.c: Undo change from 2004-12-05.
231
232 2004-12-15  Werner Koch  <wk@g10code.com>
233
234         * gpg-agent.c [W32]: Various hacks to make it work.
235
236         * findkey.c (agent_write_private_key) [W32]: Adjust open call.
237
238         * call-scd.c (start_scd) [W32]: Don't check whether the daemon
239         didn't died.  To hard to do under Windows.
240         (start_scd) [W32]: Disable sending of the event signal option.
241
242         * protect-tool.c (read_file, export_p12_file) [W32]: Use setmode
243         to get stdout and stin into binary mode.
244
245 2004-12-05  Moritz Schulte  <moritz@g10code.com>
246
247         * query.c (start_pinentry): Allow CTRL be NULL.
248
249 2004-10-22  Werner Koch  <wk@g10code.com>
250
251         * gpg-agent.c (parse_rereadable_options): Return "not handled"
252         when the log file has not beend hadled.  This is will let the main
253         option processing continue. Fixed a bug introduced on 2004-09-4
254         resulting in logging to stderr until a HUP has been given.
255         (main): Don't close the listen FD.
256
257 2004-09-30  Werner Koch  <wk@g10code.com>
258
259         * Makefile.am: Adjusted from gettext 1.14.
260
261 2004-09-29  Werner Koch  <wk@g10code.com>
262
263         * minip12.c (parse_bag_encrypted_data): Print error if a bad
264         passphrase has been given.
265
266 2004-09-28  Werner Koch  <wk@g10code.com>
267
268         * protect.c (agent_unprotect): Fixed wiping of CLEARTEXT.  Thanks
269         to Moritz for pointing this out.
270
271 2004-09-25  Moritz Schulte  <moritz@g10code.com>
272         
273         * agent.h: Declare: agent_pksign_do.
274         (struct server_control_s): New member: raw_value.
275         
276         * pksign.c (do_encode_md): New argument: raw_value; support
277         generation of raw (non-pkcs1) data objects; adjust callers.
278         (agent_pksign_do): New function, based on code ripped
279         out from agent_pksign.
280         (agent_pksign): Use agent_pksign_do.
281
282         * command.c (start_command_handler): Set ctrl.digest.raw_value.
283         
284 2004-09-09  Werner Koch  <wk@g10code.de>
285
286         * gpg-agent.c (check_for_running_agent): New.
287         (main): The default action is now to check for an already running
288         agent.
289         (parse_rereadable_options): Set logfile only on reread.
290         (main): Do not print the "is development version" note.
291
292 2004-08-20  Werner Koch  <wk@g10code.de>
293
294         * gpg-agent.c: New option --max-cache-ttl.  Suggested by Alexander
295         Belopolsky.
296         * cache.c (housekeeping): Use it here instead of the hardwired
297         default of 1 hour.
298
299         * query.c (start_pinentry): Use a timeout for the pinentry lock.
300
301 2004-08-18  Werner Koch  <wk@g10code.de>
302
303         * protect-tool.c (get_passphrase): Make sure that the default
304         prompts passed to gpg-agent are utf-8 encoded. Add new prompt values.
305         (import_p12_file, import_p12_file, export_p12_file): Changed calls
306         to get_passphrase so that better prompts are displayed.
307         (get_new_passphrase): New.
308
309 2004-07-22  Werner Koch  <wk@g10code.de>
310
311         * trustlist.c (read_list): Allow colons in the fingerprint.
312         (headerblurb): Rephrased.
313
314         * gpg-agent.c (handle_connections): Increase the stack size ot 256k.
315
316 2004-06-20  Moritz Schulte  <moritz@g10code.com>
317
318         * gpg-agent.c: Include <sys/stat.h> (build fix for BSD).
319
320 2004-05-11  Werner Koch  <wk@gnupg.org>
321
322         * gpg-agent.c (handle_signal): Reload the trustlist on SIGHUP.
323         (start_connection_thread): Hack to simulate a ticker.
324         * trustlist.c (agent_trustlist_housekeeping) 
325         (agent_reload_trustlist): New.  Protected all global functions
326         here with a simple counter which is sufficient for Pth.
327
328 2004-05-03  Werner Koch  <wk@gnupg.org>
329
330         * gpg-agent.c: Remove help texts for options lile --lc-ctype.
331         (main): New option --allow-mark-trusted. 
332         * trustlist.c (agent_marktrusted): Use it here.
333
334 2004-04-30  Werner Koch  <wk@gnupg.org>
335
336         * protect-tool.c: New option --enable-status-msg.
337         (store_private_key): Print status messages for imported keys.
338         (read_and_unprotect): Ditto for bad passphrase.
339
340         * gpg-agent.c (parse_rereadable_options): New arg REREAD.  Allow
341         changing oLogFile.
342         (current_logfile): New.
343
344 2004-04-26  Werner Koch  <wk@gnupg.org>
345
346         * call-scd.c (start_scd): Do not register an event signal if we
347         are running as a pipe server.
348
349 2004-04-21  Werner Koch  <wk@gnupg.org>
350
351         * call-scd.c (start_scd): Send event-signal option. Always check
352         that the scdaemon is still running.
353
354         * gpg-agent.c (handle_signal): Do not use SIGUSR{1,2} anymore for
355         changing the verbosity.
356
357 2004-04-16  Werner Koch  <wk@gnupg.org>
358
359         * gpg-agent.c (main): Tell the logging code that we are running
360         detached.
361
362 2004-04-06  Werner Koch  <wk@gnupg.org>
363
364         * gpg-agent.c (main): Use new libgcrypt thread library register
365         scheme.
366
367 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
368
369         * gpg-agent.c (main): For now, always print the default config
370         file name for --gpgconf-list.
371
372 2004-03-17  Werner Koch  <wk@gnupg.org>
373
374         * gpg-agent.c (main) <gpgconf>: Fixed default value quoting.
375
376 2004-03-16  Werner Koch  <wk@gnupg.org>
377
378         * gpg-agent.c (parse_rereadable_options): Use the new
379         DEFAULT_CACHE_TTL macro.
380         (main): Updated --gpgconf-list output.
381
382 2004-02-21  Werner Koch  <wk@gnupg.org>
383
384         * command.c (cmd_passwd): Take acount of a key description.
385
386         * genkey.c (reenter_compare_cb): Do not set the error text.
387         (agent_protect_and_store, agent_genkey): Force a re-enter after a
388         non-matching passphrase.
389         * query.c (agent_askpin): Add new arg INITIAL_ERRTEXT; changed
390         all callers.
391
392 2004-02-19  Werner Koch  <wk@gnupg.org>
393
394         * protect-tool.c: New options --have-cert and --prompt.
395         (export_p12_file): Read a certificate from STDIN and pass it to
396         p12_build.  Detect a keygrip and construct the filename in that
397         case.  Unprotcet a key if needed.  Print error messages for key
398         formats we can't handle.
399         (release_passphrase): New.
400         (get_passphrase): New arg PROMPTNO. Return the allocated
401         string. Changed all callers.
402
403         * minip12.c: Revamped the build part.
404         (p12_build): New args CERT and CERTLEN.  
405
406 2004-02-18  Werner Koch  <wk@gnupg.org>
407
408         * protect-tool.c (main): Setup the used character set.
409         * gpg-agent.c (main): Ditto.
410
411         * gpg-agent.c (set_debug): New.  New option --debug-level.
412         (main): New option --gpgconf-list.
413
414 2004-02-17  Werner Koch  <wk@gnupg.org>
415
416         * pksign.c (do_encode_md): Cleaned up by using gcry_sexp_build.
417
418         * Makefile.am (gpg_protect_tool_SOURCES): Removed
419         simple-pwquery.[ch], as we once moved it to ../common.
420
421 2004-02-13  Werner Koch  <wk@gnupg.org>
422
423         * command.c (cmd_setkeydesc): New.
424         (register_commands): Add command SETKEYDESC.
425         (cmd_pksign, cmd_pkdecrypt): Use the key description.
426         (reset_notify): Reset the description.
427         * findkey.c (unprotect): Add arg DESC_TEXT.
428         (agent_key_from_file): Ditto.
429         * pksign.c (agent_pksign): Ditto.
430         * pkdecrypt.c (agent_pkdecrypt): Ditto. Made CIPHERTEXT an
431         unsigned char*.
432
433         * protect-tool.c (main): New options --no-fail-on-exist, --homedir.
434         (store_private_key): Use them here.
435
436 2004-02-12  Werner Koch  <wk@gnupg.org>
437
438         * protect-tool.c (read_file, main): Allow reading from stdin.
439
440         * Makefile.am: Include cmacros.am for common flags.
441         (libexec_PROGRAMS): Put gpg-protect-tool there.
442
443 2004-02-10  Werner Koch  <wk@gnupg.org>
444
445         * minip12.c (parse_bag_encrypted_data): Finished implementation.
446         (p12_parse): Add callback args.
447         * protect-tool.c (import_p12_cert_cb): New.
448         (import_p12_file): Use it.
449
450 2004-02-06  Werner Koch  <wk@gnupg.org>
451
452         * minip12.c (crypt_block): Add arg CIPHER_ALGO; changed all callers.
453         (set_key_iv): Add arg KEYBYTES; changed caller.
454
455 2004-02-03  Werner Koch  <wk@gnupg.org>
456
457         * findkey.c (agent_key_from_file): Extra paranoid wipe.
458         * protect.c (agent_unprotect): Ditto.
459         (merge_lists): Ditto. Add arg RESULTLEN.
460         * pkdecrypt.c (agent_pkdecrypt): Don't show the secret key even in
461         debug mode.
462
463         * protect.c: Add DSA and Elgamal description.
464
465 2004-01-29  Werner Koch  <wk@gnupg.org>
466
467         * agent.h (server_control_s): Add connection_fd field.
468         * command.c (start_command_handler): Init it here.
469         * gpg-agent.c (agent_init_default_ctrl): and here.
470         * call-scd.c: Add the CTRL arg to all functions calling start_scd
471         and pass it to start_scd.  Changed all callers
472         (start_scd): Keep track of the current active connection.
473         (agent_reset_scd): New.
474         * command.c (start_command_handler): Call it here.
475         * learncard.c (agent_handle_learn): Add arg CTRL; changed caller.
476         (send_cert_back): Ditto.
477
478 2004-01-28  Werner Koch  <wk@gnupg.org>
479
480         * trustlist.c (agent_marktrusted): Check whether the trustlist is
481         writable.
482
483 2004-01-27  Werner Koch  <wk@gnupg.org>
484
485         * sexp-parse.h: Moved to ../common.
486
487 2004-01-24  Werner Koch  <wk@gnupg.org>
488
489         * call-scd.c (atfork_cb): New.
490         (start_scd): Make sure secmem gets cleared.
491         * query.c  (atfork_cb): New.
492         (start_pinentry): Make sure secmem gets cleared.
493
494 2004-01-16  Werner Koch  <wk@gnupg.org>
495
496         * findkey.c (agent_key_from_file): Now return an error code so
497         that we have more detailed error messages in the upper layers.
498         This fixes the handling of pinentry's cancel button. 
499         * pksign.c (agent_pksign): Changed accordingly.
500         * pkdecrypt.c (agent_pkdecrypt): Ditto.
501         * command.c (cmd_passwd): Ditto.
502
503 2003-12-16  Werner Koch  <wk@gnupg.org>
504
505         * gpg-agent.c (main): Set the prefixes for assuan logging.
506
507 2003-12-15  Werner Koch  <wk@gnupg.org>
508
509         * protect.c (do_encryption): Use gcry_create_nonce instad of the
510         obsolete WEAK_RANDOM.
511
512 2003-11-20  Werner Koch  <wk@gnupg.org>
513
514         * sexp-parse.h (snext): Don't use atoi_1 and digitp macros, so
515         that this file is useful by other applications too.
516
517 2003-10-27  Werner Koch  <wk@gnupg.org>
518
519         * command.c (cmd_get_confirmation): New command.
520
521 2003-08-20  Timo Schulz  <twoaday@freakmail.de>
522
523         * pksign.c (do_encode_md): Allocate enough space. Cast md
524         byte to unsigned char to prevent sign extension.
525         
526 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
527
528         * pksign.c (do_encode_md): Due to the fact pkcs#1 padding
529         is now in Libgcrypt, use the new interface.
530         
531 2003-07-31  Werner Koch  <wk@gnupg.org>
532
533         * Makefile.am (gpg_agent_LDADD): Added INTLLIBS.
534         (gpg_protect_tool_SOURCES): Added simple-pwquery.[ch]
535
536 2003-07-27  Werner Koch  <wk@gnupg.org>
537
538         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
539
540 2003-07-15  Werner Koch  <wk@gnupg.org>
541
542         * simple-pwquery.c, simple-pwquery.h:  Moved to ../common.
543         * Makefile.am (gpg_protect_tool_LDADD): Add simple-pwquery.o.
544         Removed it from xx_SOURCES.
545
546 2003-07-04  Werner Koch  <wk@gnupg.org>
547
548         * gpg-agent.c (handle_connections): Kludge to allow use of Pth 1
549         and 2.
550
551 2003-06-30  Werner Koch  <wk@gnupg.org>
552
553         * call-scd.c (learn_status_cb): Store the serialno in PARM.
554
555 2003-06-26  Werner Koch  <wk@gnupg.org>
556
557         * call-scd.c (agent_card_serialno): Don't do a RESET anymore.
558
559 2003-06-25  Werner Koch  <wk@gnupg.org>
560
561         * command.c (cmd_scd): New.
562         * call-scd.c (agent_card_scd): New.
563         * divert-scd.c (divert_generic_cmd): New
564
565         * call-scd.c (agent_card_learn): New callback args SINFO.
566         (learn_status_cb): Pass all other status lines to the sinfo
567         callback.
568         * learncard.c (release_sinfo, sinfo_cb): New.
569         (agent_handle_learn): Pass the new cb to the learn function and
570         pass the collected information back to the client's assuan
571         connection.
572
573         * gpg-agent.c (main): Moved pth_init before gcry_check_version.
574
575 2003-06-24  Werner Koch  <wk@gnupg.org>
576
577         * gpg-agent.c (handle_connections): Adjusted for Pth 2.0
578
579         Adjusted for changes in the libgcrypt API. Some more fixes for the
580         libgpg-error stuff.  
581
582 2003-06-04  Werner Koch  <wk@gnupg.org>
583
584         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
585
586 2003-06-03  Werner Koch  <wk@gnupg.org>
587
588         Changed all error codes in all files to the new libgpg-error scheme.
589
590         * agent.h: Include gpg-error.h and errno.h
591         * Makefile.am: Link with libgpg-error
592
593         * query.c: assuan.h is now a system header.
594         * genkey.c (agent_genkey): Fixed silly use of xmalloc by
595         xtrymalloc.
596
597 2003-04-29  Werner Koch  <wk@gnupg.org>
598
599         * command.c (register_commands): Adjusted for new Assuan semantics.
600
601         * Makefile.am: Don't override LDFLAGS.
602
603 2002-12-04  Werner Koch  <wk@gnupg.org>
604
605         * gpg-agent.c: New variable config_filename.
606         (parse_rereadable_options): New.
607         (main): Use it here.  Add setting of default values, set
608         config_filename.
609         (reread_configuration): Filled with actual code.
610
611 2002-12-03  Werner Koch  <wk@gnupg.org>
612
613         * protect-tool.c (read_key): Don't run make_canonical on a NULL
614         buffer.
615
616         * command.c (parse_hexstring): New.
617         (cmd_sethash): Use it.
618         (parse_keygrip): New.
619         (cmd_havekey, cmd_sigkey): Use it.
620         (cmd_passwd): New.
621         * genkey.c (agent_protect_and_store): New.
622         (store_key): Add arg FORCE.
623         (agent_genkey): Pass false to this force of store_key.
624
625 2002-11-13  Werner Koch  <wk@gnupg.org>
626
627         * gpg-agent.c (main): Switch all messages to utf-8.
628
629         * simple-pwquery.c (agent_send_all_options): Use $GPG_TTY and
630         stdin with ttyname.
631
632         * cache.c (new_data): Uiih - /sizeof d/sizeof *d/.
633
634 2002-11-10  Werner Koch  <wk@gnupg.org>
635
636         * command.c (option_handler): Fix keep_tty check.
637
638 2002-11-06  Werner Koch  <wk@gnupg.org>
639
640         * gpg-agent.c (main): Make sure we have a default ttyname.
641         * command.c (option_handler): Check opt.keep_tty here
642         * query.c (start_pinentry): but not anymore here.
643
644 2002-11-05  Werner Koch  <wk@gnupg.org>
645
646         * agent.h (opt,server_control_s): Move display and lc_ variables
647         to the control struct so that they are per connection.
648         * gpg-agent.c (agent_init_default_ctrl): New.
649         (main): Assign those command line options to new default_* variables.
650         Reset DISPLAY in server mode so that tehre is no implicit default.
651         * command.c (start_command_handler): Initialize and deinitialize
652         the control values.
653         (option_handler): Work on the ctrl values and not on the opt.
654         * query.c (start_pinentry): New argument CTRL to set the display
655         connection specific.  Changed all callers to pass this value.
656         (agent_askpin,agent_get_passphrase,agent_get_confirmation): Add
657         CTRL arg and pass it ot start_pinentry.
658         * command.c (cmd_get_passphrase): Pass CTRL argument.
659         * trustlist.c (agent_marktrusted):  Add CTRL argument  
660         * command.c (cmd_marktrusted): Pass CTRL argument
661         * divert-scd.c (ask_for_card):  Add CTRL arg. 
662         (divert_pksign,divert_pkdecrypt): Ditto.  Changed caller.
663         (getpin_cb): Use OPAQUE to pass the CTRL variable.  Changed both 
664         users.
665         * findkey.c (unprotect): Add CTRL arg.
666         (agent_key_from_file): Ditto.
667
668         * query.c (unlock_pinentry): Disconnect the pinentry so that we
669         start a new one for each request.  This is required to support
670         clients with different environments (e.g. X magic cookies).
671
672 2002-09-05  Neal H. Walfield  <neal@cs.uml.edu>
673
674         * gpg-agent.c (main) [USE_GNU_PTH]: No need to call
675         assuan_set_io_func as assuan is smart.
676
677 2002-09-25  Werner Koch  <wk@gnupg.org>
678
679         * gpg-agent.c (handle_signal): Flush cache on SIGHUP.
680         * cache.c (agent_flush_cache): New.
681
682         * gpg-agent.c, agent.h: Add --keep-display and --keep-tty.
683         * query.c (start_pinentry): Implement them.  The option passing
684         needs more thoughts.
685
686 2002-09-09  Werner Koch  <wk@gnupg.org>
687
688         * gpg-agent.c (create_private_keys_directory)
689         (create_directories): New.
690         (main): Try to create a home directory.
691
692 2002-09-04  Neal H. Walfield  <neal@g10code.de>
693
694         * gpg-agent.c (main): Use sigaction, not signal.
695
696 2002-09-03  Neal H. Walfield  <neal@g10code.de>
697
698         * findkey.c: Include <fcntl.h>.
699         (agent_write_private_key): Prefer POSIX compatibity, open and
700         fdopen, over the simplicity of GNU extensions, fopen(file, "x").
701
702 2002-08-22  Werner Koch  <wk@gnupg.org>
703
704         * query.c (agent_askpin): Provide the default desc text depending
705         on the pininfo.  Do the basic PIN verification only when
706         min_digits is set.
707
708 2002-08-21  Werner Koch  <wk@gnupg.org>
709
710         * query.c (agent_askpin): Hack to show the right default prompt.
711         (agent_get_passphrase): Ditto.
712
713         * trans.c: Removed and replaced all usages with standard _()
714
715         * divert-scd.c (getpin_cb): Pass a more descritive text to the
716         pinentry.
717
718         * Makefile.am: Renamed the binary protect-tool to gpg-protect-tool.
719         * protect-tool.c: Removed the note about internal use only.
720
721         * gpg-agent.c (main): New option --daemon so that the program is
722         not accidently started in the background.
723
724 2002-08-16  Werner Koch  <wk@gnupg.org>
725
726         * call-scd.c (learn_status_cb): Handle CERTINFO status.
727         (agent_card_learn): Add args for certinfo cb.
728         * learncard.c (release_certinfo,certinfo_cb): New.
729         (send_cert_back): New. With factored out code from ..
730         (agent_handle_learn): here.  Return certinfo stuff.
731
732 2002-07-26  Werner Koch  <wk@gnupg.org>
733
734         * gpg-agent.c (main): New option --ignore-cache-for-signing.
735         * command.c (option_handler): New server option
736         use-cache-for-signing defaulting to true.
737         (cmd_pksign): handle global and per session option.
738         * findkey.c (agent_key_from_file, unprotect): New arg
739         ignore_cache.  Changed all callers.
740         * pksign.c (agent_pksign): Likewise.
741
742 2002-06-29  Werner Koch  <wk@gnupg.org>
743
744         * query.c (start_pinentry): Use GNUPG_DERAULT_PINENTRY.
745         * call-scd.c (start_scd): Use GNUPG_DEFAULT_SCDAEMON.
746
747 2002-06-28  Werner Koch  <wk@gnupg.org>
748
749         * protect-tool.c (export_p12_file): New.
750         (main): New command --p12-export.
751         * minip12.c (create_final,p12_build,compute_tag_length): New.
752         (store_tag_length): New.
753
754 2002-06-27  Werner Koch  <wk@gnupg.org>
755
756         * minip12.c (crypt_block): Renamed from decrypt_block, add arg to
757         allow encryption.
758
759         * Makefile.am (pkglib_PROGRAMS): Put protect-tool there.
760
761         * findkey.c (agent_write_private_key,agent_key_from_file)
762         (agent_key_available): Use GNUPG_PRIVATE_KEYS_DIR constant.
763         * gpg-agent.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
764
765         * protect-tool.c (store_private_key): New.
766         (import_p12_file): Store the new file if requested.
767         (main): New options --force and --store.
768
769         * gpg-agent.c (main): Set a global flag when running detached.
770         * query.c (start_pinentry): Pass the list of FD to keep in the
771         child when not running detached.
772         * call-scd.c (start_scd): Ditto.
773
774 2002-06-26  Werner Koch  <wk@gnupg.org>
775
776         * command.c (cmd_istrusted, cmd_listtrusted, cmd_marktrusted)
777         (cmd_pksign, cmd_pkdecrypt, cmd_genkey, cmd_get_passphrase)
778         (cmd_learn): Print an error message for a failed operation.
779
780         * simple-pwquery.c, simple-pwquery.h: New.
781         * protect-tool. (get_passphrase): New, used to get a passphrase
782         from the agent if none was given on the command line.
783
784 2002-06-25  Werner Koch  <wk@gnupg.org>
785
786         * protect-tool.c (rsa_key_check): New.
787         (import_p12_file): New.
788         (main): New command --p12-import.
789         * minip12.c, minip12.h: New.
790
791 2002-06-24  Werner Koch  <wk@gnupg.org>
792
793         * protect-tool.c (read_file): New.
794         (read_key): Factored most code out to read_file.
795
796 2002-06-17  Werner Koch  <wk@gnupg.org>
797
798         * agent.h: Add a callback function to the pin_entry_info structure.
799         * query.c (agent_askpin): Use the callback to check for a correct
800         PIN.  Removed the start_err_text argument because it is not
801         anymore needed; changed callers.
802         * findkey.c (unprotect): Replace our own check loop by a callback.
803         (try_unprotect_cb): New.
804         * genkey.c (reenter_compare_cb): New.
805         (agent_genkey): Use this callback here.  Fixed setting of the pi2
806         variable and a segv in case of an empty PIN.
807
808         * divert-scd.c (getpin_cb): Removed some unused stuff and
809         explained what we still have to change.
810
811 2002-06-12  Werner Koch  <wk@gnupg.org>
812
813         * gpg-agent.c (main): New option --disable-pth.
814
815 2002-06-11  Werner Koch  <wk@gnupg.org>
816
817         * protect-tool.c: Add command --show-keygrip
818         (show_keygrip): New.
819
820 2002-05-23  Werner Koch  <wk@gnupg.org>
821
822         * call-scd.c: Seirialized all scdaeom access when using Pth.
823
824         * cache.c: Made the cache Pth-thread-safe.
825         (agent_unlock_cache_entry): New.
826         * findkey.c (unprotect): Unlock the returned cache value.
827         * command.c (cmd_get_passphrase): Ditto.
828
829         * gpg-agent.c (main): Register pth_read/write with Assuan.
830
831 2002-05-22  Werner Koch  <wk@gnupg.org>
832
833         * query.c: Serialized all pinentry access when using Pth.
834
835         * gpg-agent.c (handle_signal,start_connection_thread)
836         (handle_connections): New
837         (main): Use the new Pth stuff to allow concurrent connections.
838         * command.c (start_command_handler): Add new arg FD so that the
839         fucntion can also be used for an already connected socket.
840         * Makefile.am: Link with Pth.
841
842 2002-05-14  Werner Koch  <wk@gnupg.org>
843
844         * cache.c (housekeeping, agent_put_cache): Use our time() wrapper.
845
846 2002-04-26  Werner Koch  <wk@gnupg.org>
847
848         * cache.c (agent_put_cache): Reinitialize the creation time and
849         the ttl when reusing a slot.
850
851         * call-scd.c (start_scd): Print debug messages only with debug
852         flags set.
853         * query.c (start_pinentry): Ditto.
854
855 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
856
857         * agent.h (agent_get_confirmation): Replace paramter prompt with
858         two parameters ok and cancel.
859         * query.c (agent_get_confirmation): Likewise.  Implement this.
860         * trustlist.c (agent_marktrusted): Fix invocation of
861         agent_get_confirmation.
862         * divert-scd.c (ask_for_card): Likewise.
863
864 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
865
866         * agent.h (struct opt): Add members display, ttyname, ttytype,
867         lc_ctype, and lc_messages.
868         * gpg-agent.c (enum cmd_and_opt_values): Add oDisplay, oTTYname,
869         oTTYtype, oLCctype, and LCmessages.
870         (main): Handle these options.
871         * command.c (option_handler): New function.
872         (register_commands): Register option handler.
873         * query.c (start_pinentry): Pass the various display and tty
874         options to the pinentry.
875
876 2002-04-05  Werner Koch  <wk@gnupg.org>
877
878         * protect-tool.c (show_file): New.  Used as default action.
879
880 2002-03-28  Werner Koch  <wk@gnupg.org>
881
882         * divert-scd.c (encode_md_for_card): Don't do the pkcs-1 padding,
883         the scdaemon should take care of it.
884         (ask_for_card): Hack to not display the trailing zero.
885
886 2002-03-11  Werner Koch  <wk@gnupg.org>
887
888         * learncard.c (kpinfo_cb): Remove the content restrictions from
889         the keyID.
890
891 2002-03-06  Werner Koch  <wk@gnupg.org>
892
893         * learncard.c: New.
894         * divert-scd.c (ask_for_card): The serial number is binary so
895         convert it to hex here.
896         * findkey.c (agent_write_private_key): New.
897         * genkey.c (store_key): And use it here.
898         
899         * pkdecrypt.c (agent_pkdecrypt): Changed the way the diversion is done.
900         * divert-scd.c (divert_pkdecrypt): Changed interface and
901         implemented it.
902
903 2002-03-05  Werner Koch  <wk@gnupg.org>
904
905         * call-scd.c (inq_needpin): New.
906         (agent_card_pksign): Add getpin_cb args.
907         (agent_card_pkdecrypt): New.
908
909 2002-03-04  Werner Koch  <wk@gnupg.org>
910
911         * pksign.c (agent_pksign): Changed how the diversion is done.
912         * divert-scd.c (divert_pksign): Changed interface and implemented it.
913         (encode_md_for_card): New.
914         * call-scd.c (agent_card_pksign): New.
915
916 2002-02-28  Werner Koch  <wk@gnupg.org>
917
918         * pksign.c (agent_pksign): Detect whether a Smartcard is to be
919         used and divert the operation in this case.
920         * pkdecrypt.c (agent_pkdecrypt): Likewise
921         * findkey.c (agent_key_from_file): Add optional arg shadow_info
922         and have it return information about a shadowed key.
923         * protect.c (agent_get_shadow_info): New.
924
925         * protect.c (snext,sskip,smatch): Moved to
926         * sexp-parse.h: New file.
927         * divert-scd.c: New.
928         
929 2002-02-27  Werner Koch  <wk@gnupg.org>
930
931         * protect.c (agent_shadow_key): New.
932
933         * command.c (cmd_learn): New command LEARN.
934         * gpg-agent.c: New option --scdaemon-program.
935         * call-scd.c (start_scd): New. Based on query.c
936         * query.c: Add 2 more arguments to all uses of assuan_transact.
937
938 2002-02-18  Werner Koch  <wk@gnupg.org>
939
940         * findkey.c (unprotect): Show an error message for a bad passphrase.
941
942         * command.c (cmd_marktrusted): Implemented.
943         * trustlist.c (agent_marktrusted): New.
944         (open_list): Add APPEND arg.
945
946         * query.c (agent_get_confirmation): New.
947
948 2002-02-06  Werner Koch  <wk@gnupg.org>
949
950         * cache.c (housekeeping): Fixed linking in the remove case.
951
952 2002-02-01  Werner Koch  <wk@gnupg.org>
953
954         * gpg-agent.c: New option --default-cache-ttl.
955         * cache.c (agent_put_cache): Use it.
956         
957         * cache.c: Add a few debug outputs.
958
959         * protect.c (agent_private_key_type): New.
960         * agent.h: Add PRIVATE_KEY_ enums.
961         * findkey.c (agent_key_from_file): Use it to decide whether we
962         have to unprotect a key.
963         (unprotect): Cache the passphrase.
964         
965         * findkey.c (agent_key_from_file,agent_key_available): The key
966         files do now require a ".key" suffix to make a script's life
967         easier. 
968         * genkey.c (store_key): Ditto.
969
970 2002-01-31  Werner Koch  <wk@gnupg.org>
971
972         * genkey.c (store_key): Protect the key.
973         (agent_genkey): Ask for the passphrase.
974         * findkey.c (unprotect): Actually unprotect the key.
975         * query.c (agent_askpin): Add an optional start_err_text. 
976
977 2002-01-30  Werner Koch  <wk@gnupg.org>
978
979         * protect.c: New.  
980         (hash_passphrase): Based on the GnuPG 1.0.6 version.
981         * protect-tool.c: New
982
983 2002-01-29  Werner Koch  <wk@gnupg.org>
984
985         * findkey.c (agent_key_available): New.
986         * command.c (cmd_havekey): New.
987         (register_commands): And register new command.
988
989 2002-01-20  Werner Koch  <wk@gnupg.org>
990
991         * command.c (cmd_get_passphrase): Remove the plus signs.
992
993         * query.c (start_pinentry): Send no-grab option to pinentry
994         * gpg-agent.c (main): Move variable grab as no_grab to agent.h.
995
996 2002-01-19  Werner Koch  <wk@gnupg.org>
997
998         * gpg-agent.c (main): Disable core dumps.
999
1000         * cache.c: New.
1001         * command.c (cmd_get_passphrase): Use the cache.
1002         (cmd_clear_passphrase): Ditto.
1003
1004         * gpg-agent.c:  Removed unused cruft and implement the socket
1005         based server.
1006         (my_strusage): Take bug report address from configure.ac.
1007         * command.c (start_command_handler): Add an argument to start as
1008         regular server.
1009         (start_command_handler): Enable Assuan logging.
1010
1011 2002-01-15  Werner Koch  <wk@gnupg.org>
1012
1013         * trustlist.c: New.
1014         * command.c (cmd_istrusted, cmd_listtrusted, cmd_marktrusted): New.
1015
1016 2002-01-07  Werner Koch  <wk@gnupg.org>
1017
1018         * genkey.c: Store the secret part and return the public part.
1019
1020 2002-01-03  Werner Koch  <wk@gnupg.org>
1021
1022         * command.c (cmd_get_passphrase): New.
1023         (cmd_clear_passphrase): New.
1024         * query.c (agent_get_passphrase): New.
1025
1026 2002-01-02  Werner Koch  <wk@gnupg.org>
1027
1028         * genkey.c: New.
1029         * command.c (cmd_genkey): New.
1030
1031         * command.c (rc_to_assuan_status): Removed and changed all callers
1032         to use map_to_assuan_status.
1033         
1034 2001-12-19  Werner Koch  <wk@gnupg.org>
1035
1036         * keyformat.txt: New. 
1037
1038 2001-12-19  Marcus Brinkmann  <marcus@g10code.de>
1039
1040         * query.c (start_pinentry): Add new argument to assuan_pipe_connect.
1041
1042 2001-12-18  Werner Koch  <wk@gnupg.org>
1043
1044         * Makefile.am: Use LIBGCRYPT macros
1045
1046 2001-12-14  Werner Koch  <wk@gnupg.org>
1047
1048         * gpg-agent.c (main): New option --batch.  New option --debug-wait
1049         n, so that it is possible to attach gdb when used in server mode.
1050         * query.c (agent_askpin): Don't ask in batch mode.
1051
1052         * command.c: Removed the conversion macros as they are now in
1053         ../common/util.h.
1054
1055 2001-12-14  Marcus Brinkmann  <marcus@g10code.de>
1056
1057         * query.c (LINELENGTH): Removed.
1058         (agent_askpin): Use ASSUAN_LINELENGTH, not LINELENGTH.
1059
1060 2001-11-19  Werner Koch  <wk@gnupg.org>
1061
1062         * gpg-agent.c: Removed all GUI code, removed code for old
1063         protocol.  New code to use the Assuan protocol as a server and
1064         also to communicate with a new ask-passphrase utility.
1065
1066 2000-11-22  Werner Koch  <wk@gnupg.org>
1067
1068         * gpg-agent.c (main): csh support by Dan Winship, new options --sh
1069         and --csh and set default by consulting $SHELL.
1070
1071 Mon Aug 21 17:59:17 CEST 2000  Werner Koch  <wk@openit.de>
1072
1073         * gpg-agent.c (passphrase_dialog): Cleanup the window and added the
1074         user supplied text to the window.
1075         (main): Fixed segv in gtk_init when used without a command to start.
1076
1077         * gpg-agent.c: --flush option.
1078         (req_flush): New.
1079         (req_clear_passphrase): Implemented.
1080
1081 Fri Aug 18 14:27:14 CEST 2000  Werner Koch  <wk@openit.de>
1082
1083         * gpg-agent.c: New.
1084         * Makefile.am: New.
1085
1086
1087  Copyright 2001, 2002 Free Software Foundation, Inc.
1088
1089  This file is free software; as a special exception the author gives
1090  unlimited permission to copy and/or distribute it, with or without
1091  modifications, as long as this notice is preserved.
1092
1093  This file is distributed in the hope that it will be useful, but
1094  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1095  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.