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