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

Diff of /trunk/Drivers/ccid/README

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 708 by rousseau, Fri Feb 27 17:46:41 2004 UTC revision 1730 by rousseau, Tue Nov 22 09:38:29 2005 UTC
# Line 10  Authors: Line 10  Authors:
10  ========  ========
11    
12  - Ludovic Rousseau <ludovic.rousseau@free.fr>  - Ludovic Rousseau <ludovic.rousseau@free.fr>
13  - Carlos Prados for the TPDU T=1 code (taken from his towitoto driver)  - 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    
18    
19  Supported CCID readers:  Supported CCID readers:
20  =======================  =======================
21    
22  (in alphabetical order)  (in alphabetical order)
23  - C3PO LTC31 [8]  - 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    - Cherry XX33 keyboard [?]
28    - Cherry XX44 keyboard (SmartBoard G83-6744) [18]
29    - Cherry ST-1044U [27]
30    - Dell keyboard SK-3106 [?]
31    - Dell smart card reader keyboard [?]
32    - Eutron SIM Pocket Combo [25]
33    - Eutron CryptoIdentity [26]
34  - Gemplus GemPC 433 SL [2]  - Gemplus GemPC 433 SL [2]
35  - Gemplus GemPC Key [3]  - Gemplus GemPC Key [3]
36  - Gemplus GemPC Twin [4]  - Gemplus GemPC Twin [4]
37    - Kobil KAAN Base [19]
38    - Kobil KAAN Advanced [20]
39    - Kobil KAAN SIM III [21]
40    - Kobil mIDentity [22]
41  - OmniKey CardMan 3121 [5]  - OmniKey CardMan 3121 [5]
42  - SCM Micro SCR 331 [6]  - 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]  - 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    - SCM Micro SCR 3310
50    - SCM Micro SPR 532 [9]
51      You shall contact Torsten Maykranz <tmaykranz@scmmicro.de> to get a
52      firmware upgrade.
53    - Verisign Secure Storage Token [24]
54    - Verisign Secure Token [?]
55    
56    
57  Should work but untested by me:  Should work but untested by me:
# Line 34  move them in the supported list above. I Line 62  move them in the supported list above. I
62  manufacturers, please, contact me.  manufacturers, please, contact me.
63    
64  - ActivCard USB reader 2.0 [10]  - ActivCard USB reader 2.0 [10]
65  - SCM Micro SCR 331-DI [11]  - C3PO LTC32 [13]
66  - SCM Micro SPR 532 [9]  - SCM Micro SCR 331-DI NTTCom [23]
67  - Silitek SK-3105 keyboard [12]  - SCM Micro SCR 3310-NTTCOM [28]
68    - SCM Micro SCR 333 [15]
69    - Silitek SK-3105 keyboard [12] or C3PO TLTC2USB [14]
70    
71    
72  Unsupported CCID readers:  Unsupported or partly supported CCID readers:
73  =========================  =============================================
74    
75  None known.  - 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    - 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    
83    
84  Supported operating systems:  Supported operating systems:
# Line 53  Supported operating systems: Line 89  Supported operating systems:
89    to libusb)    to libusb)
90    
91    
92    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  Known problems:  Known problems:
123  ===============  ===============
124    
125  All platforms  MacOSX libusb
126      readers enumeration  """""""""""""
127      """""""""""""""""""      There is a bug in libusb that crash the libusb library when you
128        You may have wrong reader identification if you connect two or      unplug a reader and replug it in another USB socket.  So if you
129        more reader at the exact same time.      unplug a reader replug it in the same USB socket.
130    
131        The daemon pcscd and the CCID driver do not list connected readers      see http://sourceforge.net/tracker/index.php?func=detail&aid=886778&group_id=1674&atid=101674
       in the same order. The driver has no way to know which reader has  
       been detected as a new reader by pcscd.  
   
       So if you plug two readers at the same time (for example if you  
       start pcscd with two readers connected or if you plug a USB hub  
       with two readers on the hub) you may have this (with two readers  
       foo and bar):  
       - pcscd scans the USB bus and finds a new CCID reader foo and  
         calls the driver  
       - the CCID driver scan the USB bus and finds a new different  
         reader bar  
       - pcscd continues scanning the USB bus and finds the second reader  
         bar and calls the driver  
       - the CCID driver scan the USB bus and finds an unused reader foo.  
   
         Now the reader foo will be called bar by pcscd and bar will be  
         called foo. This may not be a problem if the two readers have  
         the same name. But it is strange to insert a card in the  
         physical reader foo and see pcscd detect the card insertion in  
         the reader he calls bar.  
   
         The solution is to use IFDHCreateChannelByName() instead of  
         IFDHCreateChannel() and specify the USB device to use. But pcscd  
         does not implement IFDHCreateChannelByName() yet. Maybe in the  
         future.  
   
         Another solution is to plug readers one after the other and not  
         at the same time.  
   
 *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.  
