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