Signing using Netkey 3 cards does now work.
[gnupg.git] / scd / ChangeLog
1 2009-03-26  Werner Koch  <wk@g10code.com>
2
3         * command.c (cmd_pksign): Allow more hash algorithms.
4
5         * scdaemon.h (MAX_DIGEST_LEN): Change to 64.
6
7         * apdu.c (open_ccid_reader): Clear the is_to flag.
8
9         * app-nks.c (filelist): Add field KID.
10         (do_getattr): Change standard authentication key.
11         (do_sign): Setup a security environment for TCOS 3 cards and support
12         all SHA-2 algorithms.
13
14 2009-03-24  Werner Koch  <wk@g10code.com>
15
16         * command.c (struct server_local_s): Add flag
17         APP_CTX_MARKED_FOR_RELEASE.
18         (do_reset): Set the flag.
19         (open_card): Act on this flag.
20         * app-common.h (struct app_ctx_s): Add flag NO_REUSE.
21         (application_notify_card_reset): Set the flag.
22         * app.c (select_application, release_application): Take care of
23         that flag.
24
25 2009-03-20  Werner Koch  <wk@g10code.com>
26
27         * app-nks.c (keygripstr_from_pk_file): Fix for TCOS 3 cards.
28
29 2009-03-18  Werner Koch  <wk@g10code.com>
30
31         * apdu.c (open_pcsc_reader_wrapped): Use close_all_fds.
32
33         * command.c (cmd_learn): Add option --keypairinfo.
34         * app.c (app_write_learn_status): Add arg FLAGS.
35         * app-common.h (struct app_ctx_s): Add arg FLAGS to LEARN_STATUS.
36         Change all implementors.
37         * app-p15.c (do_learn_status): Take care of flag bit 0.
38         * app-nks.c (do_learn_status, do_learn_status_core): Ditto.
39
40 2009-03-10  Werner Koch  <wk@g10code.com>
41
42         * app-openpgp.c (send_key_attr): New.
43         (do_getattr): New attribute KEY_ATTR.
44         * command.c (send_status_direct): New.
45
46 2009-03-06  Werner Koch  <wk@g10code.com>
47
48         * app-nks.c (do_learn_status): Factor code out to..
49         (do_learn_status_core): .. new.
50         (do_readcert, do_sign, do_decipher): Switch to SigG if needed.
51         (verify_pin): Use DESC also for keypad based verify.
52
53 2009-03-05  Werner Koch  <wk@g10code.com>
54
55         * app-openpgp.c (verify_a_chv): Remove special case for keypads.
56         (verify_chv3): Ditto.
57
58         * app-nks.c (get_chv_status): New.
59         (parse_pwidstr): New.
60         (verify_pin): Add args PWID and DESC and use them.  Remove the
61         CHV1 caching.
62         (do_change_pin): Allow PIN selection and add reset mode.
63         (do_learn_status): Use NKS-NKS3 tag for TCOS 3 cards.
64         (do_readcert, do_sign): Allow NKS-NKS3 tag.
65
66 2009-03-04  Werner Koch  <wk@g10code.com>
67
68         * app-nks.c (do_getattr): New.
69         (app_select_nks): Register it.
70         (verify_pin): Factor some code out to...
71         (basic_pin_checks): New.
72         (do_change_pin): Call the basic check.
73         (app_select_nks): Move AID to ..
74         (aid_nks): .. new.
75         (aid_sigg): New.
76         (switch_application): New.
77         (do_getattr, do_learn_status, do_readcert, do_sign, do_decipher) 
78         (do_change_pin, do_check_pin): Make sure we are in NKS mode.
79
80 2009-03-03  Werner Koch  <wk@g10code.com>
81
82         * command.c (scd_command_handler): Remove dereference of STOPME
83         after free.
84
85 2009-02-27  Werner Koch  <wk@g10code.com>
86
87         * app.c (get_supported_applications): New.
88         * command.c (cmd_getinfo): New subcommand "app_list"
89         (cmd_killscd): New.
90         (register_commands): Register command KILLSCD.
91         (struct server_local_s): Add field STOPME.
92         (scd_command_handler): Act upon this.
93
94 2009-02-25  Werner Koch  <wk@g10code.com>
95
96         * apdu.c (apdu_get_status): Factor all code out to ...
97         (apdu_private_get_status): .. new.  Add arg NO_ATR_RESET.
98         (apdu_connect): Call new function.
99
100         * scdaemon.c: New option --debug-log-tid.
101         (tid_log_callback): New.
102         (main): Move debug-wait code after debug stream init.
103
104 2009-02-24  Werner Koch  <wk@g10code.com>
105
106         * ccid-driver.c (ccid_get_atr): Move debug output to ..
107         (print_r2p_parameters): .. new.
108         (print_r2p_header, print_pr_data, print_r2p_unknown)
109         (print_r2p_datablock, print_r2p_slotstatus, print_r2p_escape) 
110         (print_r2p_datarate): New.
111         (bulk_in): Call parameter printing.
112         (ccid_set_debug_level): Add debug level 3.
113         (convert_le_u16): New.
114         (print_p2r_header, print_p2r_iccpoweron, print_p2r_iccpoweroff) 
115         (print_p2r_getslotstatus, print_p2r_xfrblock) 
116         (print_p2r_getparameters, print_p2r_resetparameters) 
117         (print_p2r_setparameters, print_p2r_escape, print_p2r_iccclock) 
118         (print_p2r_to0apdu, print_p2r_secure, print_p2r_mechanical) 
119         (print_p2r_abort, print_p2r_setdatarate, print_r2p_unknown): New.
120         (bulk_out): Add arg NO_DEBUG and change all callers to pass 0.
121         Call parameter printing.
122         (ccid_slot_status): Call with NO_DEBUG set.
123         (abort_cmd, send_escape_cmd, ccid_get_atr, ccid_get_atr) 
124         (ccid_transceive_apdu_level, ccid_transceive) 
125         (ccid_transceive_secure): Remove old debug print code.
126
127 2009-02-12  Werner Koch  <wk@g10code.com>
128
129         * command.c (cmd_getinfo): Add new subcommand "deny_admin".
130
131 2009-01-28  Werner Koch  <wk@g10code.com>
132
133         * scdaemon.c (main): Make --allow-admin the default and make the
134         option a dummy.
135
136 2009-01-27  Werner Koch  <wk@g10code.com>
137
138         * app-geldkarte.c: Changed to use an AID.
139
140         * app.c (app_munge_serialno): Add case for no serialno.
141         (app_get_serial_and_stamp): Ditto.
142
143 2009-01-26  Werner Koch  <wk@g10code.com>
144
145         * app-geldkarte.c: New.
146         * Makefile.am (card_apps): Add new file.
147         * app.c (select_application): Test for geldkarte.
148
149 2009-01-12  Werner Koch  <wk@g10code.com>
150
151         * command.c (send_client_notifications) [HAVE_W32_SYSTEM]: Fix
152         brackets.
153
154 2009-01-08  Werner Koch  <wk@g10code.com>
155
156         * iso7816.c (iso7816_read_record, iso7816_read_binary): Pass 0 for
157         L_e because the problem with the CCID driver has gone.
158         (iso7816_apdu_direct): New.
159
160         * app-nks.c (filelist): Add NKS_VER field.  Add NKS 3 specific
161         entries.
162         (app_local_s, do_deinit): New.
163         (get_nks_version): New.
164         (app_select_nks): Setup local data.
165         (keygripstr_from_pk_file): Replace SLOT by APP and take care of
166         NKS version > 2.
167         (do_learn_status): Take care of NKS version.
168
169 2009-01-05  Werner Koch  <wk@g10code.com>
170
171         * apdu.c (apdu_get_status): Save the last status.
172
173 2008-12-18  Werner Koch  <wk@g10code.com>
174
175         * ccid-driver.c (abort_cmd): New. 
176         (bulk_in): Call abort_cmd after severe errors.
177
178         * apdu.c (reader_table_s): Add field ANY_STATUS.
179         (new_reader_slot): Clear it.
180         (apdu_get_status): Use ANY_STATUS to update the change counter.
181         Remove the use of the flag bit from LAST_STATUS everywhere.
182         * command.c (update_reader_status_file): Factor code out to ...
183         (send_client_notifications): New.  Track signals already sent.
184         (update_reader_status_file): Shutdown the reader  after a failed
185         apdu_get_status.
186
187 2008-12-09  Werner Koch  <wk@g10code.com>
188
189         * scdaemon.c (main): Call i18n_init before init_common_subsystems.
190
191 2008-12-08  Werner Koch  <wk@g10code.com>
192
193         * scdaemon.c (handle_connections): Sync ticker to the next full
194         interval.
195         (TIMERTICK_INTERVAL_USEC): Change to 500ms.
196
197 2008-12-05  Werner Koch  <wk@g10code.com>
198
199         * app-openpgp.c (app_local_s): Add field ALGO_ATTR_CHANGE.
200         (app_select_openpgp): Parse new capability.
201         (show_caps): Show new capability.
202
203 2008-12-03  Werner Koch  <wk@g10code.com>
204
205         * scdaemon.c (opts): Use ARGPARSE_ macros.  Add option
206         --card-timeout.
207         * command.c (update_reader_status_file): Implement it.
208
209 2008-11-18  Werner Koch  <wk@g10code.com>
210
211         * scdaemon.c (make_libversion): New.
212         (my_strusage): Print libgcrypt and libksba version.
213
214 2008-11-03  Werner Koch  <wk@g10code.com>
215
216         * command.c (server_local_s): Add field DISCONNECT_ALLOWED.
217         (cmd_disconnect): Implement command.
218         (open_card): Reset disconnect flag.
219         (update_reader_status_file): Disconnect if allowed.
220
221         * app-common.h (app_ctx_s): Remove INITIALIZED.  Make REF_COUNT
222         unsigned. 
223         * app.c (select_application): Remove INITIALIZED.
224         (app_write_learn_status, app_readcert, app_readkey, app_getattr)
225         (app_setattr, app_sign, app_decipher, app_writecert)
226         (app_writekey, app_get_challenge, app_change_pin, app_check_pin):
227         Replace INITIALIZED by REF_COUNT check.
228         (application_notify_card_removed): Rename to ..
229         (application_notify_card_reset): .. this.  Change all callers.
230         * command.c (do_reset): Call application_notify_card_reset after
231         sending a reset.
232         (update_reader_status_file): Add arg SET_CARD_REMOVED.
233         (scd_update_reader_status_file): Pass true for new flag.
234         (do_reset): Pass false for new flag.
235
236         * app.c (app_get_serial_and_stamp): Use bin2hex.
237         * app-help.c (app_help_get_keygrip_string): Ditto.
238         * app-p15.c (send_certinfo, send_keypairinfo, do_getattr): Ditto.
239         * app-openpgp.c (send_fpr_if_not_null, send_key_data) 
240         (retrieve_fpr_from_card, send_keypair_info): Ditto.
241         * app-nks.c (keygripstr_from_pk_file): Ditto.
242         * command.c (cmd_apdu): Ditto.
243
244 2008-10-21  Marcus Brinkmann  <marcus@g10code.com>
245
246         * command.c (open_card): If connect error is SW_HOST_NO_CARD,
247         return a more descriptive error.
248
249 2008-10-20  Werner Koch  <wk@g10code.com>
250
251         * pcsc-wrapper.c (read_32): Use provided arg and not stdin.  Is
252         called with stdin, though.
253         (handle_close): Mark unused arg.
254         (handle_status, handle_reset): Ditto.
255
256         * ccid-driver.c (ccid_check_card_presence): Mark not yet used arg.
257
258         * scdaemon.c (scd_deinit_default_ctrl): Mark unused arg.
259         * command.c (cmd_unlock, cmd_restart, cmd_disconnect): Ditto.
260         * apdu.c (ct_get_status): Ditto.
261         (ct_send_apdu, pcsc_send_apdu_wrapped)
262         (apdu_open_remote_reader): Ditto.
263         * app.c (select_application): Ditto.
264         * app-openpgp.c (do_writecert, do_change_pin, do_writekey): Ditto.
265         * app-nks.c (do_change_pin, do_check_pin): Ditto.
266
267 2008-10-16  Werner Koch  <wk@g10code.com>
268
269         * command.c (cmd_disconnect): New dummy command.
270         (register_commands): Register command.
271
272 2008-10-15  Werner Koch  <wk@g10code.com>
273
274         * command.c (scd_command_handler): Return true if there is no more
275         active session.
276         * scdaemon.c (start_connection_thread): Set shutdown flag if
277         requested by command handler.
278         (main): Make PIPE_SERVER module global.
279         (handle_connections): Disable listen_fd if a shutdown is pending.
280
281 2008-10-14  Werner Koch  <wk@g10code.com>
282
283         * apdu.c (reader_table_s): Add fields connect_card and
284         disconnect_card.
285         (new_reader_slot): Set them to NULL.
286         (apdu_connect, apdu_disconnect): New.
287         (apdu_close_reader, apdu_shutdown_reader): Call apdu_disconnect.
288         (connect_pcsc_card, disconnect_pcsc_card): new.
289         (reset_pcsc_reader_direct): Implement in terms of
290         disconnect_pcsc_card and connect_pcsc_card.
291         (apdu_get_atr): Return NULL if there is no ATR.
292         * sc-copykeys.c (main): Add call to apdu_connect.
293         * command.c (open_card): Ditto.
294
295         * apdu.h (SW_HOST_ALREADY_CONNECTED): New.
296         (APDU_CARD_USABLE, APDU_CARD_PRESENT, APDU_CARD_ACTIVE): New.
297         * apdu.c: Replace constants by the new macros.
298         (open_pcsc_reader): Factor  code out to ...
299         (open_pcsc_reader_direct, open_pcsc_reader_wrapped): New.
300         (reset_pcsc_reader): Factor code out to ...
301         (reset_pcsc_reader_direct, reset_pcsc_reader_wrapped): New.
302         (pcsc_get_status): Factor code out to ...
303         (pcsc_get_status_direct, pcsc_get_status_wrapped): New.
304         (pcsc_send_apdu): Factor code out to ...
305         (pcsc_send_apdu_direct, pcsc_send_apdu_wrapped): New.
306         (close_pcsc_reader): Factor code out to ...
307         (close_pcsc_reader_direct, close_pcsc_reader_wrapped): New.
308
309         * command.c (update_reader_status_file): Open the reader if not
310         yet done.
311
312         * scdaemon.c (TIMERTICK_INTERVAL_SEC, TIMERTICK_INTERVAL_USEC):
313         New to replace TIMERTICK_INTERVAL.  Chnage from 2s (4 under W32)
314         to 250ms.
315
316 2008-10-13  Werner Koch  <wk@g10code.com>
317
318         * command.c (option_handler) [W32]: Use strtoul with base 16.
319         (update_reader_status_file) [W32]: Set Event.
320         (scd_command_handler): Use INT2FD to silent warning.
321
322 2008-09-29  Werner Koch  <wk@g10code.com>
323
324         * scdaemon.h (GCRY_MD_USER): Rename to GCRY_MODULE_ID_USER.
325         (GCRY_MD_USER_TLS_MD5SHA1): Rename to MD_USER_TLS_MD5SHA1 and
326         change all users.
327
328 2008-09-28  Marcus Brinkmann  <marcus@g10code.com>
329
330         * apdu.c (pcsc_get_status): Fix last change.
331
332 2008-09-25  Werner Koch  <wk@g10code.com>
333
334         * app-openpgp.c (do_setattr): Do not allow setting of the reset
335         code.
336         (do_change_pin): Allow setting of the reset code.
337
338 2008-09-24  Werner Koch  <wk@g10code.com>
339
340         * app-openpgp.c (verify_chv3): Set the did_chv3 flag which was
341         accidently removed on 2008-03-26.
342         (verify_chv2): Revert last change.
343         (do_change_pin): Do not change CHV2. Add reset code logic for v2
344         cards.
345         * iso7816.c (iso7816_reset_retry_counter_with_rc): New.
346         
347         * app-openpgp.c (add_tlv, build_privkey_template): New.
348         (do_writekey): Support v2 keys and other key lengths than 1024.
349         * iso7816.c (iso7816_put_data_odd): New.
350
351 2008-09-23  Werner Koch  <wk@g10code.com>
352
353         * app-openpgp.c (do_sign): Support SHA-2 digests.
354         (verify_chv2): No CHV auto-sync for v2 cards.
355         (do_auth): Allow 2048 bit keys.
356         (parse_algorithm_attribute): New.
357         (rsa_key_format_t): New.
358         (struct app_local_s): Add struct KEYATTR.
359
360 2008-09-23  Marcus Brinkmann  <marcus@g10code.com>
361
362         * apdu.c (pcsc_get_status): Be more relaxed with the usable flag
363         under Windows.
364
365 2008-09-23  Werner Koch  <wk@g10code.com>
366
367         * app-openpgp.c (do_setattr): Use command chaining for long
368         values.
369         * iso7816.c (iso7816_put_data): Add arg EXTENDED_MODE. Change all
370         callers.
371         * apdu.c (apdu_send_simple): Add arg EXTENDED_MODE. Change all
372         callers.
373         (send_le): Implement command chaining.
374         * ccid-driver.c (ccid_transceive_apdu_level): Increase allowed
375         APDU size.
376         (ccid_transceive): Alow for APDUS of up to 259 bytes.
377         * apdu.h: Add new SW_ codes.
378
379 2008-09-16  Werner Koch  <wk@g10code.com>
380
381         * command.c (cmd_writecert): New.
382         (register_commands): Register it.
383         * app-common.h (app_ctx_s): Add member WRITECERT.
384         * app.c (app_writecert): New.
385         * app-openpgp.c (do_writecert): New.
386         (parse_historical): New.
387         (show_extcap): New.
388         (dump_all_do): Print only the length of longs DOs.
389         * command.c (cmd_writekey, cmd_apdu, cmd_pksign)
390         (cmd_passwd): Replace open coding by skip_options.
391
392 2008-08-30  Moritz  <moritz@gnu.org>
393
394         * scdaemon.c (main): Use estream_asprintf instead of asprintf.
395         * command.c (update_reader_status_file): Likewise.
396         (cmd_serialno): Use estream_asprintf instead of asprintf
397         and xfree instead of free to release memory allocated
398         through (estream_)asprintf.
399         (cmd_learn): Likewise.
400         (pin_cb): Likewise.
401         * app-openpgp.c (get_public_key): Likewise.
402
403 2008-08-18  Werner Koch  <wk@g10code.com>
404
405         * app-openpgp.c (do_setattr): Fix test for v2 cards.
406
407 2008-08-11  Werner Koch  <wk@g10code.com>
408
409         * apdu.c (reset_pcsc_reader, open_pcsc_reader)
410         (reset_rapdu_reader, open_rapdu_reader): Allow ATRs of up to 33
411         bytes.  Provide maximum size of ATR buffer using DIM.  Such long
412         ATR are never seen in reality but the PC/SC library of MAC OS X is
413         just too buggy.  Reported by Ludovic Rousseau.  Fixes bug #948.
414
415 2008-07-30  Werner Koch  <wk@g10code.com>
416
417         * app-openpgp.c (verify_a_chv): Use xtrymalloc and make the prompt
418         for CHV2 more user friendly.
419
420 2008-07-03  Werner Koch  <wk@g10code.com>
421
422         * app-openpgp.c (do_readcert): New.
423         (app_local_s): Add fields IS_V2 and MAX_CERTLEN_3.
424         (app_select_openpgp): Set them and register do_readcert.
425         (do_setattr): Allow storing of the certificate.
426
427 2008-06-25  Werner Koch  <wk@g10code.com>
428
429         * app-dinsig.c (do_sign): Allow for SHA256.
430
431 2008-06-24  Werner Koch  <wk@g10code.com>
432
433         * app-common.h (app_ctx_s): Renamed reset_mode parameter of
434         change_pin to mode_Flags and make it an unsigned int.
435         (APP_CHANGE_FLAG_RESET, APP_CHANGE_FLAG_NULLPIN): New.
436         * app-openpgp.c (do_change_pin): Adjust for that.
437
438         * command.c (cmd_passwd): Add option --nullpin.
439         * app-nks.c (do_check_pin, do_change_pin): New.
440         (app_select_nks): Register new functions.
441
442 2008-04-21  Moritz Schulte  <mo@g10code.com>  (wk)
443
444         * app-openpgp.c (verify_a_chv): Make use of the default CHV flag.
445
446 2008-03-26  Werner Koch  <wk@g10code.com>
447
448         * app-openpgp.c (verify_chv3): Support the keypad.
449
450 2008-02-09  Marcus Brinkmann  <marcus@g10code.de>
451
452         * scdaemon.c (main): Use CONFIG_FILENAME as filename if it is set
453         in gpgconf-list output.
454
455 2007-12-10  Werner Koch  <wk@g10code.com>
456
457         * app-openpgp.c (do_decipher): Take care of cryptograms shorter
458         that 128 bytes.  Fixes bug#851.
459
460 2007-11-14  Werner Koch  <wk@g10code.com>
461
462         * scdaemon.c (main): Pass STANDARD_SOCKET flag to
463         create_server_socket.
464         
465 2007-11-13  Werner Koch  <wk@g10code.com>
466
467         * scdaemon.c (start_connection_thread): Do not call
468         assuan_sock_check_nonce if we are running in --server mode.
469
470 2007-11-07  Werner Koch  <wk@g10code.com>
471
472         * scdaemon.h: Remove errors.h.
473
474 2007-10-02  Werner Koch  <wk@g10code.com>
475
476         * command.c (cmd_getinfo): Add "pid" subcommand.
477
478 2007-10-01  Werner Koch  <wk@g10code.com>
479
480         * scdaemon.c (create_server_socket): Use Assuan socket wrappers
481         and remove Windows specific code.
482         (socket_nonce): New.
483         (start_connection_thread): Check nonce.
484
485 2007-09-14  Marcus Brinkmann  <marcus@g10code.de>
486
487         * scdaemon.c (main): New variable STANDARD_SOCKET, which is 1 for
488         W32 targets.  Use it for create_socket_name.
489
490 2007-08-07  Werner Koch  <wk@g10code.com>
491
492         * tlv.c, tlv.h:  Move to ../common/.
493
494 2007-08-02  Werner Koch  <wk@g10code.com>
495
496         * scdaemon.c: Include gc-opt-flags.h and remove their definition
497         here.
498
499 2007-08-01  Werner Koch  <wk@g10code.com>
500
501         * apdu.c (send_le): Implement exact length hack.  Suggested by
502         Sten Lindgren.
503
504 2007-07-05  Werner Koch  <wk@g10code.com>
505
506         * command.c (has_option_name, skip_options): New.
507         (cmd_genkey): Add option --timestamp.
508         (cmd_writekey): Enter confidential mode while inquiring the key data.
509
510         * app.c (app_genkey): Add arg CREATETIME.
511         * app-common.h (app_ctx_s): Likewise
512         * app-openpgp.c (do_genkey): Ditto.  Use it.
513
514
515 2007-07-04  Werner Koch  <wk@g10code.com>
516
517         * command.c (cmd_getinfo): New subcommand "version".
518
519         * scdaemon.c (TIMERTICK_INTERVAL): New.
520         (handle_connections) [W32]: Enable a dummy sigs event.
521         (handle_connections): Use a proper count for select and not
522         FD_SETSIZE.
523         (fixed_gcry_pth_init, main): Kludge to fix pth initialization.
524
525 2007-06-21  Werner Koch  <wk@g10code.com>
526
527         * scdaemon.h (ctrl_t): Remove.  It is now declared in ../common/util.h.
528
529 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
530
531         * scdaemon.c (main): Percent escape output of --gpgconf-list.
532
533 2007-06-12  Werner Koch  <wk@g10code.com>
534
535         * scdaemon.c (main): Replace some calls by init_common_subsystems.
536
537 2007-06-11  Werner Koch  <wk@g10code.com>
538
539         * Makefile.am (scdaemon_LDADD): Use libcommonpth macro.
540
541         * command.c (initialize_module_command): New.
542         * scdaemon.c (main) [W32]: Do not use sigpipe code.
543         (main): Call initialize_module_command.
544
545 2007-06-06  Werner Koch  <wk@g10code.com>
546
547         * app-openpgp.c (do_sign): Fix arithmetic on void*.
548
549         * app.c (dump_mutex_state) [W32]: Handle the W32Pth case.
550
551         * apdu.c: Remove dynload.h.
552
553         * scdaemon.c (i18n_init): Remove.
554
555 2007-04-20  Werner Koch  <wk@g10code.com>
556
557         * sc-copykeys.c (my_gcry_logger): Removed.
558         (main): Call setup_libgcrypt_logging helper.
559         * scdaemon.c (my_gcry_logger): Removed.
560         (main): Call setup_libgcrypt_logging helper.
561
562 2007-04-03  Werner Koch  <wk@g10code.com>
563
564         * command.c (cmd_getinfo): New subcommand "reader_list".
565         * ccid-driver.c (scan_or_find_devices): Ignore EBUSY in scan mode
566         for special transports.
567
568 2007-03-07  Werner Koch  <wk@g10code.com>
569
570         * app-dinsig.c: Include i18n.h.
571         (verify_pin): Support PIN pads.
572         * app-nks.c (verify_pin): Ditto.
573
574         * ccid-driver.c (bulk_in): Handle time extension before checking
575         the message type.
576         (ccid_transceive_secure): Support the Cherry XX44 keyboard.
577         Kudos to the nice folks at Cherry for helping with that.
578
579 2007-02-18  Werner Koch  <wk@g10code.com>
580
581         * scdaemon.c (DEFAULT_PCSC_DRIVER): Add a default for OS X.
582
583 2007-01-25  Werner Koch  <wk@g10code.com>
584
585         * Makefile.am (scdaemon_LDADD): Added LIBICONV.  Noted by Billy
586         Halsey.
587
588 2006-12-21  Werner Koch  <wk@g10code.com>
589
590         * app-openpgp.c (verify_chv2): Factored most code out into...
591         (verify_a_chv): ... new.
592         (do_sign): Factored verification code out to new function and
593         take care of a keypad entered PIN.
594         (compare_fingerprint): Print an additional diagnostic.
595
596 2006-11-28  Werner Koch  <wk@g10code.com>
597
598         * apdu.c (send_le, apdu_send_direct): Increase RESULTLEN to 258 to
599         allow for full 256 byte and the status word.  This might break
600         some old PC/SC drivers or cards, but we will see.  Suggested by
601         Kenneth Wang.
602
603 2006-11-23  Werner Koch  <wk@g10code.com>
604
605         * command.c (scd_command_handler): Fixed use of CTRL.
606
607 2006-11-21  Werner Koch  <wk@g10code.com>
608
609         * Makefile.am (libexec_PROGRAMS): Put pscs-wrapper into libexec.
610         Renamed to gnupg-pcsc-wrapper.
611         * apdu.c (open_pcsc_reader): Use GNUPG_LIBEXECDIR to accces the
612         wrapper.  Suggested by Eric Dorland.
613
614 2006-11-20  Werner Koch  <wk@g10code.com>
615
616         * app-openpgp.c (verify_chv2): Support for keypads (only CHV2).
617
618         * ccid-driver.c (ccid_transceive_secure): Made it work for Kaan
619         and SCM.
620
621 2006-11-17  Werner Koch  <wk@g10code.com>
622
623         * ccid-driver.c (scan_or_find_devices): Use DEBUGOUT_2 instead of
624         log_debug.  Removed few other log_debug.
625
626         * iso7816.c (iso7816_check_keypad): Allow for a SW of 0.
627
628         * command.c (pin_cb): New mode to prompt for a keypad entry.
629
630         * scdaemon.c (main) <gpgconf-list>: Add disable-keypad.
631
632 2006-11-15  Werner Koch  <wk@g10code.com>
633
634         * app-p15.c (read_ef_odf): Cast one printf arg.
635
636         * scdaemon.h (struct server_control_s): Add field THREAD_STARTUP.
637         * command.c (scd_command_handler): Add new arg CTRL.
638         * scdaemon.c (scd_init_default_ctrl): Made static.
639         (scd_deinit_default_ctrl): New.
640         (start_connection_thread): Call init/deinit of ctrl.
641         (handle_connections): Allocate CTRL.
642
643         * apdu.c (PCSC_ERR_MASK): New.
644         (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu)
645         (close_pcsc_reader, open_pcsc_reader): Use it after shifting error
646         values.  Reported by Henrik Nordstrom.  Fixes bug #724.
647
648 2006-10-24  Werner Koch  <wk@g10code.com>
649
650         * scdaemon.h (GCRY_MD_USER_TLS_MD5SHA1): New.
651         (MAX_DIGEST_LEN): Increased to 36.
652         * app-p15.c (do_sign): Support for TLS_MD5SHA1.
653         (do_auth): Detect TLS_MD5SHA1.
654         (do_sign): Tweaks for that digest.
655
656 2006-10-23  Werner Koch  <wk@g10code.com>
657
658         * scdaemon.c (main): New command --gpgconf-test.
659
660 2006-10-17  Werner Koch  <wk@g10code.com>
661
662         * Makefile.am (scdaemon_LDADD): Link against libcommonpth.
663
664 2006-10-12  Werner Koch  <wk@g10code.com>
665
666         * apdu.c: Include pth.h after unistd.h for the sake of newer Pth
667         versions.
668
669 2006-10-11  Werner Koch  <wk@g10code.com>
670
671         * app-openpgp.c (do_sign): Redirect to do_auth for OpenPGP.3.
672
673 2006-10-06  Werner Koch  <wk@g10code.com>
674
675         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
676         (scdaemon_LDADD): Ditto.
677
678         * scdaemon.h (send_status_info): Mark with sentinel attribute.
679
680 2006-10-02  Marcus Brinkmann  <marcus@g10code.de>
681
682         * command.c (update_reader_status_file): Increase buffer of
683         NUMBUF2 (fixing typo).
684
685 2006-09-24  Marcus Brinkmann  <marcus@g10code.de>
686
687         * app-openpgp.c (do_sign): Advance INDATA by the SHA1 resp. RMD160
688         prefix length.
689
690 2006-09-14  Werner Koch  <wk@g10code.com>
691
692         Replaced all call gpg_error_from_errno(errno) by
693         gpg_error_from_syserror().
694
695         * command.c (scd_command_handler): Replaced
696         init_connected_socket_server by init_socket_server_ext.
697
698 2006-09-07  Werner Koch  <wk@g10code.com>
699
700         * command.c (update_reader_status_file): Execute an event handler
701         if available.
702
703 2006-09-06  Werner Koch  <wk@g10code.com>
704
705         * apdu.c (pcsc_end_transaction): 
706         * pcsc-wrapper.c (pcsc_end_transaction: Fixed dclaration.
707         Reported by Bob Dunlop.
708
709         * scdaemon.h (CTRL,APP): Removed and changed everywhere to
710         ctrl_t/app_t.
711
712         Replaced all Assuan error codes by libgpg-error codes.  Removed
713         all map_to_assuan_status and map_assuan_err.
714         
715         * scdaemon.c (main): Call assuan_set_assuan_err_source to have Assuan
716         switch to gpg-error codes.
717         * command.c (set_error): Adjusted.
718
719 2006-09-02  Marcus Brinkmann  <marcus@g10code.de>
720
721         * command.c (get_reader_slot): Return the slot_table index, not
722         the APDU slot number.
723         (update_reader_status_file): Use the slot_table index in the
724         update_card_removed invocation.
725
726 2006-09-01  Marcus Brinkmann  <marcus@g10code.de>
727
728         * command.c (cmd_getinfo): Handle status command.
729
730 2006-08-30  Marcus Brinkmann  <marcus@g10code.de>
731
732         * command.c (do_reset): Delay resetting CTRL->reader_slot until
733         after update_card_removed invocation.
734
735 2006-08-28  Marcus Brinkmann  <marcus@g10code.de>
736
737         * app-openpgp.c (do_decipher, do_sign): Allow "OPENPGP.2"
738         resp. "OPENPGP.1" for KEYIDSTR.
739
740 2006-08-21  Werner Koch  <wk@g10code.com>
741
742         * pcsc-wrapper.c (handle_open, handle_close): Reset card and
743         protocol on error/close.
744         (handle_status): Don't set the state if the state is unknown.
745         (handle_reset): Ignore an error if already disconnected.  May
746         happen due to system wake-up after hibernation.  Suggested by Bob
747         Dunlop.
748
749 2006-06-28  Werner Koch  <wk@g10code.com>
750
751         * app-openpgp.c (do_writekey): Fixed computation of memmove
752         length.  This led to garbled keys if E was larger than one byte.
753         Thanks to Achim Pietig for hinting at the garbled E.
754
755 2006-06-09  Marcus Brinkmann  <marcus@g10code.de>
756
757         * Makefile.am (scdaemon_LDADD): Add $(NETLIBS).
758
759 2006-04-14  Marcus Brinkmann  <marcus@g10code.de>
760
761         * app.c (select_application): Cover up a slot mismatch error in
762         case it happens (it shouldn't happen).
763         (release_application): Use APP->slot.  Lock the reader.
764         (application_notify_card_removed): Lock the reader.
765
766 2006-04-11  Werner Koch  <wk@g10code.com>
767
768         * command.c (hex_to_buffer): New.
769         (cmd_apdu): New.
770
771 2006-04-03  Werner Koch  <wk@g10code.com>
772
773         * scdaemon.c [__GLIBC__]: Default to libpcsclite.so.1.
774
775 2006-03-21  Werner Koch  <wk@g10code.com>
776
777         * command.c (cmd_pksign): Add --hash option.
778
779 2006-03-01  Werner Koch  <wk@g10code.com>
780
781         * command.c (status_file_update_lock): New.
782         (scd_update_reader_status_file): Use lock and factor existing code
783         out to ..
784         (update_reader_status_file): .. this.
785         (do_reset): Use the lock and call update_reader_status_file.
786
787 2006-02-20  Werner Koch  <wk@g10code.com>
788
789         * apdu.c (open_pcsc_reader): Fixed double free.  Thanks to Moritz.
790
791 2006-02-09  Werner Koch  <wk@g10code.com>
792
793         * command.c (get_reader_slot, do_reset) 
794         (scd_update_reader_status_file): Rewrote.
795
796         * app.c (release_application): Factored code out to ..
797         (deallocate_app): new function.
798         (select_application): Introduce new saved application stuff.
799         (application_notify_card_removed): New.
800         * command.c (update_card_removed): Call it here.
801         (do_reset): And here.
802
803         * app.c (check_application_conflict): New.
804         * command.c (open_card): Use it here.
805         (cmd_restart): New command.
806
807         * command.c (cmd_lock): Fixed --wait option to actually terminate.
808
809 2006-02-08  Werner Koch  <wk@g10code.com>
810
811         * ccid-driver.c (ccid_get_atr): Read Parameter and select T=1
812         using these parameters.
813         (scan_or_find_devices): Check for NULL r_fd.
814
815 2006-02-02  Werner Koch  <wk@g10code.com>
816
817         * ccid-driver.c (special_transport): New
818         (ccid_open_reader, do_close_reader, ccid_shutdown_reader)
819         (bulk_out, bulk_in): Add support for CardMan 4040 reader.
820
821         * ccid-driver.c (scan_or_find_devices): Factored most code out to
822         (scan_or_find_usb_device): .. new.
823         (make_reader_id): Fixed vendor mask.
824
825 2006-01-01  Werner Koch  <wk@g10code.com>
826
827         * app-openpgp.c (do_sign): Give user error if hash algorithm is
828         not supported by the card.
829
830 2005-12-06  Werner Koch  <wk@g10code.com>
831
832         * apdu.c (open_pcsc_reader): Check that pcsc-wrapper is actually
833         installed.
834
835 2005-11-23  Werner Koch  <wk@g10code.com>
836
837         * app-nks.c (verify_pin): Give a special error message for a Nullpin.
838
839 2005-10-29  Werner Koch  <wk@g10code.com>
840
841         * ccid-driver.c (send_escape_cmd): New args RESULT, RESULTLEN and
842         RESULTMAX.  Changed all callers.
843         (ccid_transceive_escape): New.
844
845 2005-10-27  Werner Koch  <wk@g10code.com>
846
847         * apdu.c [__CYGWIN__]: Make cygwin environment similar to _WIN32.
848         Suggested by John P. Clizbe.
849         * scdaemon.c [__CYGWIN__]: Set default PC/SC driver to winscard.dll.
850
851 2005-10-19  Werner Koch  <wk@g10code.com>
852
853         * ccid-driver.h (CCID_DRIVER_ERR_NO_KEYPAD): New.
854         * apdu.h (SW_HOST_NO_KEYPAD): New.
855         * iso7816.h (struct iso7816_pininfo_s): New.
856         * iso7816.c (map_sw): Support new code.
857         (iso7816_check_keypad): New.
858         (iso7816_verify_kp, iso7816_change_reference_data_kp) 
859         (iso7816_reset_retry_counter_kp): New.  Extended versions of the
860         original functions.
861         * apdu.c (host_sw_string): Support new code. 
862         (reader_table_s): New field CHECK_KEYPAD.
863         (new_reader_slot, open_ct_reader, open_pcsc_reader) 
864         (open_ccid_reader, open_rapdu_reader): Initialize it.
865         (check_ccid_keypad): New.
866         (apdu_check_keypad): New.
867         (apdu_send_le): Factored all code out to ...
868         (send_le): .. new.  Takes an additional arg; changed all callers
869         of the orginal function to use this one with a NULL for the new
870         arg.
871         (apdu_send_simple_kp): New.
872         (ct_send_apdu, pcsc_send_apdu, my_rapdu_send_apdu) 
873         (send_apdu_ccid): New arg PININFO.
874         (send_apdu_ccid): Use the new arg.
875
876         * scdaemon.c: New option --disable-keypad.
877
878 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
879
880         * Makefile.am (scdaemon_LDADD): Add ../gl/libgnu.a after
881         ../common/libcommon.a.
882
883 2005-09-20  Werner Koch  <wk@g10code.com>
884
885         * app-dinsig.c (verify_pin): Try ISO 9564 BCD encoding.
886
887         * iso7816.c (iso7816_select_application): Add arg FLAGS.  Changed
888         all callers to pass 0.
889         * app-openpgp.c (app_select_openpgp): But this one requires a
890         special flag.
891
892         * app-p15.c (app_select_p15): Don't use select application for the
893         BELPIC.
894
895 2005-09-09  Werner Koch  <wk@g10code.com>
896
897         * pcsc-wrapper.c (main): Removed bogus free.
898
899         * app-p15.c (do_auth): New.
900         (do_getattr): New attribs $AUTHKEYID and $DISPSERIALNO.
901         * app-openpgp.c (do_getattr): Ditto.
902
903 2005-09-08  Werner Koch  <wk@g10code.com>
904
905         * app-openpgp.c (do_getattr): New key $AUTHKEYID.
906
907 2005-09-06  Werner Koch  <wk@g10code.com>
908
909         * app-p15.c (do_sign): Tweaked for BELPIC cards.
910         (read_home_df): New arg R_BELPIC.
911         (app_select_p15): Set card type for BELPIC.
912
913 2005-09-05  Werner Koch  <wk@g10code.com>
914
915         * iso7816.c (iso7816_select_path): New.
916         * app-p15.c (select_ef_by_path): Allow for direct path selection.
917         (app_select_p15): Try using the Belgian variant of pkcs#15.
918         (read_home_df): New.
919         (read_ef_odf): Generalized.
920         (read_ef_tokeninfo): New.
921         (read_p15_info): Set serialnumber from TokenInfo.
922         (app_select_p15): Don't munge serialNumber - that must be done
923         only once.
924
925         * iso7816.c (iso7816_read_binary): Use Le=0 when reading all
926         data.  Handle 6C00 error and take 6B00 as indication for EOF.
927         * apdu.h (SW_EXACT_LENGTH_P): New.
928         * apdu.c (new_reader_slot, reset_pcsc_reader, pcsc_get_status) 
929         (open_pcsc_reader): Set new reader state IS_T0.
930         (apdu_send_le): When doing T=0 make sure not to send Lc and Le.
931         Problem reported by Carl Meijer.
932         (apdu_send_direct): Initialize RESULTLEN.
933         * pcsc-wrapper.c (handle_status): Return the current protocol as
934         a new third word.
935
936 2005-08-05  Werner Koch  <wk@g10code.com>
937
938         * apdu.c (open_rapdu_reader): Set the reader number.
939
940 2005-07-05  Werner Koch  <wk@g10code.com>
941
942         * app-openpgp.c (do_readkey): Return a mallcoed copy of the key as
943         required by the description.  Thanks to Moritz for tracking this
944         problem down.
945
946 2005-06-21  Werner Koch  <wk@g10code.com>
947
948         * scdaemon.c (main): ifdef call to ccid_set_debug_level.
949
950         * apdu.c (reset_pcsc_reader, open_pcsc_reader): Cast size_t to
951         ulong for printf.
952
953 2005-06-06  Werner Koch  <wk@g10code.com>
954
955         * scdaemon.c (main): New option --debug-allow-core-dump. 
956
957 2005-06-03  Werner Koch  <wk@g10code.com>
958
959         * scdaemon.c (handle_connections): Make sure that the signals we
960         are handling are not blocked.Block signals while creating new
961         threads.
962         (handle_connections): Include the file descriptor into the name of
963         the thread.
964
965 2005-06-02  Werner Koch  <wk@g10code.com>
966
967         * app.c (app_dump_state, dump_mutex_state): New.
968         * scdaemon.c (handle_signal): Print it on SIGUSR1.
969
970         * app-openpgp.c (do_writekey): Typo fix.
971
972         * command.c (open_card): Check for locked state even if an
973         application context is available.
974
975         * app-common.h: Add REF_COUNT field.
976         * app.c (release_application, select_application): Implement
977         reference counting to share the context beween connections.
978
979         * app.c (lock_reader, unlock_reader): Take SLOT instead of APP as
980         argument.  Changed all callers.
981         (select_application): Unlock the reader on error.  This should fix
982         the hangs I noticed last week.
983
984         * scdaemon.h: Removed card_ctx_t cruft.
985
986 2005-06-01  Werner Koch  <wk@g10code.com>
987
988         * scdaemon.c: Include mkdtemp.h.
989
990 2005-05-31  Werner Koch  <wk@g10code.com>
991
992         * tlv.c [GNUPG_MAJOR_VERSION==1]: Define constants instead of
993         including a gnupg 1.4 header.
994
995 2005-05-30  Werner Koch  <wk@g10code.com>
996
997         * tlv.c: Add hack to compile without gpg-error.h when used with
998         GnuPG 1.4.
999
1000 2005-05-23  Werner Koch  <wk@g10code.com>
1001
1002         * Makefile.am: Do not build sc-copykeys anymore.
1003
1004         * app-openpgp.c (app_openpgp_storekey, app_openpgp_readkey)
1005         (app_openpgp_cardinfo): Removed.
1006
1007         * ccid-driver.c (parse_ccid_descriptor): SCR335 FW version 5.14 is
1008         good.
1009         (do_close_reader): Never do a reset. The caller should instead
1010         make sure that the reader has been closed properly.  The new retry
1011         code in ccid_slot_status will make sure that the readersatrts up
1012         fine even if the last process didn't closed the USB connection
1013         properly.
1014         (ccid_get_atr): For certain readers try switching to ISO mode.
1015         Thanks to Ludovic Rousseau for this hint and the magic numbers.
1016         (print_command_failed): New.
1017         (bulk_in): Use it here. Add new arg NO_DEBUG.
1018         (ccid_slot_status): Disabled debugging.
1019
1020 2005-05-21  Werner Koch  <wk@g10code.com>
1021
1022         * scdaemon.c (handle_signal): Print thread info on SIGUSR1.
1023
1024 2005-05-20  Werner Koch  <wk@g10code.com>
1025
1026         * ccid-driver.c: Replaced macro DEBUG_T1 by a new debug level.
1027         (parse_ccid_descriptor): Mark SCR335 firmware version 5.18 good.
1028         (ccid_transceive): Arghhh.  The seqno is another bit in the
1029         R-block than in the I block, this was wrong at one place.
1030
1031         * scdaemon.c: New options --debug-ccid-driver and
1032         --debug-disable-ticker.
1033
1034         * app-openpgp.c (do_genkey, do_writekey): Factored code to check
1035         for existing key out into ..
1036         (does_key_exist): .. New function.
1037
1038 2005-05-19  Werner Koch  <wk@g10code.com>
1039
1040         * tlv.c (parse_sexp): New.
1041
1042         * command.c (cmd_writekey): New.
1043         * app.c (app_writekey): New.
1044         * app-common.c (app_t): Add function ptr WRITEKEY.
1045         * app-openpgp.c (do_writekey): New.
1046
1047         * app-openpgp.c (do_readkey) [GNUPG_MAJOR_VERSION==1]: Return error.
1048         * app-common.h (app_t) [GNUPG_MAJOR_VERSION==1]: Add a field to
1049         store the Assuan context.
1050
1051 2005-05-17  Werner Koch  <wk@g10code.com>
1052
1053         * scdaemon.c: Removed non-pth code paths.
1054         (create_socket_name, create_server_socket): New.  Taken from
1055         ../agent/gpg-agent.
1056         (cleanup): Changed to adjust for SOCKET_NAME now being malloced.
1057         (ticker_thread): Always use pth_event_occurred; it is again
1058         defined for all decent PTH versions.
1059         (handle_connections): New. Based on the gpg-agent code.
1060         (start_connection_thread): Ditto.
1061         (ticker_thread): Removed.
1062         (cleanup_sh): Removed.
1063         (main): Run the handler for the pipe server in a separate
1064         thread.  This replaces the old ticker thread.
1065         (scd_get_socket_name): New.
1066         * command.c (cmd_getinfo): New command GETINFO.
1067         (scd_command_handler): Renamed argument and changed code to use an
1068         already connected FD.
1069
1070 2005-05-15  Werner Koch  <wk@g10code.com>
1071
1072         * app.c, app-common.h, app-nks.c, app-p15.c, app-dinsig.c
1073         * app-openpgp.c: Change most function return types from int to
1074         gpg_error_t.
1075         * command.c (pin_cb): Ditto.
1076         * sc-copykeys.c (pincb): Ditto.
1077
1078         * app.c (lock_reader, unlock_reader): New.  Changed call handler
1079         wrappers to make use of these functions.
1080
1081 2005-05-07  Werner Koch  <wk@g10code.com>
1082
1083         * ccid-driver.c (do_close_reader): Don't do a reset before close.
1084         Some folks reported that it makes the SCR335 hang less often.
1085         Look at the source on how to re-enable it.
1086
1087 2005-04-27  Werner Koch  <wk@g10code.com>
1088
1089         * app-p15.c (micardo_mse): New.
1090         (do_sign): Call it.
1091         * iso7816.c (iso7816_manage_security_env): Allow passing DATA as
1092         NULL to indicate an empty Lc.
1093         * tlv.c (find_tlv): Check that a found object fits into the
1094         buffer.
1095         (find_tlv_unchecked): New as replacement for the old non-checking
1096         variant.
1097         * app.c (select_application): Keep on using the non-checking
1098         variant.
1099         * app-openpgp.c (get_one_do, dump_all_do): Ditto.
1100
1101         
1102         Removal of the old OpenSC based code.
1103         
1104         * app-p15.c: New.  Basic support for pkcs15 cards without OpenSC.
1105         There are quite a couple of things missing but at least I can use
1106         my old TCOS cards from the Aegypten-1 development for signing.
1107         * app.c (select_application): Detect pkcs15 applications.
1108         * Makefile.am (scdaemon_SOURCES): Removed card.c, card-common.h
1109         and card-p15.c because they are now obsolete. Added app-p15.c.
1110         Removed all OpenSC stuff.
1111         * command.c (do_reset, open_card, cmd_serialno, cmd_learn) 
1112         (cmd_readcert, cmd_readkey, cmd_pksign, cmd_pkdecrypt): Removed
1113         all special cases for the old card.c based mechanisms.
1114         * scdaemon.c, apdu.c: Removed all special cases for OpenSC.
1115
1116 2005-04-20  Werner Koch  <wk@g10code.com>
1117
1118         * command.c: Use GPG_ERR_LOCKED instead of EBUSY.
1119
1120 2005-04-14  Werner Koch  <wk@g10code.com>
1121
1122         * app-openpgp.c (retrieve_key_material): Rewritten.  Return a
1123         proper error code.
1124         (retrieve_next_token): Removed.
1125         (retrieve_fpr_from_card): Rewritten to make use of DO caching and
1126         to take the KEYNO as arg.
1127         (get_public_key): Renamed variable for clarity.
1128
1129 2005-04-12  Werner Koch  <wk@g10code.com>
1130
1131         Basic support for several sessions.
1132         
1133         * command.c (scd_command_handler): Replace the primary_connection
1134         stuff by a real connection list.  Release the local context on
1135         exit.
1136         (scd_update_reader_status_file): Update accordingly.  Send signal
1137         to all connections who registered an event signal.
1138         (cmd_lock, cmd_unlock, register_commands): New commands LOCK and
1139         UNLOCK.
1140         (cmd_setdata, cmd_pksign, cmd_pkauth, cmd_pkdecrypt, cmd_setattr) 
1141         (cmd_genkey, cmd_passwd, cmd_checkpin): Return an error if reader
1142         is locked.
1143         (do_reset): Handle locking.
1144         (open_card): Ditto.  Share the reader slot with other sessions.
1145         (get_reader_slot): New.
1146         (update_card_removed): New.  Use it in the TEST_CARD_REMOVAL macro.
1147
1148 2005-04-07  Werner Koch  <wk@g10code.com>
1149
1150         * app-openpgp.c (do_check_pin): Add hack to allow verification of
1151         CHV3.
1152         (get_public_key): Don't use gcry functions to create S-expressions.
1153         (do_deinit, do_readkey, do_genkey, send_keypair_info): Adjust for
1154         above change.
1155
1156 2005-03-29  Moritz Schulte  <moritz@g10code.com>
1157
1158         * app-openpgp.c (retrieve_fpr_from_card): New function.
1159         (retrieve_next_token): New function.
1160         (retrieve_key_material): New function.
1161         (get_public_key): Implement retrival of key through expernal
1162         helper (gpg) in case the openpgp card is not cooperative enough.
1163
1164 2005-03-16  Werner Koch  <wk@g10code.com>
1165
1166         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
1167         reader type specific.
1168         (scan_or_find_devices): Do not check the interface subclass in the
1169         SPR532 kludge, as this depends on the firmware version.
1170         (ccid_get_atr): Get the Slot status first.  This solves the
1171         problem with readers hanging on recent Linux 2.6.x.
1172         (bulk_in): Add argument TIMEOUT and changed all callers to pass an
1173         appropriate one.  Change the standard timeout from 10 to 5 seconds.
1174         (ccid_slot_status): Add a retry code with an initial short timeout.
1175         (do_close_reader): Do an usb_reset before closing the reader.
1176
1177 2005-02-25  Werner Koch  <wk@g10code.com>
1178
1179         * app-openpgp.c (get_public_key): Make sure not to return negative
1180         numbers.
1181         (do_sign): Allow passing of indata with algorithm prefix.
1182         (do_auth): Allow OPENPGP.3 as an alternative ID.
1183
1184         * app.c (app_getattr): Return just the S/N but not the timestamp.
1185
1186 2005-02-24  Werner Koch  <wk@g10code.com>
1187
1188         * app.c (app_getattr): Return APPTYPE or SERIALNO type even if the
1189         application does dot support the getattr call.
1190
1191         * app-openpgp.c (get_one_do): Never try to get a non cacheable
1192         object from the cache.
1193         (get_one_do): Add new arg to return an error code.  Changed all
1194         callers.
1195         (do_getattr): Let it return a proper error code.
1196
1197         * app.c (select_application): Return an error code and the
1198         application context in an new arg.
1199         * command.c (open_card): Adjusted for that.  Don't use the
1200         fallback if no card is present.  Return an error if the card has
1201         been removed without a reset.
1202         (do_reset, cmd_serialno): Clear that error flag.
1203         (TEST_CARD_REMOVAL): New. Use it with all command handlers.
1204         (scd_update_reader_status_file): Set the error flag on all changes.
1205
1206         * scdaemon.c (ticker_thread): Termintate if a shutdown is pending.
1207
1208         * apdu.c: Added some PCSC error codes.
1209         (pcsc_error_to_sw): New.
1210         (reset_pcsc_reader, pcsc_get_status, pcsc_send_apdu) 
1211         (open_pcsc_reader): Do proper error code mapping.
1212
1213 2005-03-16  Werner Koch  <wk@g10code.com>
1214
1215         * ccid-driver.c (parse_ccid_descriptor): Make SCM workaround
1216         reader type specific.
1217         (scan_or_find_devices): Do not check the interface subclass in the
1218         SPR532 kludge, as this depends on the firmware version.
1219         (ccid_get_atr): Get the Slot status first.  This solves the
1220         problem with readers hanging on recent Linux 2.6.x.
1221
1222 2005-02-22  Werner Koch  <wk@g10code.com>
1223
1224         * app-openpgp.c (app_local_s): New field PK.
1225         (do_deinit, do_genkey, app_openpgp_storekey): Clear it.
1226         (get_public_key, send_keypair_info): New.
1227         (do_learn_status): Send KEYPAIR info
1228
1229         * app-common.h (app_ctx_t): Add function pointer READKEY.
1230         * app.c (app_readkey): New.
1231         * command.c (cmd_readkey): Use READKEY function if possible.
1232
1233 2005-01-26  Werner Koch  <wk@g10code.com>
1234
1235         * ccid-driver.c (parse_ccid_descriptor): Need the CSM workaround
1236         also for newer firmware versions.  Need to get a list of fixed
1237         firmware versions and use that.
1238
1239 2005-01-25  Werner Koch  <wk@g10code.com>
1240
1241         * apdu.c (apdu_send_le, apdu_send_direct): Fix some compiler
1242         warnings.
1243
1244         * app-openpgp.c (get_cached_data): New arg GET_IMMEDIATE to bypass
1245         the cache.  Changed all callers.
1246         (get_one_do): Bypass the cache if the value would have been read
1247         directly for v1.1 cards.It makes things a bit slower but obnly for
1248         1.0 cards and there are not that many cards out in the wild.  This
1249         is required to fix a caching bug when generating new keys; as a
1250         side effect of the retrieval of the the C4 DO from the 6E DO the
1251         cached fingerprint will get updated to the old value and later
1252         when signing the generated key the checking of the fingerprint
1253         fails because it won't match the new one.  Thanks to Moritz for
1254         analyzing this problem.
1255         (verify_chv3): Removed the CHV status reread logic because we
1256         won't cache the C4 DO anymore.
1257
1258 2004-12-28  Werner Koch  <wk@g10code.com>
1259
1260         * ccid-driver.c (find_endpoint): New.
1261         (scan_or_find_devices): Add new args to return endpoint info and
1262         interface number.
1263         (ccid_open_reader, ccid_shutdown_reader): Take care of these new
1264         args.
1265         (bulk_in, bulk_out): Use the correct endpoints.
1266         (ccid_transceive_apdu_level): New.
1267         (ccid_transceive): Divert to above.
1268         (parse_ccid_descriptor): Allow APDU level exchange mode.
1269         (do_close_reader): Pass the interface number to usb_release_interface.
1270
1271 2004-12-21  Werner Koch  <wk@g10code.com>
1272
1273         * scdaemon.c (main): Use default_homedir().
1274
1275 2004-12-18  Werner Koch  <wk@g10code.com>
1276
1277         * scdaemon.c (main) [W32]: Remove special Pth initialize..
1278
1279         * scdaemon.h (map_assuan_err): Define in terms of
1280         map_assuan_err_with_source.
1281
1282 2004-12-15  Werner Koch  <wk@g10code.com>
1283
1284         * scdaemon.c [W32]: Various hacks to make it run under W32.
1285
1286         * command.c (scd_update_reader_status_file) [W32]: Don't use kill.
1287
1288         * apdu.c [W32]: Disable use of pcsc_wrapper.
1289
1290         * Makefile.am (scdaemon_LDADD): Reorder libs.
1291         (sc_copykeys_LDADD): Add libassuan because it is needed for W32. 
1292
1293 2004-12-06  Werner Koch  <wk@g10code.com>
1294
1295         * Makefile.am (pkglib_PROGRAMS): Build only for W32.
1296
1297 2004-10-22  Werner Koch  <wk@g10code.com>
1298
1299         * app-openpgp.c (verify_chv3): The minium length for CHV3 is
1300         8. Changed string to match the other ones.
1301
1302 2004-10-21  Werner Koch  <wk@g10code.com>
1303
1304         * app-openpgp.c (do_sign): Replace asprintf by direct allocation.
1305         This avoids problems with missing vasprintf implementations in
1306         gnupg 1.4.
1307
1308         * app-common.h (app_openpgp_storekey: Add prototype. 
1309
1310 2004-10-20  Werner Koch  <wk@g10code.com>
1311
1312         * sc-investigate: Removed.
1313         * Makefile.am (sc_investigate): Removed.
1314         
1315         * pcsc-wrapper.c (load_pcsc_driver): Load get_status_change func.
1316         (handle_open): Succeed even without a present card.
1317         (handle_status, handle_reset): New.
1318         
1319         * apdu.c (apdu_open_reader): Load pcsc_get_status_change fucntion.
1320         (pcsc_get_status): Implemented.
1321         (reset_pcsc_reader): Implemented.
1322         (open_pcsc_reader): Succeed even with no card inserted.
1323         (open_ccid_reader): Set LAST_STATUS.
1324
1325         * iso7816.c (iso7816_select_application): Always use 0 for P1.
1326
1327 2004-10-18  Werner Koch  <wk@g10code.com>
1328
1329         * ccid-driver.c (ccid_get_atr): Reset T=1 state info.
1330
1331 2004-10-14  Werner Koch  <wk@g10code.com>
1332
1333         * app-openpgp.c (parse_login_data): New. 
1334         (app_select_openpgp): Call it.
1335         (do_setattr): Reparse it after change.
1336
1337 2004-10-06  Werner Koch  <wk@g10code.de>
1338
1339         * ccid-driver.c (ccid_open_reader): Store the vendor ID.
1340         (ccid_transceive_secure): New.
1341         (parse_ccid_descriptor): Workaround for an SCM reader problem.
1342
1343 2004-10-04  Werner Koch  <wk@g10code.de>
1344
1345         * ccid-driver.c (send_escape_cmd): New.
1346
1347 2004-09-30  Werner Koch  <wk@g10code.com>
1348
1349         * Makefile.am: Adjusted for gettext 0.14.
1350
1351         * app-openpgp.c (do_sign): Add the error string to the verify
1352         failed messages.
1353
1354 2004-09-27  Werner Koch  <wk@g10code.com>
1355
1356         From gnupg 1.3
1357
1358         * app-openpgp.c: Made all strings translatable.
1359         (verify_chv3) [GNUPG_MAJOR_VERSION]: Make opt.allow_admin
1360         available for use in gnupg 2. 
1361         (verify_chv3): Reimplemented countdown showing to use only
1362         functions from this module.  Flush the CVH status cache on a
1363         successful read.
1364         (get_one_do): Hack to bypass the cache for cards versions > 1.0.
1365         (store_fpr): Store the creation date for card version > 1.0.
1366
1367         * app-openpgp.c (app_openpgp_storekey): Call flush_cache.
1368         (get_cached_data): Move local data initialization to ..
1369         (app_select_openpgp): .. here. Read some flags for later use.
1370         (do_getattr): New read-only attribute EXTCAP.
1371         
1372         * apdu.c (open_pcsc_reader): Do not print empty reader string.
1373
1374         * ccid-driver.c (do_close_reader): Factored some code out from ...
1375         (ccid_close_reader): ..here.
1376         (ccid_shutdown_reader): New.
1377
1378         * apdu.c (apdu_shutdown_reader): New.
1379         (shutdown_ccid_reader): New.
1380
1381         * apdu.c (open_ccid_reader): New arg PORTSTR.  Pass it to
1382         ccid_open_reader.
1383         (apdu_open_reader): Pass portstr to open_ccid_reader.
1384         (apdu_open_reader): No fallback if a full CCID reader id has been
1385         given.
1386
1387         * ccid-driver.c (ccid_get_reader_list): New.
1388         (ccid_open_reader): Changed API to take a string for the reader.
1389         Removed al the cruft for the libusb development vesion which seems
1390         not to be maintained anymore and there are no packages anyway.
1391         The stable library works just fine.
1392         (struct ccid_reader_id_s): Deleted and replaced everywhere by a
1393         simple string.
1394         (usb_get_string_simple): Removed.
1395         (bulk_in): Do valgrind hack here and not just everywhere.
1396
1397         * ccid-driver.c (read_device_info): Removed.
1398         (make_reader_id, scan_or_find_devices): New.
1399         (ccid_open_reader): Simplified by make use of the new functions.
1400         (ccid_set_debug_level): New.  Changed the macros to make use of
1401         it.  It has turned out that it is often useful to enable debugging
1402         at runtime so I added this option.
1403
1404         From gnupg 1.3 - David Shaw  <dshaw@jabberwocky.com>
1405
1406         * app-openpgp.c (verify_chv3): Show a countdown of how many wrong
1407         admin PINs can be entered before the card is locked.
1408
1409         * app-openpgp.c (get_cached_data): Avoid mallocing zero since it
1410         breaks us when using --enable-m-guard.
1411
1412         * ccid-driver.c (usb_get_string_simple): Replacement function to
1413         work with older libusb.
1414
1415         * ccid-driver.c (read_device_info): Fix segfault when usb device
1416         is not accessible.
1417         (ccid_open_reader): Allow working with an even older version of
1418         libusb (usb_busses global instead of usb_get_busses()).
1419
1420 2004-09-11  Werner Koch  <wk@g10code.com>
1421
1422         * app-openpgp.c (app_select_openpgp): Its app_munge_serialno and
1423         not app_number_serialno.
1424
1425 2004-08-20  Werner Koch  <wk@g10code.de>
1426
1427         * app.c (select_application): Fixed serial number extraction and
1428         added the BMI card workaround.
1429         (app_munge_serialno): New.
1430         * app-openpgp.c (app_select_openpgp): Try munging serialno.
1431
1432 2004-08-05  Werner Koch  <wk@g10code.de>
1433
1434         * scdaemon.c (main): New option --disable-application.
1435         * app.c (is_app_allowed): New.
1436         (select_application): Use it to check for disabled applications.
1437
1438         * ccid-driver.h (CCID_DRIVER_ERR_ABORTED): New.
1439         * ccid-driver.c (ccid_open_reader): Support the stable 0.1 version
1440         of libusb.
1441         (ccid_get_atr): Handle short messages.
1442
1443         * apdu.c (my_rapdu_get_status): Implemented.
1444
1445 2004-07-27  Moritz Schulte  <moritz@g10code.com>
1446
1447         * apdu.c: Include <signal.h>.
1448
1449         * Makefile.am: Use @DL_LIBS@ instead of -ldl.
1450
1451 2004-07-22  Werner Koch  <wk@g10code.de>
1452
1453         * Makefile.am: Make OpenSC lib link after libgcrypt. Do not link
1454         to pth.
1455         * apdu.c: Don't use Pth if we use OpenSC.
1456         * sc-investigate.c, scdaemon.c: Disable use of pth if OpenSC is used. 
1457
1458         * scdaemon.c (main): Bumbed thread stack size up to 512k.
1459
1460 2004-07-16  Werner Koch  <wk@gnupg.org>
1461
1462         * apdu.c (reader_table_s):  Add function pointers for the backends.
1463         (apdu_close_reader, apdu_get_status, apdu_activate) 
1464         (send_apdu): Make use of them.
1465         (new_reader_slot): Intialize them to NULL.
1466         (dump_ccid_reader_status, ct_dump_reader_status): New.
1467         (dump_pcsc_reader_status): New.
1468         (open_ct_reader, open_pcsc_reader, open_ccid_reader) 
1469         (open_osc_reader, open_rapdu_reader): Intialize function pointers.
1470         (ct_activate_card, ct_send_apdu, pcsc_send_apdu, osc_send_apdu) 
1471         (error_string): Removed.  Replaced by apdu_strerror.
1472         (get_ccid_error_string): Removed.
1473         (ct_activate_card): Remove the unused loop.
1474         (reset_ct_reader): Implemented.
1475         (ct_send_apdu): Activate the card if not yet done.
1476         (pcsc_send_apdu): Ditto.
1477
1478 2004-07-15  Werner Koch  <wk@gnupg.org>
1479
1480         * ccid-driver.h: Add error codes.
1481         * ccid-driver.c: Implement more or less proper error codes all
1482         over the place.
1483
1484         * apdu.c (apdu_send_direct): New.
1485         (get_ccid_error_string): Add some error code mappings.
1486         (send_apdu): Pass error codes along for drivers already supporting
1487         them.
1488         (host_sw_string): New.
1489         (get_ccid_error_string): Use above.
1490         (send_apdu_ccid): Reset the reader if it has not yet been done.
1491         (open_ccid_reader): Don't care if the ATR can't be read.
1492         (apdu_activate_card): New.
1493         (apdu_strerror): New.
1494         (dump_reader_status): Only enable it with opt.VERBOSE.
1495         * iso7816.c (map_sw): Add mappings for the new error codes.
1496
1497 2004-07-02  Werner Koch  <wk@gnupg.org>
1498
1499         * apdu.c (open_ct_reader, open_pcsc_reader, open_ccid_reader)
1500         (reset_ccid_reader, open_osc_reader): Call dump_reader_status only
1501         in verbose mode.
1502
1503 2004-07-01  Werner Koch  <wk@gnupg.org>
1504
1505         * sc-investigate.c: Initialize Pth which is now required.
1506         (interactive_shell): New command "readpk".
1507
1508         * app-openpgp.c (do_getattr): Fix for sending CA-FPR.
1509
1510 2004-06-30  Werner Koch  <wk@gnupg.org>
1511
1512         * app-openpgp.c (app_openpgp_readkey): Fixed check for valid
1513         exponent.
1514
1515 2004-06-18  Werner Koch  <wk@g10code.com>
1516
1517         * sc-investigate.c (my_read_line): Renamed from read_line.
1518
1519 2004-06-16  Werner Koch  <wk@gnupg.org>
1520
1521         * apdu.c (osc_get_status): Fixed type in function name. Noted by
1522         Axel Thimm.  Yes, I didn't tested it with OpenSC :-(.
1523
1524 2004-04-28  Werner Koch  <wk@gnupg.org>
1525
1526         * app-openpgp.c (do_setattr): Sync FORCE_CHV1.
1527
1528 2004-04-27  Werner Koch  <wk@gnupg.org>
1529
1530         * app-common.h: Do not include ksba.h for gnupg 1.
1531
1532 2004-04-26  Werner Koch  <wk@gnupg.org>
1533
1534         * app-common.h: New members FNC.DEINIT and APP_LOCAL.
1535         * app.c (release_application): Call new deconstructor.
1536         * app-openpgp.c (do_deinit): New.
1537         (get_cached_data, flush_cache_item, flush_cache_after_error)
1538         (flush_cache): New.
1539         (get_one_do): Replaced arg SLOT by APP.  Make used of cached data.
1540         (verify_chv2, verify_chv3): Flush some cache item after error.
1541         (do_change_pin): Ditto.
1542         (do_sign): Ditto.
1543         (do_setattr): Flush cache item.
1544         (do_genkey): Flush the entire cache.
1545         (compare_fingerprint): Use cached data.
1546
1547         * scdaemon.c (main): Do the last change the usual way. This is so
1548         that we can easily test for versioned config files above.
1549
1550 2004-04-26  Marcus Brinkmann  <marcus@g10code.de>
1551
1552         * scdaemon.c (main): For now, always print default filename for
1553         --gpgconf-list, and never /dev/null.
1554
1555 2004-04-21  Werner Koch  <wk@gnupg.org>
1556
1557         * command.c (scd_update_reader_status_file): Send a signal back to
1558         the client.
1559         (option_handler): Parse the new event-signal option.
1560
1561         * scdaemon.c (handle_signal): Do not use SIGUSR{1,2} anymore for
1562         changing the verbosity.
1563
1564 2004-04-20  Werner Koch  <wk@gnupg.org>
1565
1566         * command.c (scd_update_reader_status_file): Write status files.
1567
1568         * app-help.c (app_help_read_length_of_cert): Fixed calculation of
1569         R_CERTOFF.
1570
1571         * pcsc-wrapper.c: New.
1572         * Makefile.am (pkglib_PROGRAMS): Install it here.
1573         * apdu.c (writen, readn): New.
1574         (open_pcsc_reader, pcsc_send_apdu, close_pcsc_reader): Use the
1575         pcsc-wrapper if we are using Pth.
1576         (apdu_send_le): Reinitialize RESULTLEN.  Handle SW_EOF_REACHED
1577         like SW_SUCCESS.
1578
1579 2004-04-19  Werner Koch  <wk@gnupg.org>
1580
1581         * ccid-driver.c (parse_ccid_descriptor): Store some of the reader
1582         features away.  New arg HANDLE
1583         (read_device_info): New arg HANDLE. Changed caller.
1584         (bulk_in): Handle time extension requests.
1585         (ccid_get_atr): Setup parameters and the IFSD.
1586         (compute_edc): New. Factored out code.
1587         (ccid_transceive): Use default NADs when required.
1588
1589 2004-04-14  Werner Koch  <wk@gnupg.org>
1590
1591         * scdaemon.h (server_control_s): Add member READER_SLOT.
1592         * scdaemon.c (scd_init_default_ctrl): Initialize READER_SLOT to -1.
1593         * command.c (open_card): Reuse an open slot.
1594         (reset_notify): Just reset the slot if supported by the reader.
1595         (do_reset): Factored code from above out.
1596         (scd_command_handler): Use it for cleanup.
1597
1598         * apdu.h: New pseudo stati SW_HOST_NOT_SUPPORTED,
1599         SW_HOST_LOCKING_FAILED and SW_HOST_BUSY.
1600         * iso7816.c (map_sw): Map it.
1601         
1602         * ccid-driver.c (ccid_slot_status): Add arg STATUSBITS.
1603         * apdu.c (apdu_get_status): New.
1604         (ct_get_status, pcsc_get_status, ocsc_get_status): New stubs.
1605         (get_status_ccid): New.
1606         (apdu_reset): New.
1607         (reset_ct_reader, reset_pcsc_reader, reset_osc_reader): New stubs.
1608         (reset_ccid_reader): New.
1609         (apdu_enum_reader): New.
1610         
1611         * apdu.c (lock_slot, trylock_slot, unlock_slot): New helpers.
1612         (new_reader_slot) [USE_GNU_PTH]: Init mutex.
1613         (apdu_reset, apdu_get_status, apdu_send_le): Run functions
1614         in locked mode.
1615
1616         * command.c (scd_update_reader_status_file): New.
1617         * scdaemon.c (handle_tick): Call it.
1618
1619 2004-04-13  Werner Koch  <wk@gnupg.org>
1620
1621         * scdaemon.c: Convert to a Pth application.
1622         (handle_signal, ticker_thread, handle_tick): New.
1623         (main): Fire up the ticker thread in server mode.
1624
1625 2004-03-23  Werner Koch  <wk@gnupg.org>
1626
1627         * scdaemon.c (main) <gpgconf_list>: Fixed output for pcsc_driver.
1628
1629 2004-03-17  Werner Koch  <wk@gnupg.org>
1630
1631         * tlv.c (parse_ber_header): Do not check for tag overflow - it
1632         does not make sense.  Simplified the check for length overflow.
1633
1634         * scdaemon.c (main) <gpgconf>: Fixed default value quoting.
1635
1636 2004-03-16  Werner Koch  <wk@gnupg.org>
1637
1638         * app-dinsig.c: Implemented. Based on app-nks.c and card-dinsig.c
1639         * app-nks.c (get_length_of_cert): Removed.
1640         * app-help.c: New.
1641         (app_help_read_length_of_cert): New.  Code taken from above.  New
1642         optional arg R_CERTOFF.
1643
1644         * card-dinsig.c: Removed.
1645         * card.c (card_get_serial_and_stamp): Do not bind to the old and
1646         never finsiged card-dinsig.c.
1647
1648         * iso7816.c (iso7816_read_binary): Allow for an NMAX > 254.
1649
1650 2004-03-11  Werner Koch  <wk@gnupg.org>
1651
1652         * scdaemon.h (out_of_core): Removed.  Replaced callers by standard
1653         gpg_error function.
1654
1655         * apdu.c, iso7816.c, ccid-driver.c [GNUPG_SCD_MAIN_HEADER]: Allow
1656         to include a header defined by the compiler.  This helps us to
1657         reuse the source in other software.
1658
1659 2004-03-10  Werner Koch  <wk@gnupg.org>
1660
1661         * iso7816.c (iso7816_read_record): New arg SHORT_EF.  Changed all
1662         callers.
1663
1664 2004-02-18  Werner Koch  <wk@gnupg.org>
1665
1666         * sc-investigate.c (main): Setup the used character set.
1667         * scdaemon.c (main): Ditto.
1668
1669         * scdaemon.c (set_debug): New.  Add option --debug-level.
1670         (main): Add option --gpgconf-list.
1671
1672 2004-02-12  Werner Koch  <wk@gnupg.org>
1673
1674         * Makefile.am: Include cmacros.am for common flags.
1675
1676 2004-01-29  Werner Koch  <wk@gnupg.org>
1677
1678         * command.c (reset_notify): Release the application context and
1679         close the reader.
1680
1681 2004-01-28  Werner Koch  <wk@gnupg.org>
1682
1683         * iso7816.c (iso7816_manage_security_env): New.
1684         (iso7816_decipher): Add PADIND argument.
1685
1686 2004-01-27  Werner Koch  <wk@gnupg.org>
1687
1688         * command.c (cmd_readcert, cmd_readkey): Work on a copy of LINE.
1689
1690         * app-common.h (app_ctx_s): Added readcert field.
1691         * app.c (app_readcert): New.
1692         * tlv.c (parse_ber_header): Added; taken from libksba.
1693
1694 2004-01-26  Werner Koch  <wk@gnupg.org>
1695
1696         * card.c (map_sc_err): Use SCD as the error source.
1697
1698         * command.c (open_card): ADD arg NAME to allow requesting a
1699         specific application.  Changed all callers.
1700         (cmd_serialno): Allow optional argument to select the desired
1701         application.
1702
1703         * app-nks.c: New. 
1704
1705         * scdaemon.h (opt): Add READER_PORT.
1706         * scdaemon.c (main): Set it here.
1707         * app.c (app_set_default_reader_port): Removed.
1708         (select_application): Add NAME arg and figure out a
1709         default serial number from the GDO. Add SLOT arg and remove all
1710         reader management.
1711         (release_application): New.
1712         (app_write_learn_status): Output an APPTYPE status line.
1713         * command.c (open_card): Adapt for select_application change.
1714         * app-openpgp.c (app_select_openpgp): Removed SN and SNLEN args
1715         and set it directly.  Changed all callers.
1716
1717 2004-01-25  Werner Koch  <wk@gnupg.org>
1718
1719         * iso7816.c (iso7816_select_application): P1 kludge for OpenPGP
1720         card.
1721         * app-openpgp.c (find_tlv): Factor out this function to ..
1722         * tlv.c, tlv.h: .. new.
1723
1724         * scdaemon.h: Introduced app_t and ctrl_t as the new types for APP
1725         and CTRL.
1726
1727 2004-01-21  Werner Koch  <wk@gnupg.org>
1728
1729         * apdu.c (apdu_send_le): Treat SW_EOF_REACHED as a warning.
1730
1731 2004-01-20  Werner Koch  <wk@gnupg.org>
1732
1733         * iso7816.c (iso7816_read_binary): New.
1734         (iso7816_select_file): New.
1735         (iso7816_list_directory): New.
1736
1737         * sc-investigate.c: Add option -i.
1738         (select_app, read_line, interactive_shell): New.
1739
1740 2004-01-16  Werner Koch  <wk@gnupg.org>
1741
1742         * apdu.h: Add SW_FILE_NOT_FOUND.
1743         * iso7816.c (map_sw): Map it to GPG_ERR_ENOENT.
1744         * iso7816.c (iso7816_select_file): New.
1745
1746         * app-dinsig.c: New file w/o any real code yet.
1747         * Makefile.am (scdaemon_SOURCES,sc_investigate_SOURCES): Add file.
1748
1749         * sc-investigate.c: Add option --disable-ccid.
1750
1751 2003-12-19  Werner Koch  <wk@gnupg.org>
1752
1753         * apdu.c (apdu_send_le): Send a get_response with the indicated
1754         length and not the 64 bytes we used for testing.
1755
1756         * app-openpgp.c (verify_chv2, verify_chv3, do_sign): Check the
1757         minimum length of the passphrase, so that we don't need to
1758         decrement the retry counter.
1759
1760 2003-12-17  Werner Koch  <wk@gnupg.org>
1761
1762         * card-p15.c (p15_enum_keypairs): Replaced KRC by RC.
1763         * card-dinsig.c (dinsig_enum_keypairs): Ditto.
1764
1765 2003-12-16  Werner Koch  <wk@gnupg.org>
1766
1767         * scdaemon.c (main): Set the prefixes for assuan logging.
1768
1769 2003-11-17  Werner Koch  <wk@gnupg.org>
1770
1771         * scdaemon.c, scdaemon.h: New options --allow-admin and --deny-admin.
1772         * app-openpgp.c (verify_chv3): Check it here.
1773
1774 2003-11-12  Werner Koch  <wk@gnupg.org>
1775
1776         Adjusted for API changes in Libksba.
1777
1778 2003-10-30  Werner Koch  <wk@gnupg.org>
1779
1780         * apdu.c (close_ct_reader, close_pcsc_reader): Implemented.
1781         (get_ccid_error_string): New.  Not very useful messages, though.
1782
1783 2003-10-25  Werner Koch  <wk@gnupg.org>
1784
1785         * ccid-driver.c (ccid_open_reader): Return an error if no USB
1786         devices are found.
1787
1788         * command.c (cmd_genkey, cmd_passwd): Fixed faulty use of
1789         !spacep().
1790
1791         * apdu.c (apdu_open_reader): Hacks for PC/SC under Windows.
1792
1793 2003-10-20  Werner Koch  <wk@gnupg.org>
1794
1795         * command.c (cmd_checkpin): New.
1796         (register_commands): Add command CHECKPIN.
1797         * app.c (app_check_pin): New.
1798         * app-openpgp.c (check_against_given_fingerprint): New. Factored
1799         out that code elsewhere.
1800         (do_check_pin): New.
1801
1802 2003-10-10  Werner Koch  <wk@gnupg.org>
1803
1804         * ccid-driver.c (ccid_close_reader): New.
1805
1806         * apdu.c (close_ccid_reader, close_ct_reader, close_csc_reader)
1807         (close_osc_reader, apdu_close_reader): New.  Not all are properly
1808         implemented yet.
1809
1810 2003-10-09  Werner Koch  <wk@gnupg.org>
1811
1812         * ccid-driver.c (ccid_transceive): Add T=1 chaining for sending.
1813
1814 2003-10-08  Werner Koch  <wk@gnupg.org>
1815
1816         * app-openpgp.c (do_getattr): Support SERIALNO and AID.
1817
1818 2003-10-01  Werner Koch  <wk@gnupg.org>
1819
1820         * ccid-driver.c: Detect GnuPG 1.3 and include appropriate files.
1821         * apdu.c: Ditto.
1822         * app-openpgp.c: Ditto.
1823         * iso7816.c: Ditto.
1824         (generate_keypair): Renamed to ..
1825         (do_generate_keypair): .. this.
1826         * app-common.h [GNUPG_MAJOR_VERSION]: New.
1827         * iso7816.h [GNUPG_MAJOR_VERSION]: Include cardglue.h
1828
1829 2003-09-30  Werner Koch  <wk@gnupg.org>
1830
1831         * command.c (cmd_getattr): New command GETATTR.
1832         * app.c (app_setattr): New.
1833         (do_getattr): New.
1834         (do_learn_status): Reimplemented in terms of do_getattr.
1835
1836         * app-openpgp.c (do_change_pin): Make sure CVH1 and CHV2 are
1837         always synced.
1838         (verify_chv2, verify_chv3): New. Factored out common code.
1839         (do_setattr, do_sign, do_auth, do_decipher): Change the names of
1840         the prompts to match that we have only 2 different PINs.
1841         (app_select_openpgp): Check whether the card enforced CHV1.
1842         (convert_sig_counter_value): New. Factor out code from
1843         get_sig_counter.
1844
1845 2003-09-28  Werner Koch  <wk@gnupg.org>
1846
1847         * app-openpgp.c (dump_all_do): Use gpg_err_code and not gpg_error.
1848
1849 2003-09-19  Werner Koch  <wk@gnupg.org>
1850
1851         * ccid-driver.c (parse_ccid_descriptor): New.
1852         (read_device_info): New.
1853         (ccid_open_reader): Check that the device has all required features.
1854
1855 2003-09-06  Werner Koch  <wk@gnupg.org>
1856
1857         * scdaemon.c (main): --pcsc-driver again defaults to pcsclite.
1858         David Corcoran was so kind to remove the GPL incompatible
1859         advertisng clause from pcsclite.
1860         * apdu.c (apdu_open_reader): Actually make pcsc-driver option work.
1861
1862 2003-09-05  Werner Koch  <wk@gnupg.org>
1863
1864         * ccid-driver.c: More work, data can now actually be retrieved.
1865         * ccid-driver.c, ccid-driver.h: Alternativley allow use under BSD
1866         conditions.
1867
1868 2003-09-02  Werner Koch  <wk@gnupg.org>
1869
1870         * scdaemon.c, scdaemon.h: New option --pcsc-ccid.
1871         * ccid-driver.c, ccid-driver.h: New but far from being useful.
1872         * Makefile.am: Add above.
1873         * apdu.c: Add support for that ccid driver.
1874         
1875 2003-08-26  Timo Schulz  <twoaday@freakmail.de>
1876
1877         * apdu.c (new_reader_slot): Only set 'is_osc' when OpenSC
1878         is used.
1879         
1880 2003-08-25  Werner Koch  <wk@gnupg.org>
1881
1882         * command.c (cmd_setattr): Use a copy of LINE.
1883         (cmd_genkey): Use a copy of KEYNO.
1884         (cmd_passwd): Use a copy of CHVNOSTR.
1885         (cmd_pksign, cmd_pkauth, cmd_pkdecrypt): s/strdup/xtrystrdup/.
1886
1887 2003-08-19  Werner Koch  <wk@gnupg.org>
1888
1889         * scdaemon.c, scdaemon.h: New option --pcsc-driver.
1890         * apdu.c (apdu_open_reader): Use that option here instead of a
1891         hardcoded one.
1892
1893 2003-08-18  Werner Koch  <wk@gnupg.org>
1894
1895         * Makefile.am: Add OPENSC_LIBS to all programs. 
1896
1897         * scdaemon.c, scdaemon.h: New option --disable-opensc.
1898         * card.c (card_open): Implement it.
1899         * apdu.c (open_osc_reader, osc_send_apdu): New.
1900         (apdu_open_reader) [HAVE_OPENSC]: Use the opensc driver if not
1901         disabled.
1902         (error_string) [HAVE_OPENSC]: Use sc_strerror.
1903         (send_apdu) [HAVE_OPENSC]: Call osc_apdu_send.
1904
1905         * card-p15.c (p15_enum_keypairs, p15_prepare_key): Adjusted for
1906         libgpg-error.
1907
1908 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
1909
1910         * apdu.c (ct_activate_card): Change the code a little to avoid
1911         problems with other readers.
1912         * Always use 'dynload.h' instead of 'dlfcn.h'.
1913
1914 2003-08-05  Werner Koch  <wk@gnupg.org>
1915
1916         * app-openpgp.c (dump_all_do): Don't analyze constructed DOs after
1917         an error.
1918
1919 2003-08-04  Werner Koch  <wk@gnupg.org>
1920
1921         * app.c (app_set_default_reader_port): New.
1922         (select_application): Use it here.
1923         * scdaemon.c (main): and here.
1924         * sc-copykeys.c: --reader-port does now take a string.
1925         * sc-investigate.c, scdaemon.c: Ditto.
1926         * apdu.c (apdu_open_reader): Ditto.  Load pcsclite if no ctapi
1927         driver is configured.  Always include code for ctapi.
1928         (new_reader_slot): Don't test for already used ports and remove
1929         port arg.
1930         (open_pcsc_reader, pcsc_send_apdu, pcsc_error_string): New.
1931         (apdu_send_le): Changed RC to long to cope with PC/SC.
1932
1933         * scdaemon.c, scdaemon.h: New option --ctapi-driver.
1934         * sc-investigate.c, sc-copykeys.c: Ditto.
1935         
1936 2003-07-31  Werner Koch  <wk@gnupg.org>
1937
1938         * Makefile.am (scdaemon_LDADD): Added INTLLIBS.
1939
1940 2003-07-28  Werner Koch  <wk@gnupg.org>
1941
1942         * app-openpgp.c (do_setattr): Change implementation.  Allow all
1943         useful DOs.
1944
1945 2003-07-27  Werner Koch  <wk@gnupg.org>
1946
1947         Adjusted for gcry_mpi_print and gcry_mpi_scan API change.
1948
1949 2003-07-24  Werner Koch  <wk@gnupg.org>
1950
1951         * app-openpgp.c (do_learn_status): Print more status information.
1952         (app_select_openpgp): Store the card version.
1953         (store_fpr): Add argument card_version and fix DOs for old cards.
1954         (app_openpgp_storekey): Likewise.
1955
1956 2003-07-23  Werner Koch  <wk@gnupg.org>
1957
1958         * command.c (cmd_pkauth): New.
1959         (cmd_setdata): Check whether data was given at all to avoid
1960         passing 0 to malloc.
1961
1962         * app.c (app_auth): New.
1963         * app-openpgp.c (do_auth): New.
1964
1965 2003-07-22  Werner Koch  <wk@gnupg.org>
1966
1967         * command.c (cmd_passwd): New.
1968         * app.c (app_change_pin): New.
1969         * app-openpgp.c (do_change_pin): New.
1970         * iso7816.c (iso7816_reset_retry_counter): Implemented.
1971
1972         * sc-investigate.c (main): New option --gen-random.
1973         * iso7816.c (iso7816_get_challenge): Don't create APDUs with a
1974         length larger than 255.
1975
1976 2003-07-17  Werner Koch  <wk@gnupg.org>
1977
1978         * command.c (cmd_random): New command RANDOM.
1979
1980         * iso7816.c (map_sw): New. Use it in this file to return
1981         meaningful error messages.  Changed all public fucntions to return
1982         a gpg_error_t.
1983         (iso7816_change_reference_data): New.
1984         * apdu.c (apdu_open_reader): Use faked status words for soem
1985         system errors.
1986
1987 2003-07-16  Werner Koch  <wk@gnupg.org>
1988
1989         * apdu.c (apdu_send_simple): Use apdu_send_le so that we can
1990         specify not to send Le as it should be.
1991
1992 2003-07-15  Werner Koch  <wk@gnupg.org>
1993
1994         * Makefile.am: Add sc-copykeys program.
1995         * sc-copykeys.c: New.
1996         * app-openpgp.c (app_openpgp_storekey): New.
1997         (app_openpgp_cardinfo): New.
1998         (count_bits): New.
1999         (store_fpr): And use it here to get the actual length in bit.
2000
2001 2003-07-03  Werner Koch  <wk@gnupg.org>
2002
2003         * app-openpgp.c (do_setattr): Add setting of the URL.
2004         (app_select_openpgp): Dump card data only in very verbose mode.
2005         (do_decipher): New.
2006
2007 2003-07-02  Werner Koch  <wk@gnupg.org>
2008
2009         * app-openpgp.c (get_sig_counter): New.
2010         (do_sign): Print the signature counter and enable the PIN callback.
2011         (do_genkey): Implement the PIN callback. 
2012
2013 2003-07-01  Werner Koch  <wk@gnupg.org>
2014
2015         * app-openpgp.c (store_fpr): Fixed fingerprint calculation.
2016
2017 2003-06-26  Werner Koch  <wk@gnupg.org>
2018
2019         * app-openpgp.c (find_tlv): Fixed length header parsing.
2020
2021         * app.c (app_genkey): New.
2022         * command.c (cmd_genkey): New.
2023
2024 2003-06-25  Werner Koch  <wk@gnupg.org>
2025
2026         * command.c (percent_plus_unescape): New.
2027         (cmd_setattr): New.
2028
2029 2003-06-24  Werner Koch  <wk@gnupg.org>
2030
2031         * command.c (send_status_info): New.
2032
2033         * app-openpgp.c (app_select_openpgp): Replace SLOT arg by APP arg
2034         and setup the function pointers in APP on success. Changed callers.
2035         * app.c: New.
2036         * app-common.h: New.
2037         * scdaemon.h (APP): New type to handle applications.
2038         (server_control_s): Add an APP context field.
2039
2040         * command.c (cmd_serialno): Handle applications.
2041         (cmd_pksign): Ditto.
2042         (cmd_pkdecrypt): Ditto.
2043         (reset_notify): Ditto.
2044         (cmd_learn): For now return error for application contexts.
2045         (cmd_readcert): Ditto.
2046         (cmd_readkey): Ditto.
2047
2048 2003-06-04  Werner Koch  <wk@gnupg.org>
2049
2050         * card.c (map_sc_err): Renamed gpg_make_err to gpg_err_make.
2051
2052         Renamed error codes from INVALID to INV and removed _ERROR suffixes.
2053
2054 2003-06-03  Werner Koch  <wk@gnupg.org>
2055
2056         Changed all error codes in all files to the new libgpg-error scheme.
2057
2058         * scdaemon.h: Include gpg-error.h and errno.h
2059         * card.c (map_sc_err): Use unknown for the error source.
2060         * Makefile.am: Link with libgpg-error
2061
2062 2003-05-14  Werner Koch  <wk@gnupg.org>
2063
2064         * atr.c, atr.h: New.
2065         * sc-investigate.c: Dump the ATR in a human readable format.
2066
2067 2003-05-08  Werner Koch  <wk@gnupg.org>
2068
2069         * scdaemon.h (DBG_CARD_IO_VALUE): New.
2070
2071         * sc-investigate.c: New.
2072         * scdaemon.c (main): Removed --print-atr option.
2073
2074         * iso7816.c, iso7816.h, app-openpgp.c: New.
2075
2076 2003-04-29  Werner Koch  <wk@gnupg.org>
2077
2078         * scdaemon.c: New options --print-atr and --reader-port
2079         * apdu.c, apdu.h: New
2080
2081         * card.c, card-p15.c, card-dinsig.c: Allow build without OpenSC.
2082         
2083         * Makefile.am (LDFLAGS): Removed.
2084
2085         * command.c (register_commands): Adjusted for new Assuan semantics.
2086
2087 2002-08-21  Werner Koch  <wk@gnupg.org>
2088
2089         * scdaemon.c (main): New option --daemon so that the program is
2090         not accidently started in the background.
2091
2092 2002-08-16  Werner Koch  <wk@gnupg.org>
2093
2094         * scdaemon.c: Include i18n.h.
2095
2096         * card-common.h (struct p15_private_s): Forward declaration.  Add
2097         it to card_ctx_s.
2098         * card.c (card_close): Make sure private data is released.
2099         (card_enum_certs): New.
2100         * card-p15.c (p15_release_private_data): New.
2101         (init_private_data): New to work around an OpenSC weirdness.
2102         (p15_enum_keypairs): Do an OpenSC get_objects only once.
2103         (p15_enum_certs): New.
2104         (card_p15_bind): Bind new function.
2105         * command.c (cmd_learn): Return information about the certificates.
2106
2107 2002-08-09  Werner Koch  <wk@gnupg.org>
2108
2109         * card.c (card_get_serial_and_stamp): Use the tokeinfo serial
2110         number as a fallback. Add a special prefix for serial numbers.
2111
2112 2002-07-30  Werner Koch  <wk@gnupg.org>
2113
2114         Changes to cope with OpenSC 0.7.0:
2115         
2116         * card.c: Removed the check for the packed opensc version.
2117         Changed include file names of opensc.
2118         (map_sc_err): Adjusted error codes for new opensc version.
2119         * card-p15.c: Changed include filename of opensc.
2120         * card-dinsig.c: Ditto.
2121
2122         * card-p15.c (p15_decipher): Add flags argument to OpenSC call.
2123         
2124 2002-07-24  Werner Koch  <wk@gnupg.org>
2125
2126         * card.c (find_simple_tlv, find_iccsn): New.
2127         (card_get_serial_and_stamp): Improved serial number parser.
2128
2129 2002-06-27  Werner Koch  <wk@gnupg.org>
2130
2131         * scdaemon.c (main): Use GNUPG_DEFAULT_HOMEDIR constant.
2132
2133 2002-06-15  Werner Koch  <wk@gnupg.org>
2134
2135         * card-dinsig.c: Documented some stuff from the DIN norm.
2136
2137 2002-04-15  Werner Koch  <wk@gnupg.org>
2138
2139         * command.c (cmd_pksign, cmd_pkdecrypt): Use a copy of the key ID.
2140
2141 2002-04-12  Werner Koch  <wk@gnupg.org>
2142
2143         * scdaemon.c: New option --debug-sc N.
2144         * card.c (card_open): set it here.
2145
2146         * card-p15.c (p15_prepare_key): Factored out common code from ...
2147         (p15_sign, p15_decipher): here and made the decryption work the
2148         regular way.
2149
2150 2002-04-10  Werner Koch  <wk@gnupg.org>
2151
2152         * card.c (card_open): Return immediately when no reader is available.
2153
2154 2002-03-27  Werner Koch  <wk@gnupg.org>
2155
2156         * card.c (card_open, card_close): Adjusted for changes in OpenSC.
2157
2158 2002-03-10  Werner Koch  <wk@gnupg.org>
2159
2160         * card-p15.c, card-dinsig.c, card-common.h: New.
2161         * card.c: Factored most code out to the new modules, so that we
2162         can better support different types of card applications.
2163
2164 2002-01-26  Werner Koch  <wk@gnupg.org>
2165
2166         * scdaemon.c scdaemon.h, command.c: New. Based on the code from
2167         the gpg-agent.
2168
2169         
2170  Copyright 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
2171
2172  This file is free software; as a special exception the author gives
2173  unlimited permission to copy and/or distribute it, with or without
2174  modifications, as long as this notice is preserved.
2175
2176  This file is distributed in the hope that it will be useful, but
2177  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2178  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.