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