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