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