/[pcsclite]/trunk/Drivers/ccid/README
ViewVC logotype

Contents of /trunk/Drivers/ccid/README

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1730 - (hide annotations) (download)
Tue Nov 22 09:38:29 2005 UTC (7 years, 5 months ago) by rousseau
File size: 15656 byte(s)
add the "SCM Micro SCR 3310-NTTCOM" in the "Should work but untested by
me" list.
See http://archives.neohapsis.com/archives/dev/muscle/2005-q4/0217.html
1 rousseau 269 USB CCID IFD Handler
2     ====================
3    
4     This package provides the source code for a generic USB CCID
5     (Chip/Smart Card Interface Devices) driver. See [1] for the USB CCID
6 rousseau 273 specifications from the USB working group.
7 rousseau 269
8    
9 rousseau 697 Authors:
10     ========
11 rousseau 269
12     - Ludovic Rousseau <ludovic.rousseau@free.fr>
13 rousseau 1015 - Carlos Prados for the PPS and ATR parsing code (taken from his
14     towitoto driver) in towitoko/ directory.
15     - Olaf Kirch for the T=1 TPDU code (from the OpenCT package) in openct/
16     directory. I (Ludovic Rousseau) greatly improved this code.
17 rousseau 269
18    
19     Supported CCID readers:
20     =======================
21    
22 rousseau 273 (in alphabetical order)
23 rousseau 1321 - Advanced Card Systems ACR 38 [16]
24     old versions of this reader have a bug: the reader do timeout when a
25     special USB frame is sent from the reader. If the frame size if a
26     multiple of wMaxPacketSize the communication is stopped.
27 rousseau 969 - Cherry XX33 keyboard [?]
28 rousseau 1622 - Cherry XX44 keyboard (SmartBoard G83-6744) [18]
29 rousseau 1626 - Cherry ST-1044U [27]
30 rousseau 969 - Dell keyboard SK-3106 [?]
31     - Dell smart card reader keyboard [?]
32 rousseau 1546 - Eutron SIM Pocket Combo [25]
33     - Eutron CryptoIdentity [26]
34 rousseau 273 - Gemplus GemPC 433 SL [2]
35     - Gemplus GemPC Key [3]
36     - Gemplus GemPC Twin [4]
37 rousseau 1326 - Kobil KAAN Base [19]
38     - Kobil KAAN Advanced [20]
39 rousseau 1393 - Kobil KAAN SIM III [21]
40 rousseau 1506 - Kobil mIDentity [22]
41 rousseau 273 - OmniKey CardMan 3121 [5]
42 rousseau 1314 - SCM Micro SCR 331 [6]
43     You shall upgrade the firmware [17] using version 5.18 or later.
44     - SCM Micro SCR 331-DI [11]
45     You shall upgrade the firmware [17] using version 6.22 or later.
46     - SCM Micro SCR 335 [7]
47     The firmware of this reader can't be upgraded so be sure to buy a
48     recent model with firmware 5.14 or later
49 rousseau 1392 - SCM Micro SCR 3310
50 rousseau 1314 - SCM Micro SPR 532 [9]
51     You shall contact Torsten Maykranz <tmaykranz@scmmicro.de> to get a
52     firmware upgrade.
53 rousseau 1521 - Verisign Secure Storage Token [24]
54 rousseau 1523 - Verisign Secure Token [?]
55 rousseau 606
56    
57     Should work but untested by me:
58     ===============================
59    
60     I would like to get these readers to perform test and validation and
61     move them in the supported list above. If you are one of the
62     manufacturers, please, contact me.
63    
64 rousseau 708 - ActivCard USB reader 2.0 [10]
65 rousseau 709 - C3PO LTC32 [13]
66 rousseau 1508 - SCM Micro SCR 331-DI NTTCom [23]
67 rousseau 1730 - SCM Micro SCR 3310-NTTCOM [28]
68 rousseau 709 - SCM Micro SCR 333 [15]
69     - Silitek SK-3105 keyboard [12] or C3PO TLTC2USB [14]
70 rousseau 269
71    
72 rousseau 969 Unsupported or partly supported CCID readers:
73     =============================================
74 rousseau 269
75 rousseau 1165 - C3PO LTC31 [8]
76     The reader works fine with Linux kernel 2.4 but does not with Linux
77     kernel 2.6. The ioctl() syscall returns EINVAL (Invalid argument)
78 rousseau 1522 - RSA SecureID SID800 [24]
79     The USB layer is completely broken. The reader is sometimes not even
80     seen on the USB bus (same problem under Windows). Maybe newer
81     devices will work?
82 rousseau 269
83 rousseau 1165
84 rousseau 321 Supported operating systems:
85     ============================
86    
87     - GNU/Linux (libusb 0.1.7)
88     - MacOS X/Darwin (libusb 0.1.8beta, CVS snapshot. See "Known problems")
89     to libusb)
90    
91    
92 rousseau 862 Debug informations:
93     ===================
94    
95     The driver uses the debug function provided by pcscd. So if pcscd sends
96     its debug to stdout (pcscd --foreground) then the CCID will also send
97     its debug to stdout. If pcscd sends its debug to syslog (by default)
98     then the CCID will also send its debug to syslog.
99    
100     You can change the debug level using the Info.plist configuraion file.
101     The Info.plist is installed, by default, in
102     /usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
103    
104     The debug level is set in the ifdLogLevel field. It is a binary OR
105     combinaison of 4 different levels.
106     - 1: critical: important error messages
107     - 2: info: informative messages like what reader was detected
108     - 4: periodic: periodic info when pcscd test if a card is present (every
109     1/10 of a second)
110     - 8: comm: a dump of all the bytes exchanged between the host and the
111     reader
112    
113     By default the debug level is set to 3 (1 + 2) and correspond to the
114     critical and info levels.
115    
116     You have to restart the driver so it read the configuration file again
117     and use the new debug level value. To restart the driver you just need
118     to unplug all your CCID readers so the the driver is unloaded and then
119     replug your readers. You can also restart pcscd.
120    
121    
122 rousseau 321 Known problems:
123     ===============
124    
125 rousseau 1165 MacOSX libusb
126 rousseau 969 """""""""""""
127     There is a bug in libusb that crash the libusb library when you
128     unplug a reader and replug it in another USB socket. So if you
129     unplug a reader replug it in the same USB socket.
130    
131     see http://sourceforge.net/tracker/index.php?func=detail&aid=886778&group_id=1674&atid=101674
132    
133    
134 rousseau 273 Licence:
135     ========
136    
137 rousseau 1399 This library is free software; you can redistribute it and/or modify it
138     under the terms of the GNU Lesser General Public License as published by
139     the Free Software Foundation; either version 2.1 of the License, or (at
140     your option) any later version.
141 rousseau 269
142 rousseau 1399 This library is distributed in the hope that it will be useful, but
143 rousseau 269 WITHOUT ANY WARRANTY; without even the implied warranty of
144 rousseau 1399 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
145 rousseau 269 General Public License for more details.
146    
147 rousseau 1399 You should have received a copy of the GNU Lesser General Public License
148     along with this library; if not, write to the Free Software Foundation,
149     Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
150 rousseau 269
151    
152     History:
153     ========
154    
155 rousseau 1400 0.9.3 - 14 March 2005, Ludovic Rousseau
156     - change the licence from GNU GPL to GNU Lesser GPL (LGPL)
157     - add support for ACS ACR 38, Kobil KAAN Base, Kobil KAAN Advanced,
158     Kobil KAAN SIM III, Kobil KAAN mIDentity, SCM Micro SCR 331,
159     SCM Micro SCR 331-DI, SCM Micro SCR 335, SCM Micro SCR 3310,
160     SCM Micro SCR 532, Cherry XX44 readers
161     - improve communication speed with readers featuring "Automatic PPS
162     made by the CCID"
163     - switch the Cherry xx33 reader in ISO mode if power up in EMV mode
164     fails.
165     - add support of character level readers. Thanks to O2Micro for the
166     patch
167     - add support for the O2Micro OZ776S reader but the reader firmware
168     is still bogus
169     - check firmware version to avoid firmwares with bugs. You can still
170     use a bogus firmware by setting DRIVER_OPTION_USE_BOGUS_FIRMWARE
171     in Info.plist
172     - some minor bugs removed
173    
174 rousseau 1186 0.9.2 - 15 August 2004, Ludovic Rousseau
175     - T=1 TPDU code:
176     . the work on T=1 TPDU code was possible thanks to Gemplus
177     validation team who helped me test, debug and bring the code to
178     an EMV validation level. Thanks to Jérôme, Jean-Yves, Xavier and
179     the Gemplus readers department
180     . error code was not checked correctly
181     . avoid a (nearly) infinite loop when resynch are needed.
182     . correctly initialise an internal value to allow more than one
183     reader to work
184     - multi-slots readers
185     . add support for multi-slots readers. The only one I have is a
186     SCM Micro SCR 331-DI with a contact and a contactless interface.
187     The contactless interface may or may not work for you since the
188     reader uses proprietary (undocumented) commands.
189     - GemPC Twin serial reader
190     . perform a command (get the reader firmware) to be sure a GemPC
191     Twin (serial or pcmcia) reader is connected
192     . use a dynamic timeout when reading the serial port.
193     The first timeout used when detecting the reader is 2 seconds to
194     not wait too long if no reader is connected. Later timeouts are
195     set to 1 minute to allow long time APDU.
196     - use `pkg-config libpcsclite --cflags` to locate the pcsc-lite
197     header files
198     - use `pkg-config --print-errors --atleast-version=1.2.9-beta5 libpcsclite`
199     to test the pcsc-lite version
200     - code improvements thanks to the splint tool (http://www.splint.org/)
201    
202 rousseau 1018 0.9.1 - 1 July 2004, Ludovic Rousseau
203     - I forgot to define IFD_PARITY_ERROR in a .h file
204    
205 rousseau 1015 0.9.0 - 1 July 2004, Ludovic Rousseau
206     - The T=1 TPDU automata from Carlos Prados' Towitoko driver is very
207     limited and do not support error management mechanisms.
208     I then used the T=1 TPDU automata from OpenCT (OpenSC project).
209     This automata is much more powerful but still lacks a lot of error
210     management code.
211     I then added all the needed code to reach the quality level
212     requested by the EMV standard.
213     - add support for new readers:
214     . Advanced Card Systems ACR 38
215     . Cherry XX33
216     . Dell keyboard SK-3106
217     . Dell smart card reader keyboard
218     . SCR 333
219     - add support of multi procotol cards (T=0 and T=1)
220     - the debug level is now dynamic and set in the Info.plist file (no
221     need to recompile the driver any more)
222     - add support for the libusb naming scheme: usb:%04x/%04x:libusb:%s
223     - INSTALL: add a "configuring the driver for the serial reader
224     (GemPC Twin)" part
225     - use `pkg-config libpcsclite --variable=usbdropdir` so you do not
226     have to use --enable-usbdropdir=DIR or --enable-ccidtwindir=DIR
227     even if pcscd does not use the default /usr/local/pcsc/drivers
228     - add support of IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and
229     IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in IFDHControl()
230     - read ifdDriverOptions from Info.plist to limit the use of
231     IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE (idea from Peter Williams)
232     - provide an example of use of SCardControl()
233     IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and
234     IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in example/
235     - add a --enable-pcsclite option (default to yes) so that the driver
236     can be compiled for a different framework (one needing
237     tokenparser.l like Solaris)
238     - Reset action is power off and power on, not just power on
239     - use the include files from pcsc-lite
240     - add a mechanism to allow power on at 1.8V, 3V and then 5V as
241     specified by ISO 7816. We still use 5V for now to avoid problems
242     with non ISO compliant cards
243    
244 rousseau 703 0.4.1 - 14 February 2004, Ludovic Rousseau
245     - distribute missing files readers/supported_readers.txt and
246     src/create_Info_plist.pl
247     'make install' failed because of this.
248    
249 rousseau 697 0.4.0 - 13 February 2004, Ludovic Rousseau
250     - support of T=1 with TPDU readers. A lot of the T=1 code comes from
251     Carlos Prados towitoko driver.
252     My code is GNU GPL, his code is GNU LGPL so the global driver is
253     GNU GPL
254     - PPS negotiation if the reader does not do it automatically
255     - add support for the Silitek SK-3105 keyboard. It's a USB device
256     with multiple interfaces
257     - use the create_Info_plist.pl script to generate the installed
258     Info.plist from an Info.plist template and a list of supported
259     readers. The Info.plist was too "complex" to maintain by hand
260     since it now contains 11 entries
261     - add support of IFDHCreateChannelByName to avoid wrong reader
262     enumeration. This is not complete if you have multiple _identical_
263     readers. You need to use a > 1.2.0 pcsc-lite version (not yet
264     released at that time)
265     - build but do not install the serial ccidtwin driver by default
266     since it is useless on computers without a serial port or without
267     this reader for example.
268     - read and write timeouts are not symmetric. write timout can be
269     shorter since the reader and card is not supposed to do anything
270     before receiving (write) a command
271     - do not try to find usb.h and other libusb files if
272     --disable-libusb is used. Needed if you only want to build the
273     serial driver. Thanks to Niki Waibel for the patch
274     - add a --enable-ccidtwindir argument to ./configure to specify the
275     serial GemPC Twin installation directory
276     - debug and code improvements and simplifications
277    
278 rousseau 552 0.3.2 - 4 November 2003, Ludovic Rousseau
279     - src/commands.c: correct a stupid bug that occurs with an APDU with
280     2 bytes response.
281     - Info.plist: add SPR 532 in list of supported readers
282     - parse.c: do not exit if the InterfaceClass is 0xFF (proprietary).
283     It is the case with old readers manufactured before the final
284     release of the CCID specs.
285     - move LTC31 reader from unsupported to supported reader list. It
286     was my f ault since in used odd INS byte in my test applet and odd
287     INS bytes are forbidden by ISO 7816-4 ch. 5.4.2 Instruction byte.
288     Thanks to Josep Moné s Teixidor for pointing the problem.
289     - src/commands.c: comment out the automatic GET RESPONSE part. I
290     don't think it should be in the driver. Maybe in pcscd instead?
291    
292 rousseau 467 0.3.1 - 23 September 2003, Ludovic Rouseau
293     - add --enable-multi-thread (enabled by default) for thread safe
294     support an APDU multiplexing. You will need pcsc-lite-1.2.0-rc3 or
295     above to use this feature.
296     - add --enable-libusb=PATH option is your libusb is not installed in
297     /usr or /usr/local
298     - honor DESTDIR in install rules (closes [ #300110 ]). Thanks to
299     Ville Skyttä for the patch.
300     - src/ccid.c: do not switch the GemPC Key and GemPC Twin in APDU
301     mode since it also swicth in EMV mode and may not work with non
302     EMV cards
303     - src/ccid_serial.c: complete reimplementation of the Twin serial
304     protocol using a finite state automata (code much simpler)
305    
306 rousseau 423 0.3.0 - 10 September 2003, Ludovic Rousseau
307     - support of GemPC Twin connected to a serial port. Thanks to Niki
308     W. Waibel for a working prototype.
309     - support of auto voltage at power up if the reader support it
310     instead of forcing a 5V in all cases.
311     - support of APDU mode instead of just TPDU if the reader support
312     it. Thanks to Jean-Luc Giraud for the idea and inspiration I got
313     from his "concurrent" driver.
314 rousseau 425 - support of "time request" from the card.
315 rousseau 423 - parse: new indentation for more readability of supported features.
316     - switch the GemPC Key and GemPC Twin in APDU mode since they
317     support it but do not announce it in the dwFeatures.
318     - new build process using autoconf/automake.
319    
320 rousseau 342 0.2.0 - 26 August 2003, Ludovic Rousseau
321     - Works under MacOS X
322     - Info.plist: use an <array></array> for the alias enumeration
323     - Makefile rework for *BSD and MacOS X
324    
325 rousseau 273 0.1.0 - 13 August 2003, Ludovic Rousseau
326     - First public release
327 rousseau 269
328    
329 rousseau 425 Bibliography:
330     =============
331 rousseau 269
332     [1] http://www.usb.org/developers/devclass_docs/ccid_classspec_1_00a.pdf
333 rousseau 273 [2] http://www.gemplus.com/products/gempc433/
334     [3] http://www.gemplus.com/products/gempckey/
335 rousseau 269 [4] http://www.gemplus.com/products/gempctwin/
336 rousseau 273 [5] http://www.omnikey.com/en/produkt_details.php3?produkt=1&variante=47
337     [6] http://www.scmmicro.com/security/SCR331.html
338     [7] http://www.scmmicro.com/security/SCR335.html
339 rousseau 709 [8] http://www.c3po.es/ltc31.html
340 rousseau 553 [9] http://www.scmmicro.com/security/SPR532.html
341 rousseau 606 [10] http://www.activcard.com/products/usb_reader.html
342 rousseau 666 [11] http://www.scmmicro.com/security/SCR331-DI.html
343 rousseau 677 [12] http://www.silitek.com/prod/getProduct.do?xml_id=4_2&menu_id=4_2_8&cid=1_8_5
344 rousseau 709 [13] http://www.c3po.es/ltc32.html
345     [14] http://www.c3po.es/tltc2usb.html
346     [15] http://www.scmmicro.com/security/SCR333.html
347 rousseau 1321 [16] http://www.acs.com.hk/Product_Readers.asp?productID=59&PCate=Products_PC_Linked_SmartCard_Readers
348 rousseau 1314 [17] http://www.scmmicro.com/support/pcs_product_drivers.html
349 rousseau 1317 [18] http://www.cherrycorp.com/english/advanced-line/advanced-line_smartboard_g83-6744.htm
350 rousseau 1326 [19] http://www.kobil.com/e/products/smartcard/kaan-base.php
351     [20] http://www.kobil.com/e/products/smartcard/kaan-advanced.php
352 rousseau 1394 [21] http://www.kobil.com/d/products/smartcard/kaansim3.php
353     [22] http://www.kobil.com/e/products/index.php?s=midentity
354 rousseau 1508 [23] http://www.ntt.com/jpki/SCR331DI.html
355 rousseau 1521 [24] http://www.verisign.co.uk/products-services/security-services/unified-authentication/usb-tokens/
356 rousseau 1546 [25] http://www.eutron.com/simpocket.asp
357     [26] http://www.cryptoidentity.eutron.com/eng/home.asp
358 rousseau 1626 [27] http://www.cherry.de/english/advanced-line/advanced_smartterminal_st-1044u.htm
359 rousseau 1730 [28] http://www.ntt.com/jpki/scr3310.html
360 rousseau 269
361     $Id$
362    
363     vim:ts=20

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.5