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