1USB CCID IFD Handler
2====================
3
4This package provides the source code for a generic USB CCID (Chip/Smart
5Card Interface Devices) and ICCD (Integrated Circuit(s) Card Devices)
6driver. See the USB CCID [1] and ICCD [2] specifications from the USB
7working group.
8
9[1] http://www.usb.org/developers/devclass_docs/DWG_Smart-Card_CCID_Rev110.pdf
10[2] http://www.usb.org/developers/devclass_docs/DWG_Smart-Card_USB-ICC_ICCD_rev10.pdf
11
12Authors:
13========
14
15- Ludovic Rousseau <ludovic.rousseau@free.fr>
16- Carlos Prados for the PPS and ATR parsing code (taken from his
17 towitoto driver) in towitoko/ directory.
18- Olaf Kirch for the T=1 TPDU code (from the OpenCT package) in openct/
19 directory. I (Ludovic Rousseau) greatly improved this code.
20
21
22CCID and ICCD readers:
23======================
24
25A reader can be in one of these list:
26- supported
27 See http://pcsclite.alioth.debian.org/ccid/supported.html
28- should working
29 See http://pcsclite.alioth.debian.org/ccid/shouldwork.html
30- unsupported
31 See http://pcsclite.alioth.debian.org/ccid/unsupported.html
32- disabled
33 See http://pcsclite.alioth.debian.org/ccid/disabled.html
34
35
36Supported operating systems:
37============================
38
39- GNU/Linux (libusb 1.0)
40- MacOS X/Darwin (libusb 1.0)
41
42See also http://pcsclite.alioth.debian.org/ccid.html for more
43information.
44
45
46Debug informations:
47===================
48
49The driver uses the debug function provided by pcscd. So if pcscd sends
50its debug to stdout (pcscd --foreground) then the CCID driver will also
51send its debug to stdout. If pcscd sends its debug to syslog (by
52default) then the CCID driver will also send its debug to syslog.
53
54You can change the debug level using the Info.plist configuration file.
55The Info.plist is installed, by default, in
56/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
57or set the environment variable LIBCCID_ifdLogLevel.
58
59The debug level is set in the ifdLogLevel field. It is a binary OR
60combinaison of 4 different levels.
61- 1: critical: important error messages
62- 2: info: informative messages like what reader was detected
63- 4: comm: a dump of all the bytes exchanged between the host and the
64 reader
65- 8: periodic: periodic info when pcscd test if a card is present (every
66 1/10 of a second)
67
68By default the debug level is set to 3 (1 + 2) and correspond to the
69critical and info levels.
70
71You have to restart the driver so it read the configuration file again
72and use the new debug level value. To restart the driver you just need
73to unplug all your CCID readers so the the driver is unloaded and then
74replug your readers. You can also restart pcscd.
75
76
77Voltage selection
78=================
79
80You can change the voltage level using the Info.plist configuration
81file. The Info.plist is installed, by default, in
82/usr/local/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
83
84The voltage level is set in the ifdDriverOptions field. It is a binary OR
85combinaison of 4 different levels.
86
87- 0: power on the card at 5V (default value)
88- 16: power on the card at 3V and, if 3V fails then use 5V
89- 32: power on the card at 1.8V, then 3V and then 5V
90- 48: let the reader decide
91
92By default the voltage level is set to 0 and correspond to 5V.
93
94You have to restart the driver so it read the configuration file again
95and use the new debug level value. To restart the driver you just need
96to unplug all your CCID readers so the the driver is unloaded and then
97replug your readers. You can also restart pcscd.
98
99
100Licence:
101========
102
103 This library is free software; you can redistribute it and/or modify it
104under the terms of the GNU Lesser General Public License as published by
105the Free Software Foundation; either version 2.1 of the License, or (at
106your option) any later version.
107
108 This library is distributed in the hope that it will be useful, but
109WITHOUT ANY WARRANTY; without even the implied warranty of
110MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
111General Public License for more details.
112
113 You should have received a copy of the GNU Lesser General Public License
114along with this library; if not, write to the Free Software Foundation,
115Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
116
117
118History:
119========
120
1211.4.14 - 25 NOvember 2013, Ludovic Rousseau
122 - Add support of
123 . Gemalto GemCore SIM Pro firmware 2.0 (using USB)
124 - report FEATURE_IFD_PIN_PROPERTIES only for pinpad readers
125 - Generalize the management of (old) readers with bDeviceClass = 0xFF
126 - some minor bugs removed
127
128
1291.4.13 - 9 October 2013, Ludovic Rousseau
130 - Add support of
131 . Access IS ePassport Reader
132 . Planeta RC700-NFC CCID
133 - Add support of Windows value for CM_IOCTL_GET_FEATURE_REQUEST
134 Windows uses 0x313520 for SCARD_CTL_CODE(3400) pcsc-lite uses
135 0x42000D48 for SCARD_CTL_CODE(3400)
136 RDP aplications (like rdesktop) will convert SCardControl()
137 commands from a Windows application (so using 0x313520) to
138 pcsc-lite.
139 - fix multi-slot support for card movement notification (introduced
140 in 1.4.12)
141 - Mac OS X: differentiate each libccid library by the dynamic linker
142 using --prefix=/fake/$BUNDLE_ID
143 - some minor bugs removed
144
145
1461.4.12 - 12 August 2013, Ludovic Rousseau
147 - Add support of
148 . HID OMNIKEY 5127 CK
149 . HID OMNIKEY 5326 DFR
150 . HID OMNIKEY 5427 CK
151 . Ingenico WITEO USB Smart Card Reader (Base and Badge)
152 . SecuTech SecuTech Token
153 - Add support of card movement notifications for multi-slot readers
154 - Check libusb is at least at version 1.0.8
155 - Get the serialconfdir value from pcsc-lite pkg config instead of
156 using $(DESTDIR)/$(sysconfdir)/reader.conf.d/
157 - Disable class driver on Mac OS X
158 - Update the bundle name template to include the vendor name
159 - some minor bugs removed
160
161
1621.4.11 - 12 June 2013, Ludovic Rousseau
163 - Add support of
164 . Gemalto IDBridge CT30
165 . Gemalto IDBridge K30
166 . SCM Microsystems Inc. SCL010 Contactless Reader
167 . SCM Microsystems Inc. SDI011 Contactless Reader
168 . THRC reader
169 - Better management of time extension requests
170 - parse: better support of devices with bInterfaceClass = 0xFF
171 - udev rule file: Remove setting group to pcscd, remove support of
172 Linux kernel < 2.6.35 for auto power up management
173 - some minor bugs removed
174
175
1761.4.10 - 16 April 2013, Ludovic Rousseau
177 - Add support of
178 . ACS APG8201 USB Reader with PID 0x8202
179 . GIS Ltd SmartMouse USB
180 . Gemalto IDBridge K3000
181 . Identive CLOUD 2700 F Smart Card Reader
182 . Identive CLOUD 2700 R Smart Card Reader
183 . Identive CLOUD 4500 F Dual Interface Reader
184 . Identive CLOUD 4510 F Contactless + SAM Reader
185 . Identive CLOUD 4700 F Dual Interface Reader
186 . Identive CLOUD 4710 F Contactless + SAM Reader
187 . Inside Secure AT90SCR050
188 . Inside Secure AT90SCR100
189 . Inside Secure AT90SCR200
190 . SCR3310-NTTCom USB SmartCard Reader
191 . SafeTech SafeTouch
192 . SpringCard H512 Series
193 . SpringCard H663 Series
194 . SpringCard NFC'Roll
195 . Yubico Yubikey NEO CCID
196 . Yubico Yubikey NEO OTP+CCID
197 - Add support of time extension for Escape commands
198
199
2001.4.9 - 16 January 2013, Ludovic Rousseau
201 - Add support of
202 . Aktiv Rutoken PINPad In
203 . Aktiv Rutoken PINPad Ex
204 . REINER SCT cyberJack go
205 - Info.plist: Correctly handle reader names containing &
206
207
2081.4.8 - 22 June 2012, Ludovic Rousseau
209 - Add support of
210 . SCR3310-NTTCom USB (was removed in version 1.4.6)
211 . Inside Secure VaultIC 420 Smart Object
212 . Inside Secure VaultIC 440 Smart Object
213 - Wait up to 3 seconds for reader start up
214 - Add support of new PC/SC V2 part 10 properties:
215 . dwMaxAPDUDataSize
216 . wIdVendor
217 . wIdProduct
218 - Use helper functions from libPCSCv2part10 to parse the PC/SC v2
219 part 10 features
220
221
2221.4.7 - 22 June 2012, Ludovic Rousseau
223 - Add support of
224 . ACS ACR101 ICC Reader
225 . ACS CryptoMate64
226 . Alcor Micro AU9522
227 . Bit4id CKey4
228 . Bit4id cryptokey
229 . Bit4id iAM
230 . Bit4id miniLector
231 . Bit4id miniLector-s
232 . CCB eSafeLD
233 . Gemalto Ezio Shield Branch
234 . KOBIL Systems IDToken
235 . NXP PR533
236 - KOBIL Systems IDToken special cases:
237 . Give more time (3 seconds instead of 2) to the reader to answer
238 . Hack for the Kobil IDToken and Geman eID card. The German eID
239 card is bogus and need to be powered off before a power on
240 . Add Reader-Info-Commands special APDU/command
241 - Manufacturer command
242 - Product name command
243 - Firmware version command
244 - Driver version command
245 - Use auto suspend for CCID devices only (Closes Alioth bug
246 [#313445] "Do not activate USB suspend for composite devices:
247 keyboard")
248 - Fix some error management in the T=1 TPDU state machine
249 - some minor bugs removed
250 - some minor improvements added
251
252
2531.4.6 - 6 April 2012, Ludovic Rousseau
254 - Add support of
255 . Avtor SC Reader 371
256 . Avtor SecureToken
257 . DIGIPASS KEY 202
258 . Fujitsu SmartCase KB SCR eSIG
259 . Giesecke & Devrient StarSign CUT
260 . Inside Secure VaultIC 460 Smart Object
261 . Macally NFC CCID eNetPad reader
262 . OmniKey 6321 USB
263 . SCM SDI 011
264 . Teridian TSC12xxF
265 . Vasco DIGIPASS KEY 101
266 - Remove support of readers without a USB CCID descriptor file
267 . 0x08E6:0x34C1:Gemalto Ezio Shield Secure Channel
268 . 0x08E6:0x34C4:Gemalto Ezio Generic
269 . 0x04E6:0x511A:SCM SCR 3310 NTTCom
270 . 0x0783:0x0008:C3PO LTC32 USBv2 with keyboard support
271 . 0x0783:0x9002:C3PO TLTC2USB
272 . 0x047B:0x020B:Silitek SK-3105
273 - Disable SPE for HP USB CCID Smartcard Keyboard. The reader is
274 bogus and unsafe.
275 - Convert "&" in a reader name into "&" to fix a problem on Mac
276 OS X
277 - Fix a problem with ICCD type A devices. We now wait for device ready
278 - Secure PIN Verify and PIN Modify: set the minimum timeout to 90
279 seconds
280 - Add support of wIdVendor and wIdProduct properties
281 - Add support of dwMaxAPDUDataSize
282 - Add support of Gemalto firmware features
283 - some minor bugs removed
284
285
2861.4.5 - 11 October 2011, Ludovic Rousseau
287 - Add support of
288 . Alcor Micro AU9540
289 . BIFIT USB-Token iBank2key
290 . BIFIT iBank2Key
291 . Gemalto Ezio Shield PinPad reader
292 . Gemalto SA .NET Dual
293 . Precise Sense MC reader (with fingerprint)
294 . SDS DOMINO-Key TWIN Pro
295 . Ubisys 13.56MHz RFID (CCID)
296 - Add support of bPPDUSupport and FEATURE_CCID_ESC_COMMAND
297 - SCARD_ATTR_VENDOR_NAME and SCARD_ATTR_VENDOR_IFD_VERSION are not
298 the vendor name and version of the driver but of the IFD:
299 InterFace Device i.e. the smart card reader. We then return the
300 USB iManufacturer string as SCARD_ATTR_VENDOR_NAME and USB
301 bcdDevice as SCARD_ATTR_VENDOR_IFD_VERSION
302 - reduce binary size bu removing unused features from simclist
303 - Fix some warnings reported bu Coverity
304
305
3061.4.4 - 13 May 2011, Ludovic Rousseau
307 - Add support of
308 . Gemalto Ezio CB+
309 . Gemalto Ezio Generic
310 . Gemalto Ezio Shield
311 . Gemalto Ezio Shield PinPad
312 . Gemalto Ezio Shield Secure Channel
313 - Activate USB automatic power suspend. The Linux kernel should
314 power off the reader automatically if it is not used (pcscd is not
315 running).
316 - Add support of TLV Properties wLcdMaxCharacters and wLcdMaxLines.
317 They just duplicate wLcdLayout
318 - some minor bugs removed
319
320
3211.4.3 - 2 April 2011, Ludovic Rousseau
322 - Add support of
323 . Feitian ePass2003 readers
324 . Neowave Weneo
325 . SCM SCL011
326 . Vasco DIGIPASS 920
327 - use :libudev: instead of :libhal: naming scheme.
328 - Do not install RSA_SecurID_getpasswd and Kobil_mIDentity_switch
329 and the associated documentation.
330 - the Secure Pin Entry of the HP USB Smart Card Keyboard is bogus so
331 disable it
332 - some minor bugs removed
333
334
3351.4.2 - 22 February 2011, Ludovic Rousseau
336 - Add support of
337 . ACS APG8201 PINhandy 1
338 . Aktiv Rutoken lite readers
339 . Feitian SCR310 reader (also known as 301v2)
340 . Oberthur ID-ONE TOKEN SLIM v2
341 . Vasco DIGIPASS KEY 200
342 . Vasco DIGIPASS KEY 860
343 . Xiring Leo v2
344 . Xiring MyLeo
345 . new Neowave Weneo token
346 - Add back support of "bogus" Oz776, REINER SCT and BLUDRIVE II
347 - Ease detection of OpenCT by pcsc-lite
348 - disable use of interrupt card events for multi slots readers (the
349 algorithm is bogus and can't be used)
350 - fix minor problems detected by the clang tool
351 - some minor bugs removed
352
353
3541.4.1 - 3 December 2010, Ludovic Rousseau
355 - Add support of
356 . Akasa AK-CR-03, BZH uKeyCI800-K18
357 . Free Software Initiative of Japan Gnuk token readers
358 . Gemalto Smart Guardian (SG CCID)
359 . ReinerSCT cyberJack RFID basis
360 - Remove O2 Micro Oz776 and Blutronics Bludrive II CCID since they
361 are no more supported since version 1.4.0
362 - SecurePINVerify() & SecurePINModify(): Accept big and little
363 endian byte orders for multibytes fields. The application
364 should not use HOST_TO_CCID_16() and HOST_TO_CCID_32() any more
365 and just use the normal byte order of the architecture.
366 - Need pcsc-lite 1.6.5 for TAG_IFD_POLLING_THREAD_WITH_TIMEOUT
367 - Add --enable-embedded (default is no) to build libccid for an
368 embedded system. This will activate the NO_LOG option to disable
369 logging and limit RAM and disk consumption.
370 - Remove --enable-udev option since it is not used anymore with
371 libhal. The udev rules file is now used to change the access
372 rights of the device and not send a hotplug signal to pcscd.
373 See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html
374 - some minor bugs removed
375
376
3771.4.0 - 4 August 2010, Ludovic Rousseau
378 - add support of
379 . ACS AET65
380 . Broadcom 5880
381 . C3PO LTC36
382 . Dectel CI692
383 . Gemalto Hybrid Smartcard Reader
384 . Kingtrust Multi-Reader
385 . Tianyu Smart Card Reader
386 . Todos CX00
387 - Add support of the SCM SDI 010 again. At least the contact
388 interface can be used.
389 - Use libusb-1.0 instead of libusb-0.1
390 - add support of TAG_IFD_STOP_POLLING_THREAD and use of the
391 asynchronous libusb API to be able to stop a transfer.
392 - Request pcsc-lite 1.6.2 minimum (instead of 1.6.0) to have
393 TAG_IFD_STOP_POLLING_THREAD defined
394 - The O2MICRO OZ776 patch (for OZ776, OZ776_7772, REINER_SCT and
395 BLUDRIVEII_CCID) is no more supported with libusb-1.0
396 - correctly get the IFSC from the ATR (ATR parsing was not always
397 correct)
398 - some minor bugs removed
399
400
4011.3.13 - 4 June 2010, Ludovic Rousseau
402 - much faster warm start (up to 3.8 second gained)
403 - Add support of SCARD_ATTR_VENDOR_IFD_SERIAL_NO to get the serial
404 number of the USB device
405 - some minor bugs removed
406
407
4081.3.12 - 8 May 2010, Ludovic Rousseau
409 - add support of
410 . Ask CPL108
411 . Atmel AT90SCR050
412 . Atmel AT90SCR100
413 . Atmel VaultIC420
414 . Atmel VaultIC440
415 . Atmel VaultIC460
416 . Cherry SmartTerminal XX7X
417 . Covadis Auriga
418 . German Privacy Foundation Crypto Stick v1.2
419 . GoldKey PIV Token
420 . KOBIL Smart Token
421 . KOBIL mIDentity 4smart
422 . KOBIL mIDentity 4smart AES
423 . KOBIL mIDentity 4smart fullsize AES
424 . KOBIL mIDentity fullsize
425 . KOBIL mIDentity visual
426 . SCM SCR3500
427 . Smart SBV280
428 . Todos AGM2 CCID
429 . Vasco DIGIPASS KEY 200
430 . Vasco DIGIPASS KEY 860
431 . Vasco DP855
432 . Vasco DP865
433 . id3 CL1356T5
434 - remove support of Smart SBV280 on manufacturer request. They use
435 libusb directly.
436 - remove support of SCM SDI 010 on manufacturer request since not
437 supported by my driver
438 - Enable the Broadcom 5880 reader. It should work after a firmware
439 upgrade.
440 - better support of Dell keyboard
441 - better support of multislot readers (like the GemCore SIM Pro)
442 - better support of SCM SCR3310
443 - better support of ICCD version A devices
444 - The Covadis Véga-Alpha reader is a GemPC pinpad inside. So we use
445 the same code to:
446 . load the strings for the display
447 . avoid limitation of the reader
448 - IFDHControl(): the (proprietary) get firmware version escape
449 command is allowed with a Gemalto reader
450 . the (proprietary) switch interface escape command is allowed on
451 the Gemalto GemProx DU
452 . return IFD_ERROR_NOT_SUPPORTED instead of
453 IFD_COMMUNICATION_ERROR if the dwControlCode value is not
454 supported
455 . return IFD_ERROR_INSUFFICIENT_BUFFER when appropriate
456 - IFDHGetCapabilities(): add support of SCARD_ATTR_ICC_PRESENCE and
457 SCARD_ATTR_ICC_INTERFACE_STATUS
458 - support FEATURE_GET_TLV_PROPERTIES
459 - add support of IOCTL_FEATURE_GET_TLV_PROPERTIES bMinPINSize &
460 bMaxPINSize for Gemalto Pinpad V1 & Covadis Véga-Alpha
461 - support extended APDU of up to 64kB with APDU readers.
462 - get the language selected during Mac OS X installation as language
463 to use for Covadis Véga-Alpha and Gemalto GemPC PinPad pinpad
464 readers
465 - FEATURE_MCT_READER_DIRECT is also supported by the Kobil mIDentity
466 visual
467 - better support of Sun Studio CC
468 - some minor bugs removed
469
470
4711.3.11 - 28 July 2009, Ludovic Rousseau
472 - add support of
473 . Raritan D2CIM-DVUSB VM/CCID
474 . Feitian SCR301
475 . Softforum XecureHSM
476 . 2 Neowave Weneo tokens
477 . Synnix STD200
478 . Aktiv Rutoken ECP
479 . Alcor Micro SCR001
480 . ATMEL AT91SC192192CT-USB
481 . Panasonic USB Smart Card Reader 7A-Smart
482 . Gemalto GemProx DU and SU
483 - remove support of Reiner-SCT cyberJack pinpad(a) on request of
484 Reiner-SCT. You should user the Reiner-SCT driver instead
485 - define CFBundleName to CCIDCLASSDRIVER so that non class drivers
486 have a higher priority. Used by pcsc-lite 1.5.5 and up.
487 Add a --disable-class configure option so that the Info.plist does
488 not define a Class driver. Default is class driver.
489 - do not power up a card with a voltage not supported by the reader
490 - add support of PIN_PROPERTIES_STRUCTURE structure and
491 FEATURE_IFD_PIN_PROPERTIES
492 - adds support of FEATURE_MCT_READERDIRECT. Only the Kobil TriB@nk
493 reader supports this feature for now. This is used for the Secoder
494 functionality in connected mode.
495 - add support of a composite device. No change needed with libhal.
496 use --enable-composite-as-multislot on Mac OS X since libhal is
497 not available on Mac OS X or with libusb on Linux
498 - some minor bugs removed
499
500
5011.3.10 - 7 March 2009, Ludovic Rousseau
502 - add support for
503 . Aktiv Rutoken Magistra
504 . Atmel AT98SC032CT
505 . MSI StarReader SMART
506 . Noname reader (from Omnikey)
507 . Precise Biometrics 200 MC and 250 MC
508 . Realtek 43 in 1 + Sim + Smart Card Reader
509 . TianYu CCID SmartKey
510 . Xiring Xi Sign PKI
511 - add a patch to support the bogus OpenPGP card (on board key
512 generation sometimes timed out)
513 - disable support of the contactless part of SDI010 and SCR331DI
514 (this code was reverse engineered and hard to maintain)
515 - some minor bugs removed
516
517
5181.3.9 - 18 November 2008, Ludovic Rousseau
519 - add support for
520 . ACS ACR122U PICC
521 . Aladdin eToken PRO USB 72K Java
522 . Atmel AT91SO
523 . CSB6 Basic
524 . CSB6 Secure
525 . CSB6 Ultimate
526 . Cherry SmartTerminal ST-1200USB
527 . CrazyWriter
528 . EasyFinger Standard
529 . EasyFinger Ultimate
530 . Gemalto PDT
531 . HP MFP Smart Card Reader
532 . KONA USB SmartCard
533 . SpringCard Prox'N'Roll
534 . VMware Virtual USB CCID
535 - MacOSX/configure: do not overwrite PCSC_CFLAGS, PCSC_LIBS,
536 LIBUSB_CFLAGS and LIBUSB_LIBS if already defined by the user
537 - by default, link statically against libusb on Mac OS X
538 - IFDHPowerICC(): use a very long timeout for PowerUp since the card
539 can be very slow to send the full ATR (up to 30 seconds at 4 MHz)
540 - SecurePINVerify(): correct a bug when using a Case 1 APDU and a
541 SCM SPR532 reader
542 - log the reader name instead of just the pcscd Lun
543 - some minor bugs removed
544
545
5461.3.8 - 27 June 2008, Ludovic Rousseau
547 - add support for
548 . Oberthur ID-One Cosmo Card
549 - do not include the release number in the Info.plist to avoid a
550 diff of a configuration file when upgrading the package.
551 - do not fail compilation if libusb is not available
552 - do not crash if the reader firmware is bogus and does not support
553 chaining for extended APDU. This is the case for Kobil readers
554 - some minor bugs removed
555
556
5571.3.7 - 8 June 2008, Ludovic Rousseau
558 - add support for
559 . ActivCard Activkey Sim
560 . Pro-Active CSB6 Ultimate
561 . id3 Semiconductors CL1356A HID
562 - src/parse: do not try to parse devices with bInterfaceClass=0xFF
563 by default (use command line argument -p for proprietary class)
564 - configure.in: check if libusb-0.1 is emulated by libusb-compat +
565 libusb-1.0 to use or not the USB interrupt feature
566 - correct a bug in the serial communication (GemPC twin serial
567 reader)
568 - correct a pthread problem under Solaris
569 - some minor bugs removed
570
571
5721.3.6 - 30 April 2008, Ludovic Rousseau
573 - add support for
574 . Covadis Alya
575 . Covadis Véga
576 . Precise Biometrics 250 MC
577 . Validy TokenA sl vt
578 . Vasco DP905
579 - better support for the O2Micro OZ776, GemCore SIM Pro
580 - the environment variable LIBCCID_ifdLogLevel overwrite the value
581 of ifdLogLevel read from the Info.plist file
582 - add support for DragonFly BSD
583 - some minor bugs removed
584
585
5861.3.5 - 22 February 2008, Ludovic Rousseau
587 - add support for Gemplus Gem e-Seal Pro, Cherry SmartBoard,
588 G83-6610
589 - use usb_interrupt_read() only if libusb > 0.1.12 or
590 --enable-usb-interrupt is used. libusb <= 0.1.12 is bogus and will
591 consume more CPU than needed.
592 - contrib/Kobil_mIDentity_switch/Kobil_mIDentity_switch was broken
593 on Linux since release 1.3.1
594 - some minor bugs removed
595
596
5971.3.4 - 8 February 2008, Ludovic Rousseau
598 - the serial driver could not be loaded because of the missing
599 symbol InterruptRead
600 - remove WAIT_FOR_SYSFS="bInterfaceProtocol" to do not delay udev
601
602
6031.3.3 - 6 February 2008, Ludovic Rousseau
604 - add support for Lexar Smart Enterprise Guardian and Blutronics
605 Bludrive II CCID
606 - add support of TAG_IFD_POLLING_THREAD using IFDHPolling() to
607 detect asynchronous card movements. With this feature pcscd will
608 not poll the reader every 0.4 second for a card movement but will
609 wait until the reader sends a USB interrupt signal
610 - correct a bug with an ICCD-B device and a receive buffer smaller
611 than 4 bytes
612 - remove the sleep in the udev rule. It slows down the detection of
613 any USB device
614 - some minor bugs removed
615
616
6171.3.2 - 22 January 2008, Ludovic Rousseau
618 - add support of Apple Mac OS X Leopard (10.5.1)
619 - solve a hotplug problem on Ubuntu 7.10 (reader was not detected)
620 - create a symlink from libccidtwin.so to libccidtwin.so.VERSION so
621 that the /etc/reader.conf configuration file do not need to edited
622 for each new driver version
623 - make driver for the GemPC Serial compile again
624 - some minor bugs removed
625
626
6271.3.1 - 16 November 2007, Ludovic Rousseau
628 - add support for "Philips Semiconductors JCOP41V221" ICCD card,
629 O2Micro oz776 (ProductID 0x7772), CardMan5321, Giesecke & Devrient
630 StarSign Card Token 350 and 550, SafeNet IKey4000, Eutron
631 CryptoIdentity, Eutron Smart Pocket, Eutron Digipass 860, Lenovo
632 Integrated Smart Card Reader, "Kobil EMV CAP - SecOVID Reader III,
633 Charismathics token, Reiner-SCT cyberJack pinpad(a)
634 - improve support of Mac OS X and *BSD
635 - some minor bugs removed
636
637
6381.3.0 - 10 May 2007, Ludovic Rousseau
639 - add support of ICCD version A and B
640 - add support for (new) KOBIL mIDentity, SchlumbergerSema Cyberflex
641 Access e-gate ICCD, Fujitsu Siemens Computers SmartCard USB 2A and
642 SmartCard Keyboard USB 2A readers, OmniKey CardMan 4321
643 - contrib/RSA_SecurID/RSA_SecurID_getpasswd: tool to get the on time
644 password also displayed on the token screen
645 - contrib/Kobil_mIDentity_switch: tool to activate the CCID reader
646 of the Kobil mIDentity. The tool should be started automatically
647 by the udev rule on Linux
648 - GemPC pinpad: localisation of the string "PIN blocked", add
649 Portuguese(pt), Dutch(nl) and Turkish(tr) localisations
650 - some minor bugs removed
651
6521.2.1 - 27 January 2007, Ludovic Rousseau
653 - pcscd_ccid.rules: add non CCID generic (InterfaceClass: 0xFF)
654 readers
655 - INSTALL: document how to use --enable-udev on FreeBSD
656 - move the O2Micro Oz7762 from the unsupported to the supported list
657 since patches to support it are applied by default
658 (O2MICRO_OZ776_PATCH)
659
660
6611.2.0 - 19 January 2007, Ludovic Rousseau
662 - add support for SCARD_ATTR_VENDOR_IFD_VERSION,
663 SCARD_ATTR_VENDOR_NAME and SCARD_ATTR_MAXINPUT tags used by
664 SCardGetAttrib(). Read SCARDGETATTRIB.txt for more documentation
665 - add support for OmniKey CardMan 5125, CardMan 1021, C3PO LTC32,
666 Teo by Xiring, HP USB Smartcard Reader
667 - use --enable-twinserial to build the serial reader driver
668 - use --enable-udev to configure for a use with Linux udev hotplug
669 mechanism. This will allow pcscd to avoid polling the USB bus
670 every 1 second
671 - some minor bugs removed
672
673
6741.1.0 - 11 August 2006, Ludovic Rousseau
675 - support Extended APDU (up to 64KB) for readers in TPDU mode (many
676 readers) or Extended APDU mode (very rare). This only works for
677 T=1 cards.
678 - add support for C3PO LTC31 (new version), OmniKey CardMan 3021, HP
679 USB Smart Card Keyboard, Actividentity (ActiveCard) Activkey Sim,
680 id3 Semiconductors CL1356D and CL1356T, Alcor Micro AU9520
681 - support the contactless interface of the SCR331-DI-NTTCOM
682 - add support of FreeBSD
683 - increase the USB timeout used for PIN verify/modify to not timeout
684 before the reader
685 - the 4-bytes value returned by CM_IOCTL_GET_FEATURE_REQUEST shall
686 be encoded in big endian as documented in PCSC v2 part 10 ch 2.2
687 page 2. The applications using this feature shall be updated (to
688 respect the PCSC specification).
689 - use ./configure --enable-twinserial to compile and install the the
690 driver for the GemPC Twin serial
691 - some minor bugs removed
692
693
6941.0.1 - 22 April 2006, Ludovic Rousseau
695 - add support for Axalto Reflex USB v3, SCM Micro SDI 010, Winbond
696 Electronics W81E381 chipset, Gemplus GemPC Card, Athena ASE IIIe
697 KB USB, OmniKey CardMan 3621
698 - support Solaris (Solaris uses a different libusb)
699 - better documentation for ./configure arguments
700 - improve support of Cherry XX44 keyboard for PIN verify and change
701 (circumvent firmware bugs)
702 - do not use LTPBundleFindValueWithKey() from pcscd since this
703 function has been removed from pcscd API
704 - use -fvisibility=hidden is available to limit the number of
705 exported symbols
706
707
7081.0.0 - 3 March 2006, Ludovic Rousseau
709 - add support for ActivCard USB Reader 3.0, Athena ASE IIIe USB V2,
710 SCM Micro SCR 355, SCR 3311, SCR 3320, SCR 3340 ExpressCard54,
711 Gemplus GemCore SIM Pro, GemCore POS Pro (serial and USB), GemPC
712 Express (ExpressCard/54 interface), SmartEpad (v 2.0), OmniKey
713 CardMan 5121
714 - greatly improve support of PIN PAD readers. We now support TPDU
715 readers with T=1 cards
716 - use l10n strings for the Gemplus GemPC PIN PAD (it has a screen).
717 Supported languages are: de, en, es, fr, it
718 - rename ACS ACR 38 in ACR 38U-CCID since the ACR 38 is a different
719 reader and is not CCID compatible
720 - allow to select the Power On voltage using Info.plist instead of
721 recompiling the source code
722 - correct bugs in the support of multi-slots readers
723 - if the card is faster than the reader (TA1=97 for example) we try
724 to use a not-so-bad speed (corresponding to TA1=96, 95 or 94)
725 instead of the default speed of TA1=11
726 - the src/parse tool do not use the driver anymore. No need to
727 update the Info.plist file first.
728 - some minor bugs removed
729
730
7310.9.4 - 27 November 2005, Ludovic Rousseau
732 - add support for Eutron SIM Pocket Combo, Eutron CryptoIdentity,
733 Verisign Secure Token and VeriSign Secure Storage Token, GemPC
734 Card (PCMCIA), SCM SCR331-DI NTTCom, SCM Micro SCR 3310-NTTCom,
735 Cherry ST-1044U, Cherry SmartTerminal ST-2XXX
736 - add support of PC/SC v2 part 10 CM_IOCTL_GET_FEATURE_REQUEST add
737 support of FEATURE_VERIFY_PIN_DIRECT and FEATURE_MODIFY_PIN_DIRECT
738 remove support of IOCTL_SMARTCARD_VENDOR_VERIFY_PIN (now
739 obsoleted). A sample code is available in examples/scardcontrol.c
740 - we need pcsc-lite 1.2.9-beta9 since some structures used for PIN
741 pad readers are defined by pcsc-lite
742 - some (bogus) cards require an extra EGT but the ATR does not say
743 so. We try to detect the bogus cards and set TC1=2
744 - IFDHSetProtocolParameters(): only use a data rate supported by the
745 reader in the PPS negociation, otherwise we stay at the default
746 speed.
747 - calculate and store the read timeout according to the card ATR
748 instead of using a fixed value of 60 seconds
749 - increase the read timeout if the card sends and WTX request
750 - improve support of GemPC Twin and GemPC Card (serial protocol)
751 - reset the device on close only if DRIVER_OPTION_RESET_ON_CLOSE is
752 set. The problem was that a device reset also disconnects the
753 keyboard on a keyboard + reader device.
754 - use color logs
755 - some minor bugs removed
756
757
7580.9.3 - 14 March 2005, Ludovic Rousseau
759 - change the licence from GNU GPL to GNU Lesser GPL (LGPL)
760 - add support for ACS ACR 38, Kobil KAAN Base, Kobil KAAN Advanced,
761 Kobil KAAN SIM III, Kobil KAAN mIDentity, SCM Micro SCR 331,
762 SCM Micro SCR 331-DI, SCM Micro SCR 335, SCM Micro SCR 3310,
763 SCM Micro SCR 532, Cherry XX44 readers
764 - improve communication speed with readers featuring "Automatic PPS
765 made by the CCID"
766 - switch the Cherry xx33 reader in ISO mode if power up in EMV mode
767 fails.
768 - add support of character level readers. Thanks to O2Micro for the
769 patch
770 - add support for the O2Micro OZ776S reader but the reader firmware
771 is still bogus
772 - check firmware version to avoid firmwares with bugs. You can still
773 use a bogus firmware by setting DRIVER_OPTION_USE_BOGUS_FIRMWARE
774 in Info.plist
775 - some minor bugs removed
776
7770.9.2 - 15 August 2004, Ludovic Rousseau
778 - T=1 TPDU code:
779 . the work on T=1 TPDU code was possible thanks to Gemplus
780 validation team who helped me test, debug and bring the code to
781 an EMV validation level. Thanks to Jérôme, Jean-Yves, Xavier and
782 the Gemplus readers department
783 . error code was not checked correctly
784 . avoid a (nearly) infinite loop when resynch are needed.
785 . correctly initialise an internal value to allow more than one
786 reader to work
787 - multi-slots readers
788 . add support for multi-slots readers. The only one I have is a
789 SCM Micro SCR 331-DI with a contact and a contactless interface.
790 The contactless interface may or may not work for you since the
791 reader uses proprietary (undocumented) commands.
792 - GemPC Twin serial reader
793 . perform a command (get the reader firmware) to be sure a GemPC
794 Twin (serial or pcmcia) reader is connected
795 . use a dynamic timeout when reading the serial port.
796 The first timeout used when detecting the reader is 2 seconds to
797 not wait too long if no reader is connected. Later timeouts are
798 set to 1 minute to allow long time APDU.
799 - use `pkg-config libpcsclite --cflags` to locate the pcsc-lite
800 header files
801 - use `pkg-config --print-errors --atleast-version=1.2.9-beta5 libpcsclite`
802 to test the pcsc-lite version
803 - code improvements thanks to the splint tool (http://www.splint.org/)
804
8050.9.1 - 1 July 2004, Ludovic Rousseau
806 - I forgot to define IFD_PARITY_ERROR in a .h file
807
8080.9.0 - 1 July 2004, Ludovic Rousseau
809 - The T=1 TPDU automata from Carlos Prados' Towitoko driver is very
810 limited and do not support error management mechanisms.
811 I then used the T=1 TPDU automata from OpenCT (OpenSC project).
812 This automata is much more powerful but still lacks a lot of error
813 management code.
814 I then added all the needed code to reach the quality level
815 requested by the EMV standard.
816 - add support for new readers:
817 . Advanced Card Systems ACR 38
818 . Cherry XX33
819 . Dell keyboard SK-3106
820 . Dell smart card reader keyboard
821 . SCR 333
822 - add support of multi procotol cards (T=0 and T=1)
823 - the debug level is now dynamic and set in the Info.plist file (no
824 need to recompile the driver any more)
825 - add support for the libusb naming scheme: usb:%04x/%04x:libusb:%s
826 - INSTALL: add a "configuring the driver for the serial reader
827 (GemPC Twin)" part
828 - use `pkg-config libpcsclite --variable=usbdropdir` so you do not
829 have to use --enable-usbdropdir=DIR or --enable-ccidtwindir=DIR
830 even if pcscd does not use the default /usr/local/pcsc/drivers
831 - add support of IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and
832 IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in IFDHControl()
833 - read ifdDriverOptions from Info.plist to limit the use of
834 IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE (idea from Peter Williams)
835 - provide an example of use of SCardControl()
836 IOCTL_SMARTCARD_VENDOR_IFD_EXCHANGE and
837 IOCTL_SMARTCARD_VENDOR_VERIFY_PIN in example/
838 - add a --enable-pcsclite option (default to yes) so that the driver
839 can be compiled for a different framework (one needing
840 tokenparser.l like Solaris)
841 - Reset action is power off and power on, not just power on
842 - use the include files from pcsc-lite
843 - add a mechanism to allow power on at 1.8V, 3V and then 5V as
844 specified by ISO 7816. We still use 5V for now to avoid problems
845 with non ISO compliant cards
846
8470.4.1 - 14 February 2004, Ludovic Rousseau
848 - distribute missing files readers/supported_readers.txt and
849 src/create_Info_plist.pl
850 'make install' failed because of this.
851
8520.4.0 - 13 February 2004, Ludovic Rousseau
853 - support of T=1 with TPDU readers. A lot of the T=1 code comes from
854 Carlos Prados towitoko driver.
855 My code is GNU GPL, his code is GNU LGPL so the global driver is
856 GNU GPL
857 - PPS negotiation if the reader does not do it automatically
858 - add support for the Silitek SK-3105 keyboard. It's a USB device
859 with multiple interfaces
860 - use the create_Info_plist.pl script to generate the installed
861 Info.plist from an Info.plist template and a list of supported
862 readers. The Info.plist was too "complex" to maintain by hand
863 since it now contains 11 entries
864 - add support of IFDHCreateChannelByName to avoid wrong reader
865 enumeration. This is not complete if you have multiple _identical_
866 readers. You need to use a > 1.2.0 pcsc-lite version (not yet
867 released at that time)
868 - build but do not install the serial ccidtwin driver by default
869 since it is useless on computers without a serial port or without
870 this reader for example.
871 - read and write timeouts are not symmetric. write timout can be
872 shorter since the reader and card is not supposed to do anything
873 before receiving (write) a command
874 - do not try to find usb.h and other libusb files if
875 --disable-libusb is used. Needed if you only want to build the
876 serial driver. Thanks to Niki Waibel for the patch
877 - add a --enable-ccidtwindir argument to ./configure to specify the
878 serial GemPC Twin installation directory
879 - debug and code improvements and simplifications
880
8810.3.2 - 4 November 2003, Ludovic Rousseau
882 - src/commands.c: correct a stupid bug that occurs with an APDU with
883 2 bytes response.
884 - Info.plist: add SPR 532 in list of supported readers
885 - parse.c: do not exit if the InterfaceClass is 0xFF (proprietary).
886 It is the case with old readers manufactured before the final
887 release of the CCID specs.
888 - move LTC31 reader from unsupported to supported reader list. It
889 was my f ault since in used odd INS byte in my test applet and odd
890 INS bytes are forbidden by ISO 7816-4 ch. 5.4.2 Instruction byte.
891 Thanks to Josep Moné s Teixidor for pointing the problem.
892 - src/commands.c: comment out the automatic GET RESPONSE part. I
893 don't think it should be in the driver. Maybe in pcscd instead?
894
8950.3.1 - 23 September 2003, Ludovic Rouseau
896 - add --enable-multi-thread (enabled by default) for thread safe
897 support an APDU multiplexing. You will need pcsc-lite-1.2.0-rc3 or
898 above to use this feature.
899 - add --enable-libusb=PATH option is your libusb is not installed in
900 /usr or /usr/local
901 - honor DESTDIR in install rules (closes [ #300110 ]). Thanks to
902 Ville Skyttä for the patch.
903 - src/ccid.c: do not switch the GemPC Key and GemPC Twin in APDU
904 mode since it also swicth in EMV mode and may not work with non
905 EMV cards
906 - src/ccid_serial.c: complete reimplementation of the Twin serial
907 protocol using a finite state automata (code much simpler)
908
9090.3.0 - 10 September 2003, Ludovic Rousseau
910 - support of GemPC Twin connected to a serial port. Thanks to Niki
911 W. Waibel for a working prototype.
912 - support of auto voltage at power up if the reader support it
913 instead of forcing a 5V in all cases.
914 - support of APDU mode instead of just TPDU if the reader support
915 it. Thanks to Jean-Luc Giraud for the idea and inspiration I got
916 from his "concurrent" driver.
917 - support of "time request" from the card.
918 - parse: new indentation for more readability of supported features.
919 - switch the GemPC Key and GemPC Twin in APDU mode since they
920 support it but do not announce it in the dwFeatures.
921 - new build process using autoconf/automake.
922
9230.2.0 - 26 August 2003, Ludovic Rousseau
924 - Works under MacOS X
925 - Info.plist: use an <array></array> for the alias enumeration
926 - Makefile rework for *BSD and MacOS X
927
9280.1.0 - 13 August 2003, Ludovic Rousseau
929 - First public release
930
931
932$Id: README 6795 2013-11-25 18:09:17Z rousseau $
933
934 vim:ts=20
935