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