USB CCID IFD Handler ==================== This package provides the source code for a generic USB CCID (Chip/Smart Card Interface Devices) driver. See [1] for the USB CCID specifications from the USB working group. Authors: ======== - Ludovic Rousseau - Carlos Prados for the TPDU T=1 code (taken from his towitoto driver) Supported CCID readers: ======================= (in alphabetical order) - C3PO LTC31 [8] - Gemplus GemPC 433 SL [2] - Gemplus GemPC Key [3] - Gemplus GemPC Twin [4] - OmniKey CardMan 3121 [5] - SCM Micro SCR 331 [6] - SCM Micro SCR 335 [7] Should work but untested by me: =============================== I would like to get these readers to perform test and validation and move them in the supported list above. If you are one of the manufacturers, please, contact me. - ActivCard USB reader 2.0 [10] - C3PO LTC32 [13] - SCM Micro SCR 331-DI [11] - SCM Micro SCR 333 [15] - SCM Micro SPR 532 [9] - Silitek SK-3105 keyboard [12] or C3PO TLTC2USB [14] Unsupported CCID readers: ========================= None known. Supported operating systems: ============================ - GNU/Linux (libusb 0.1.7) - MacOS X/Darwin (libusb 0.1.8beta, CVS snapshot. See "Known problems") to libusb) Known problems: =============== *BSD libusb """""" The libusb does not yet support USB interrupt endpoints. You will notice that the driver will stop working as soon as you insert a card in the reader. A new version of libusb should fix this bug. Licence: ======== This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA History: ======== 0.4.1 - 14 February 2004, Ludovic Rousseau - distribute missing files readers/supported_readers.txt and src/create_Info_plist.pl 'make install' failed because of this. 0.4.0 - 13 February 2004, Ludovic Rousseau - support of T=1 with TPDU readers. A lot of the T=1 code comes from Carlos Prados towitoko driver. My code is GNU GPL, his code is GNU LGPL so the global driver is GNU GPL - PPS negotiation if the reader does not do it automatically - add support for the Silitek SK-3105 keyboard. It's a USB device with multiple interfaces - use the create_Info_plist.pl script to generate the installed Info.plist from an Info.plist template and a list of supported readers. The Info.plist was too "complex" to maintain by hand since it now contains 11 entries - add support of IFDHCreateChannelByName to avoid wrong reader enumeration. This is not complete if you have multiple _identical_ readers. You need to use a > 1.2.0 pcsc-lite version (not yet released at that time) - build but do not install the serial ccidtwin driver by default since it is useless on computers without a serial port or without this reader for example. - read and write timeouts are not symmetric. write timout can be shorter since the reader and card is not supposed to do anything before receiving (write) a command - do not try to find usb.h and other libusb files if --disable-libusb is used. Needed if you only want to build the serial driver. Thanks to Niki Waibel for the patch - add a --enable-ccidtwindir argument to ./configure to specify the serial GemPC Twin installation directory - debug and code improvements and simplifications 0.3.2 - 4 November 2003, Ludovic Rousseau - src/commands.c: correct a stupid bug that occurs with an APDU with 2 bytes response. - Info.plist: add SPR 532 in list of supported readers - parse.c: do not exit if the InterfaceClass is 0xFF (proprietary). It is the case with old readers manufactured before the final release of the CCID specs. - move LTC31 reader from unsupported to supported reader list. It was my f ault since in used odd INS byte in my test applet and odd INS bytes are forbidden by ISO 7816-4 ch. 5.4.2 Instruction byte. Thanks to Josep Moné s Teixidor for pointing the problem. - src/commands.c: comment out the automatic GET RESPONSE part. I don't think it should be in the driver. Maybe in pcscd instead? 0.3.1 - 23 September 2003, Ludovic Rouseau - add --enable-multi-thread (enabled by default) for thread safe support an APDU multiplexing. You will need pcsc-lite-1.2.0-rc3 or above to use this feature. - add --enable-libusb=PATH option is your libusb is not installed in /usr or /usr/local - honor DESTDIR in install rules (closes [ #300110 ]). Thanks to Ville Skyttä for the patch. - src/ccid.c: do not switch the GemPC Key and GemPC Twin in APDU mode since it also swicth in EMV mode and may not work with non EMV cards - src/ccid_serial.c: complete reimplementation of the Twin serial protocol using a finite state automata (code much simpler) 0.3.0 - 10 September 2003, Ludovic Rousseau - support of GemPC Twin connected to a serial port. Thanks to Niki W. Waibel for a working prototype. - support of auto voltage at power up if the reader support it instead of forcing a 5V in all cases. - support of APDU mode instead of just TPDU if the reader support it. Thanks to Jean-Luc Giraud for the idea and inspiration I got from his "concurrent" driver. - support of "time request" from the card. - parse: new indentation for more readability of supported features. - switch the GemPC Key and GemPC Twin in APDU mode since they support it but do not announce it in the dwFeatures. - new build process using autoconf/automake. 0.2.0 - 26 August 2003, Ludovic Rousseau - Works under MacOS X - Info.plist: use an for the alias enumeration - Makefile rework for *BSD and MacOS X 0.1.0 - 13 August 2003, Ludovic Rousseau - First public release Bibliography: ============= [1] http://www.usb.org/developers/devclass_docs/ccid_classspec_1_00a.pdf [2] http://www.gemplus.com/products/gempc433/ [3] http://www.gemplus.com/products/gempckey/ [4] http://www.gemplus.com/products/gempctwin/ [5] http://www.omnikey.com/en/produkt_details.php3?produkt=1&variante=47 [6] http://www.scmmicro.com/security/SCR331.html [7] http://www.scmmicro.com/security/SCR335.html [8] http://www.c3po.es/ltc31.html [9] http://www.scmmicro.com/security/SPR532.html [10] http://www.activcard.com/products/usb_reader.html [11] http://www.scmmicro.com/security/SCR331-DI.html [12] http://www.silitek.com/prod/getProduct.do?xml_id=4_2&menu_id=4_2_8&cid=1_8_5 [13] http://www.c3po.es/ltc32.html [14] http://www.c3po.es/tltc2usb.html [15] http://www.scmmicro.com/security/SCR333.html $Id$ vim:ts=20