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