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