132    
133    
134  Licence:  Licence:
135  ========  ========
136    
137    This program is free software; you can redistribute it and/or modify    This library is free software; you can redistribute it and/or modify it
138  it under the terms of the GNU General Public License as published by the  under the terms of the GNU Lesser General Public License as published by
139  Free Software Foundation; either version 2 of the License, or (at your  the Free Software Foundation; either version 2.1 of the License, or (at
140  option) any later version.  your option) any later version.
141    
142    This program is distributed in the hope that it will be useful, but    This library is distributed in the hope that it will be useful, but
143  WITHOUT ANY WARRANTY; without even the implied warranty of  WITHOUT ANY WARRANTY; without even the implied warranty of
144  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
145  General Public License for more details.  General Public License for more details.
146    
147    You should have received a copy of the GNU General Public License    You should have received a copy of the GNU Lesser General Public License
148  along with this program; if not, write to the Free Software Foundation,  along with this library; if not, write to the Free Software Foundation,
149  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
150    
151    
152  History:  History:
153  ========  ========
154    
155    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    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    0.9.1 - 1 July 2004, Ludovic Rousseau
203        - I forgot to define IFD_PARITY_ERROR in a .h file
204    
205    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  0.4.1 - 14 February 2004, Ludovic Rousseau  0.4.1 - 14 February 2004, Ludovic Rousseau
245      - distribute missing files readers/supported_readers.txt and      - distribute missing files readers/supported_readers.txt and
246        src/create_Info_plist.pl        src/create_Info_plist.pl
# Line 217  Bibliography: Line 336  Bibliography:
336  [5] http://www.omnikey.com/en/produkt_details.php3?produkt=1&variante=47  [5] http://www.omnikey.com/en/produkt_details.php3?produkt=1&variante=47
337  [6] http://www.scmmicro.com/security/SCR331.html  [6] http://www.scmmicro.com/security/SCR331.html
338  [7] http://www.scmmicro.com/security/SCR335.html  [7] http://www.scmmicro.com/security/SCR335.html
339  [8] http://www.c3po.es/pcsc.htm  [8] http://www.c3po.es/ltc31.html
340  [9] http://www.scmmicro.com/security/SPR532.html  [9] http://www.scmmicro.com/security/SPR532.html
341  [10] http://www.activcard.com/products/usb_reader.html  [10] http://www.activcard.com/products/usb_reader.html
342  [11] http://www.scmmicro.com/security/SCR331-DI.html  [11] http://www.scmmicro.com/security/SCR331-DI.html
343  [12] http://www.silitek.com/prod/getProduct.do?xml_id=4_2&menu_id=4_2_8&cid=1_8_5  [12] http://www.silitek.com/prod/getProduct.do?xml_id=4_2&menu_id=4_2_8&cid=1_8_5
344    [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    [16] http://www.acs.com.hk/Product_Readers.asp?productID=59&PCate=Products_PC_Linked_SmartCard_Readers
348    [17] http://www.scmmicro.com/support/pcs_product_drivers.html
349    [18] http://www.cherrycorp.com/english/advanced-line/advanced-line_smartboard_g83-6744.htm
350    [19] http://www.kobil.com/e/products/smartcard/kaan-base.php
351    [20] http://www.kobil.com/e/products/smartcard/kaan-advanced.php
352    [21] http://www.kobil.com/d/products/smartcard/kaansim3.php
353    [22] http://www.kobil.com/e/products/index.php?s=midentity
354    [23] http://www.ntt.com/jpki/SCR331DI.html
355    [24] http://www.verisign.co.uk/products-services/security-services/unified-authentication/usb-tokens/
356    [25] http://www.eutron.com/simpocket.asp
357    [26] http://www.cryptoidentity.eutron.com/eng/home.asp
358    [27] http://www.cherry.de/english/advanced-line/advanced_smartterminal_st-1044u.htm
359    [28] http://www.ntt.com/jpki/scr3310.html
360    
361  $Id$  $Id$
362    

Legend:
Removed from v.708  
changed lines
  Added in v.1730

  ViewVC Help
Powered by ViewVC 1.1.5