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