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