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