Skip to content
/ acsccid Public

acsccid is a PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card readers. This library provides a PC/SC IFD handler implementation and communicates with the readers through the PC/SC Lite resource manager (pcscd).

License

Notifications You must be signed in to change notification settings

acshk/acsccid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ACS CCID PC/SC Driver for Linux/Mac OS X
Advanced Card Systems Ltd.



Introduction
------------

acsccid is a PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card
readers. This library provides a PC/SC IFD handler implementation and
communicates with the readers through the PC/SC Lite resource manager (pcscd).

acsccid is based on ccid. See CCID free software driver [1] for more
information.

To build acsccid, you need the following software:

Linux
- pcsclite 1.8.3 or above
- libusb 1.0.9 or above
- flex
- perl
- pkg-config

Mac OS X
- libusb 1.0.9 or above
- pkg-config

For more information, see the INSTALL file.

[1] https://ccid.apdu.fr/



System Requirements
-------------------

Linux
Mac OS X 10.5 or above



Supported Readers
-----------------

CCID Readers

VID  PID  Reader              Reader Name
---- ---- ------------------- -----------------------------
072F B301 ACR32-A1            ACS ACR32 ICC Reader
072F B304 ACR3201-A1          ACS ACR3201 ICC Reader
072F B305 ACR3201             ACS ACR3201 ICC Reader
072F 8300 ACR33U-A1           ACS ACR33U-A1 3SAM ICC Reader
072F 8302 ACR33U-A2           ACS ACR33U-A2 3SAM ICC Reader
072F 8307 ACR33U-A3           ACS ACR33U-A3 3SAM ICC Reader
072F 8301 ACR33U              ACS ACR33U 4SAM ICC Reader
072F 90CC ACR38U-CCID         ACS ACR38U-CCID
072F 90CC ACR100-CCID         ACS ACR38U-CCID
072F 90D8 ACR3801             ACS ACR3801
072F B100 ACR39U              ACS ACR39U ICC Reader
072F B500 ACR39 BL            ACS ACR39 FW_Upgrade
072F B101 ACR39K              ACS ACR39K ICC Reader
072F B102 ACR39T              ACS ACR39T ICC Reader
072F B103 ACR39F              ACS ACR39F ICC Reader
072F B104 ACR39U-SAM          ACS ACR39U-SAM ICC Reader
072F B10C ACR39U-U1           ACS ACR39U ID1 Card Reader
072F B113 ACR39U-W1           ACS ACR39U-W1 Top ICC Reader
072F B114 ACR39U-W1           ACS ACR39U-W1 Edge ICC Reader
072F B116 ACR39U-W1           Z_ACS ACR39U-W1 Top Reader
072F B117 ACR39U-W1           Z_ACS ACR39U-W1 Edge Reader
072F B000 ACR3901U            ACS ACR3901 ICC Reader
072F B501 ACR40T              ACS ACR40T ICC Reader
072F B504 ACR40T BL           ACS ACR40 FW_Upgrade
072F B506 ACR40U              ACS ACR40U ICC Reader
072F B505 ACR40U BL           ACS SCR FW_Upgrade
072F 90D2 ACR83U-A1           ACS ACR83U
072F 8306 ACR85               ACS ACR85 PINPad Reader
072F 2011 ACR88U              ACS ACR88U
072F 8900 ACR89U-A1           ACS ACR89 ICC Reader
072F 8901 ACR89U-A2           ACS ACR89 Dual Reader
072F 8902 ACR89U-FP           ACS ACR89 FP Reader
072F 1205 ACR100I             ACS ACR100 ICC Reader
072F 1204 ACR101              ACS ACR101 ICC Reader
072F 1206 ACR102              ACS ACR102 ICC Reader
072F 2200 ACR122U             ACS ACR122U
072F 2200 ACR122U-SAM         ACS ACR122U
072F 2200 ACR122T             ACS ACR122U
072F 2214 ACR1222U-C1         ACS ACR1222 1SAM PICC Reader
072F 1280 ACR1222U-C3         ACS ACR1222 1SAM Dual Reader
072F 2207 ACR1222U-C6         ACS ACR1222 Dual Reader
072F 222B ACR1222U-C8         ACS ACR1222 1SAM PICC Reader
072F 2206 ACR1222L-D1         ACS ACR1222 3S PICC Reader
072F 222E ACR123U             ACS ACR123 3S Reader
072F 2237 ACR123U             ACS ACR123 PICC Reader
072F 2219 ACR123U Bootloader  ACS ACR123US_BL
072F 2203 ACR125              ACS ACR125 nPA plus
072F 221A ACR1251U-A1         ACS ACR1251 1S CL Reader
072F 2229 ACR1251U-A2         ACS ACR1251 CL Reader
072F 222D [OEM Reader]        [OEM Reader Name]
072F 2218 ACR1251U-C (SAM)    ACS ACR1251U-C Smart Card Reader
072F 221B ACR1251U-C          ACS ACR1251U-C Smart Card Reader
072F 2232 ACR1251UK           ACS ACR1251K Dual Reader
072F 2242 ACR1251U-C3         ACS ACR1251 1S Dual Reader
072F 2238 ACR1251U-C9         ACS ACR1251 Reader
072F 225F ACR1251T-E2         ACS ACR1251T CL Reader
072F 224F ACM1251U-Z2         ACS ACR1251 CL Reader
072F 223B ACR1252U-A1         ACS ACR1252 1S CL Reader
072F 223B ACR1252U-M1         ACS ACR1252 1S CL Reader
072F 223E ACR1252U-A2         ACS ACR1252 CL Reader
072F 223D ACR1252U BL         ACS ACR1252 USB FW_Upgrade v100
072F 2244 ACR1252U-A1 (PICC)  ACS ACR1252U BADANAMU MAGIC READER
072F 2259 ACR1252U-A1         ACS ACR1252IMP 1S CL Reader
072F 225B ACM1252U-Z2ACE      ACS ACR1252 CL Reader
072F 225C ACM1252U-Z2ACE BL   ACS ACR1252 USB FW_Upgrade v100
072F 226B ACR1252U-MW/MV      ACS WalletMate 1S CL Reader
072F 226A ACR1252U-MW/MV BL   ACS WalletMate USB FW_Upgrade
072F 223F ACR1255U-J1         ACS ACR1255U-J1 PICC Reader
072F 2239 ACR1256U            ACS ACR1256U PICC Reader
072F 2211 ACR1261U-C1         ACS ACR1261 1S Dual Reader
072F 2252 ACR1261U-A          ACS ACR1261 CL Reader
072F 2100 ACR128U             ACS ACR128U
072F 2224 ACR1281U-C1         ACS ACR1281 1S Dual Reader
072F 220F ACR1281U-C2 (qPBOC) ACS ACR1281 CL Reader
072F 2217 ACR1281U-C2 (UID)   ACS ACR1281 Dual Reader
072F 2223 ACR1281U    (qPBOC) ACS ACR1281 PICC Reader
072F 2208 ACR1281U-C3 (qPBOC) ACS ACR1281 Dual Reader
072F 0901 ACR1281U-C4 (BSI)   ACS ACR1281 PICC Reader
072F 220A ACR1281U-C5 (BSI)   ACS ACR1281 Dual Reader
072F 2215 ACR1281U-C6         ACS ACR1281 2S CL Reader
072F 2220 ACR1281U-C7         ACS ACR1281 1S PICC Reader
072F 2233 ACR1281U-K          ACS ACR1281U-K PICC Reader
072F 2234 ACR1281U-K          ACS ACR1281U-K Dual Reader
072F 2235 ACR1281U-K          ACS ACR1281U-K 1S Dual Reader
072F 2236 ACR1281U-K          ACS ACR1281U-K 4S Dual Reader
072F 2213 ACR1283L-D1         ACS ACR1283 4S CL Reader
072F 222C ACR1283L-D2         ACS ACR1283 CL Reader
072F 220C ACR1283 Bootloader  ACS ACR1283U FW Upgrade
072F 2258 ACR1311U-N1         ACS ACR1311 PICC Reader
072F 2303 ACR1552U-M1         ACS ACR1552 1S CL Reader
072F 2308 ACR1552U-M2         ACS ACR1552 CL Reader
072F 2302 ACR1552U BL         ACS ACR1552 USB FW_Upgrade
072F 2307 ACR1552U-ZW         ACS WalletMate II 1S CL Reader
072F 2306 ACR1552U-ZW BL      ACS WalletMate II V2 Upgrade
072F 230A ACR1555U            ACS ACR1555 1S CL Reader
072F 2309 ACR1555U BL         ACS ACR1555 USB FW_Upgrade
072F 2301 ACR1581U-C1         ACS ACR1581 1S Dual Reader
072F 2300 ACR1581U-C1 BL      ACS ACR1581 USB FW_Upgrade
072F 0102 AET62               ACS AET62 PICC Reader
072F 0103 AET62               ACS AET62 1SAM PICC Reader
072F 0100 AET65               ACS AET65 ICC Reader
072F 224A AMR220-C            ACS AMR220 Reader
072F 8201 APG8201-A1          ACS APG8201
072F 8206 APG8201-B2          ACS APG8201-B2
072F 8207 APG8201-B2RO        ACS ACR83U
072F 8202 [OEM Reader]        [OEM Reader Name]
072F 8205 [OEM Reader]        [OEM Reader Name]
072F 90DB CryptoMate64        ACS CryptoMate64
072F B200 ACOS5T1             ACS CryptoMate (T1)
072F B106 ACOS5T2             ACS CryptoMate (T2)
072F B112 ACOS5T2             ACS CryptoMate EVO

non-CCID Readers

VID  PID  Reader              Reader Name
---- ---- ------------------- -----------------------------
072F 9000 ACR38U              ACS ACR38U
072F 90CF ACR38U-SAM          ACS ACR38U-SAM
072F 90CE [OEM Reader]        [OEM Reader Name]
072F 0101 AET65               ACS AET65 1SAM ICC Reader
072F 9006 CryptoMate          ACS CryptoMate



History
-------

v1.1.11 (25/3/2024)
- Add the following readers support:
  WalletMate II 1S CL Reader
  WalletMate II V2 Upgrade
  ACR1555 1S CL Reader
  ACR1555 USB FW_Upgrade
- Enable WalletMate II (composite device) as multi-slot reader.
- Enable the 2nd interface of WalletMate II as SAM slot.
- Enable ACR1555U (composite device) as multi-slot reader.
- Enable the 2nd interface of ACR1555U as SAM slot.

v1.1.10 (1/8/2023)
- Add the following readers support:
  ACR40U ICC Reader
  SCR FW_Upgrade
  ACR1552 1S CL Reader
  ACR1552 CL Reader
  ACR1552 USB FW_Upgrade
- Enable ACR1552U-M1 (composite device) as multi-slot reader.
- Enable the 2nd interface of ACR1552U-M1 as SAM slot.
- Fix missing initialization in get_end_points().
- Update _usbDevice.has_interrupt in get_end_points().
- Initialize multislot for interrupt endpoint only in OpenUSBByName().
- Detect a card on macOS for interrupt endpoint only in OpenUSBByName().
- Simplify the code for delaying the write operation.
- Allow ACR38 or the reader which needs write delay in WriteUSB().
- Check the packet size to avoid infinite loop in WriteUSB().
- Use #pragma pack(1) for all platforms in src/ifdhandler.c.

v1.1.9 (15/3/2023)
- Add the following readers support:
  APG8201-B2RO
  ACR39U-W1 Top Reader
  ACR39U-W1 Edge Reader
  WalletMate 1S CL Reader
  WalletMate USB FW_Upgrade
  ACR1581 1S Dual Reader
  ACR1581 USB FW_Upgrade
  ACR40T ICC Reader
  ACR40 FW_Upgrade
  ACR39 FW_Upgrade
- Fix misleading read length in CCID_Receive().
- Use "buffer.h" instead of <openct/buffer.h>.
- Merge with ccid 1.4.32.
  - ccid_open_hack_pre(): fix bug for ICCD type A & B devices.
  - Fix "Bus Error" on SPARC64 CPU and Solaris C compiler.
  - Add SCARD_ATTR_CHANNEL_ID for USB devices.
  - get_ccid_usb_interface(): No need to make the function EXTERNAL.
- Merge with ccid 1.4.33.
  - Import files from ccid 1.4.33 to get Unicode support.
  - towitoko: do not use "bool" type.
  - configure: add --enable-oslog argument.
  - debug: add support of os_log(3) for macOS.
  - macOS: use --enable-oslog for macOS >= 10.12
- Enable syslog or oslog from deployment target in MacOSX/configure.
- Fix ACR1281U-C1 communication issue with NXP SAM AV3.
- Set arm64 and x86_64 for universal binary build in MacOSX/configure.
- Fix segmentation fault for multi-slot readers on macOS Big Sur.
- Merge with ccid 1.4.34.
  - T0ProcACK(): Fix a potential integer underflow.
  - Fix a potential crash in IFDHTransmitToICC().
  - CmdPowerOn: fix log messages.
  - CmdPowerOn: fix a potential infinite loop.
  - T0ProcACK: fix a potential problem.
  - CmdPowerOn: fix a potential overrun with bogus ATR.
  - IFDHSetProtocolParameters(): Fix reading past the end-of-buffer.
  - CmdGetSlotStatus: fix potential read of uninitialized buffer.
  - ReadUSB: fix potential read of uninitialized buffer.
  - IFDHSetProtocolParameters: handle ATR_GetConvention() error.
  - PPS_Match: fix potential read of uninitialized buffer.
  - Fix potential reads of uninitialized buffer.
  - dw2i: fix potential integer overflow.
  - CCID_Transmit: call memcpy() only with a non-NULL src.
  - Do not report an error if the wrong interface is used by the driver.
  - Return "no smart card" if we get notified during a transmit.
  - Display libusb error code in text.
  - Add a new field dwProtocols in struct _ccid_descriptor.
  - Fail if the requested protocol is not supported by reader.
  - Fix potential memcpy call with null dest.
- Merge with ccid 1.4.35.
  - Solve a performance issue with T=1 and CCID_CLASS_AUTO_PPS_PROP.
  - Reformat part of T0ProcACK().
  - Fix a possible buffer overflow in T0ProcACK.
  - ccid_usb: ask for bNumDataRatesSupported data rates.
  - IFDHSetProtocolParameters: set IFSC/IFSD only for TPDU readers.
  - CmdPowerOn: fix debug message about Voltage.
  - Multi_PollingProc: use slot variable.
  - configure.ac: remove AC_HEADER_STDC.
  - configure.ac: remove AC_HEADER_TIME.
  - Import files from ccid 1.4.35.
  - Use ax_pthread.m4 macro from autoconf-archive.
- Replace AM_PROG_LEX with AC_PROG_LEX([noyywrap]) in configure.ac.
- Add ACS_APG8201_B2RO to src/ccid.h.
- Disable card detection thread for APG8201-B2RO in OpenUSBByName().
- Return 6B 80 for APG8201-B2RO in CCID_Receive().
- Disable polling thread for APG8201-B2RO in IFDHGetCapabilities().
- Enable I/O controls for APG8201-B2RO in IFDHControl().
- Enable SPE pseudo APDU for APG8201-B2RO in process_spe_ppdu().
- Merge with ccid 1.4.36.
  - Code reformat: replace 4 spaces by 1 tab.
- Enable ACR1252U-MW/MV (composite device) as multi-slot reader.
- Enable the 2nd interface of ACR1252U-MW/MV as SAM slot.
- Enable ACR1581U-C1 (composite device) as multi-slot reader.
- Enable the 3rd interface of ACR1581U-C1 as SAM slot.
- Enable SAM slot for ACR40T.
- Update the status for SAM slot on macOS in CardDetectionThread().
- Disable polling thread for SAM slot in IFDHGetCapabilities().
- Remove unused TriggerSlotChange().
- Enable multislot extension for single slot readers in OpenUSBByName().
- Update the status for each slot in Multi_PollingProc().
- Use iconv.m4 macro from gettext.
- Fix compiler warnings on macOS in CardDetectionThread().
- Enable ACR1581U-C1 to use bStatus in IFDHICCPresence().

v1.1.8 (6/1/2020)
- Add the following readers support:
  ACR39U-W1 Top ICC Reader
  ACR39U-W1 Edge ICC Reader
  ACR1251T CL Reader
- Import files from ccid 1.4.31.
- Merge with ccid 1.4.31.
  - InterruptRead(): log the timeout used.
- Remove response timeout fix for APG8201 and APG8201Z.

v1.1.7 (24/7/2019)
- Add the following readers support:
  ACR3201 ICC Reader
  CryptoMate EVO
- Fix card detection issue for multi-slot readers on macOS.
- Fix configuration descriptor issue on macOS in OpenUSBByName().
- Fix APG8201 response timeout issue.
- Merge with ccid 1.4.5.
  - Do not build simclist with (unused) file dump option.
- MacOSX/configure: fix checking error for dynamic library libusb.

v1.1.6 (29/10/2018)
- Add the following readers support:
  ACR1252 CL Reader           (ACM1252U-Z2ACE)
  ACR1252 USB FW_Upgrade v100 (ACM1252U-Z2ACE BL)
- Enable TLV properties for APG8201-B2 in IFDHControl().
- Enable TLV properties for APG8201-B2 in process_spe_ppdu().
- Fix ACR39U T=0 APDU problem in CmdXfrBlockTPDU_T0().
- Return 6B 80 for supported readers in CCID_Receive().
- Merge with ccid 1.4.29.
  - Remove extra_egt() causing problems.
- Update the comment in IFDHControl().
- Fix undefined symbol yylex.
- Set the status to absent if SAM reset failed in IFDHPowerICC().
- Merge with ccid 1.4.30.
  - Import files from ccid 1.4.30.
  - macOS: exit configure with an error when needed.
  - Fix libusb config descriptor leak.
  - Fix leaking an allocated bundle in case no matching reader was found.
  - InterruptStop(): Log the libusb text instead of number.
  - InterruptRead(): revert change.
- Enable ICC extended APDU for ACR1281U-C1 >= v526.
- Add IOCTL_SMARTCARD_TOGGLE_CARD_STATE for SAM slot.

v1.1.5 (23/10/2017)
- Add the following readers support:
  ACR1252IMP 1S CL Reader
  AMR220 Reader
  APG8201-B2
- Merge with ccid 1.4.26.
  - Fix spelling in log message.
  - PowerOn: use automatic voltage selection when needed.
  - PowerOn: move from 1.8V to 5V if 1.8V is not supported.
  - PowerOn: always try every possible voltage values.
  - PowerOn: default value comes from Info.plist.
  - MacOSX/configure: remove reference to libusbx.
  - MacOSX/configure: check static libusb will be used.
  - MacOSX/configure: move definition of MAC_VERSION.
  - ifdhandler: only GetNewReaderIndex() has to be thread protected.
  - FreeChannel(): release reader_index only after use.
- Fix ACR39U memory card problem in IFDHSetProtocolParameters().
- Use CHECK_STATUS macro to check read/write status in acr38cmd.c.
- Try 10 times to warm up the reader in CreateChannelByNameOrChannel().
- Merge with ccid 1.4.27.
  - InterruptRead(): return a valid IFDHandler code.
  - ccid_usb.c: document CCID composite devices.
  - Makefile.am: do not display udev message in red.
  - OpenUSBByName(): the device bus & addr must match.
  - CmdEscapeCheck(): signals buffer overflow.
  - OpenUSBByName(): simplify USE_COMPOSITE_AS_MULTISLOT code.
  - configure.ac: fix error message for SCardEstablishContext.
- Return IFD_ERROR_INSUFFICIENT_BUFFER in IFDHControl().
- Rename ACR3901U ICC Reader to ACR3901 ICC Reader.
- Merge with ccid 1.4.28.
  - udev rule: allow rule overwrite.
  - Makefile: add support of spaces in DESTDIR.
- Process IOCTL_FEATURE_IFD_DISPLAY_PROPERTIES in IFDHControl().
- Process FEATURE_IFD_DISPLAY_PROPERTIES in process_spe_ppdu().
- Process IOCTL_FEATURE_GET_KEY in IFDHControl().
- Process FEATURE_GET_KEY in process_spe_ppdu().
- Process IOCTL_FEATURE_WRITE_DISPLAY in IFDHControl().
- Process FEATURE_WRITE_DISPLAY in process_spe_ppdu().
- Check for iconv.
- Enable specific I/O controls for APG8201-B2 in IFDHControl().

v1.1.4 (7/12/2016)
- Add the following readers support:
  ACR1261 CL Reader
  ACR1311 PICC Reader
  ACR1281 Dual Reader (ACR1281U-C2 UID Reader)
- Merge with ccid 1.4.25.
  - Import src/misc.h.
  - log_msg(): log up to 3 lines of 80 characters.
  - Fix spelling error in a log message.
  - Add missing openct/README in distribution.
  - CmdXfrBlockCHAR_T0: returns an error when needed.
  - create_Info_plist.pl: fix typos in comment.
  - Remove extra spaces.
- Fix incorrect message length for APG8201 v008I.

v1.1.3 (22/6/2016)
- Add the following readers support:
  ACR39U ID1 Card Reader
  ACR1251 CL Reader (ACM1251U-Z2)
- Break if the device was disconnected in Multi_PollingProc().
- Merge with ccid 1.4.23.
  - MacOSX/configure: exit in error if configure failed.
  - InterruptRead(): log libusb error name.
  - Remove support of DRIVER_OPTION_RESET_ON_CLOSE.
  - Update URL in a comment.
  - ccid_usb.c: improve close_libusb_if_needed().
  - Fix a busy loop consuming 100% of CPU.
- Merge with ccid 1.4.15.
  - get_end_points(): be more strict for bInterfaceClass = 255.
- Add control codes for Windows compatibility.
- Merge with ccid 1.4.24.
  - ccid_usb.c: fix a race condition on multi reader.
  - CreateChannel: allow to use a non default timeout.
  - IFDHGetCapabilities: fix SCARD_ATTR_VENDOR_IFD_SERIAL_NO size.
- Fix a race condition in CardDetectionThread().
- Avoid libusb timeout on Mac OS X in CreateChannelByNameOrChannel().
- Fix random order of interfaces in OpenUSBByName().

v1.1.2 (18/2/2016)
- Return the second version in ACR83_GetFirmwareVersion().
- Disable SetParameters for OEM Reader (VID: 072F, PID: 8205) v029Z in
  ccid_open_hack_post().
- Merge with ccid 1.4.22.
  - Comments: Remove the $Id$ tag.
  - Move max() definition in a header file.
  - IFDHTransmitToICC: Reuse ccid_descriptor.
  - OpenUSBByName(): use device bus and address only when available.
  - IFDHCloseChannel(): use FreeChannel().
  - CreateChannelByNameOrChannel(): call FreeChannel() in case of error.
  - OpenUSBByName(): do not call close_libusb_if_needed().
  - OpenUSBByName(): read Info.plist only once.
  - OpenUSBByName(): add some low level debug.
  - OpenUSBByName(): fix possible use of uninitialized variable.

v1.1.1 (3/11/2015)
- Fix the mutex lock problem in Multi_InterruptRead().
- Fix uninitialized variable warning in ACR38_CmdPowerOn().
- Fix APDU sequence bug in ACR122U.
- Merge with ccid 1.4.19.
  - Use libusb_error_name() instead of strerror().
  - Ignore errno and use libusb returned value only.
  - IFDHSleep(): timout parameter is in ms not µs.
  - Enable syslog logging on Yosemite.
- Merge with ccid 1.4.20.
  - MacOSX/configure: use /usr/local/libexec/... on El Capitan.
- Merge with ccid 1.4.21.
  - Use libusb_error_name() to display the error name.
  - OpenUSBByName(): add more time on Mac OS X.
  - OpenUSBByName(): fix the order of interfaces in log.
  - OpenUSBByName(): free the device list in case of error.
  - Info.plist: use hex values in the documentation.
- Replace ccid_error() with acr38_error() in ACR38_Receive().
- Update LIBUSB_NEEDED_VERSION to 1.0.9 in configure.ac.
- Return IFD_ERROR_INSUFFICIENT_BUFFER if rx_length < 2 in CCID_Receive().
- Return 64 02 if two "new PIN" entries do not match in CCID_Receive().
- Implements SPE pseudo APDU from PC/SC v2.02.02 Part 10 Supplement.
- Enable bPPDUSupport over SCardTransmit in IFDHControl().
- Return 6B 80 if the parameter is invalid in SecurePINVerify().
- Return 6B 80 if the parameter is invalid in SecurePINModify().
- Fix segmentation fault on Mac OS X in CardDetectionThread().
- Break if the device was disconnected in CardDetectionThread().
- Use pthread_exit() in CardDetectionThread().
- Add the following readers support:
  ACR1251 Reader
  ACR3201 ICC Reader
  OEM Reader (VID: 072F, PID: 8205)

v1.1.0 (10/12/2014)
- Add the following readers support:
  ACR1255U-J1 PICC Reader
- Fix the PICC detection problem in ACR1281 2S CL Reader.
- Merge with ccid 1.4.18.
  - Fix the memory leak in Multi_PollingProc().
- Fix the compilation warnings.

v1.0.8 (3/7/2014)
- Add the following readers support:
  ACS ACR1252U BADANAMU MAGIC READER
  ACS ACR1261 1S Dual Reader
- Change the delay of cold reset to 10 ms.
- Remove the checking of specific mode before setting the parameters.

v1.0.7 (16/6/2014)
- Fix ACR39U card power on problem.
- Add the following readers support:
  ACR1251 1S Dual Reader
  CryptoMate (T1)
  CryptoMate (T2)
- Remove ChangeLog from DISTCLEANFILES.

v1.0.6 (17/4/2014)
- Add the following readers support:
  ACR32 ICC Reader
  ACR1251K Dual Reader
  ACR1252 1S CL Reader
  ACR1252 CL Reader
  ACR1252 USB FW_Upgrade v100
  ACR1256U PICC Reader
- Fix ACR32 incorrect max slot index.
- Get the data rates if bNumDataRatesSupported is not equal to zero.
- Merge the fixes from ccid:
  Use ATTRS{bInterfaceClass}=="0b" in src/pcscd_acsccid.rules.
  Fix the buffer overflow in ATR_InitFromArray().
  Fix the T1 resync problem.

v1.0.5 (2/9/2013)
- Fix a bug that ACR38U cannot select the card type reading from Info.plist on
  Linux x64 platform.
- Fix a bug that ACR1222U-C1 and ACR39U cannot detect the card.
- Fix a bug that the driver cannot start the debug mode on Mac OS X 10.8.
- Import udev rules from ccid-1.4.12 to remove pcscd group support.
- Add the following readers support:
  ACR3901U ICC Reader
  ACR123 3S Reader
  ACR123 PICC Reader
  ACR123US_BL
  ACR1251U-C Smart Card Reader (SAM)
  ACR1251U-C Smart Card Reader
  ACR1281U-K PICC Reader
  ACR1281U-K Dual Reader
  ACR1281U-K 1S Dual Reader
  ACR1281U-K 4S Dual Reader

v1.0.4 (15/6/2012)
- Add the following readers support:
  ACR39U ICC Reader
  ACR39K ICC Reader
  ACR39T ICC Reader
  ACR39F ICC Reader
  ACR39U-SAM ICC Reader
  ACR1251 1S CL Reader
  ACR1251 CL Reader
  OEM Reader (VID: 072F, PID: 222D)
  ACR1283 4S CL Reader
  ACR1283 CL Reader
  ACR1283U FW Upgrade
- Fix a bug that only the first slot of reader (composite device) can be used if
  pcsc-lite is compiled with libudev support.
- Fix a bug that APG8201 causes segmentation fault with pcsc-lite 1.8.2.
- Fix a bug that the SAM slot support is not enabled for ACR1281 1S PICC Reader
  if the configure option "--enable-composite-as-multislot" is not used.
- Enable silent build and disable static library creation.
- Remove symbolic link creation.
- Fix a bug that pcscd causes segmentation fault on Mac OS X after unloading the
  driver.
- Display default message for ACR83U.

v1.0.3 (13/1/2012)
- Add the following readers support:
  ACR1281 PICC Reader (qPBOC)
  ACR1281 1S Dual Reader
  ACR1281 2S CL Reader
  ACR33 ICC Reader
  ACR1281 1S PICC Reader
  ACR38U
  ACR38U-SAM
  OEM Reader (VID: 072F, PID: 90CE)
  CryptoMate
  OEM Reader (VID: 072F, PID: 8202)
  ACR1222 1SAM PICC Reader (ACR1222U-C1)
  ACR1222 1SAM PICC Reader (ACR1222U-C8)
  ACR89 ICC Reader
  ACR89 Dual Reader
  ACR89 FP Reader
  AET62 PICC Reader
  AET62 1SAM PICC Reader
  AET65 ICC Reader
  AET65 1SAM ICC Reader
  CryptoMate64
- Import udev rules from ccid-1.4.3 to support pcscd auto-start.
- Fix reader hang problem by checking card status of ACR85 PICC before
  exchanging APDU.
- Correct the code that enabling polling mode is applied to ACR122U only and
  not all ACS readers.
- Fix a problem that the optimal baud rate is not selected properly in
  IFDHSetProtocolParameters().
- Perform cold reset and try default Fl/Dl (0x11) if PPS_Exchange() or
  SetParameters() is failed in IFDHSetProtocolParameters().
- Protocol parameters will not be set in IFDHSetProtocolParameters() if card is
  specific mode.
- Correct the value of CCID features and maximum data rate of ACR88U and
  ACR128U.
- Add BSI miscellaneous command to return driver version for ACR1281 BSI
  readers.
- Correct the value of CCID features and maximum data rate of ACR1281 1S Dual
  Reader.
- Fix problem using pcsc-lite 1.7.3 or later header files.
- Add SCARD_CTL_CODE(2079) support for sending escape command to ACR1222,
  ACR128 and ACR1281 readers.
- Add firmware version check for ACR85.
- Change PID of ACR33 ICC reader from 0x8306 to 0x8307 because 0x8306 is used
  by ACR85 ICC.
- Check if the card supports the selected protocol before setting protocol in
  IFDHSetProtocolParameters() and return IFD_ERROR_PTS_FAILURE if the card does
  not support the selected protocol. On Mac OS X 10.6, pcscd will select wrong
  protocol if Starcos 3.2 card is inserted.
- Rename "ACR1222L 3S CL Reader" to "ACR1222 3S PICC Reader".
- Rename "ACR33 ICC Reader" to "ACS ACR33U-A1 3SAM ICC Reader",
  "ACS ACR33U-A2 3SAM ICC Reader", "ACS ACR33U-A3 3SAM ICC Reader" and
  "ACS ACR33U 4SAM ICC Reader".
- Fix incorrect max slot index for ACR1222U-C1.
- Enable SAM slot support.
- Fix connection problem by setting default supported protocol to T=0 in
  IFDHSetProtocolParameters() if the card does not support any protocol.
- Add SCARD_ATTR_ICC_INTERFACE_STATUS and SCARD_ATTR_ICC_PRESENCE support in
  IFDHGetCapabilities() (import from ccid-1.4.5).
- Fix problem on getting IFSC from ATR (import from ccid-1.4.5).
- Support extended APDU of up to 64kB with APDU readers
  (import from ccid-1.4.5).
- Change CmdPowerOn() read timeout in IFDHPowerICC() from 4 seconds to 10
  seconds.

v1.0.2 (16/3/2011)
- Add the following readers support:
  ACR125 nPA plus
  ACR1281 PICC Reader (BSI)
  ACR1281 Dual Reader (qPBOC)
  ACR1222 Dual Reader
  ACR1222 1SAM Dual Reader
  ACR83U
  ACR85 PINPad Reader
  APG8201
  ACR100 ICC Reader
  ACR101 ICC Reader
  ACR102 ICC Reader
  ACR1222L 3S CL Reader
  ACR1281 CL Reader (qPBOC)
  ACR1281 Dual Reader (BSI)
  ACR3801
- Do not use separate thread to poll the slot ICC status due to poor
  performance of libusb v0.1.12.
- Enable polling mode automatically for ACR122U v2.06.
- Import Mac OS X 10.6 configure script from ccid-1.3.12.
- Secure PIN Entry (SPE) support for ACR83U requires firmware version 4500 or
  later.
- Add SCARD_CTL_CODE(3500) support for sending CCID escape command.
- Add the following readers support:
- Fix a bug that APG8201 and ACR85 cannot receive command properly if command
  length is greater than 64 bytes.
- Set infinite timeout in T=0, Short APDU and Extended APDU exchange.
- Simulate ACR1281 Dual Reader (composite device) as multi-slot reader.
- Improve performance and stability for ACR122U v2.00 - v2.04.
- Replace acx_pthread.m4 with ax_pthread.m4 from autoconf archive.
- Add the following driver options and these options are enabled by default:
  DRIVER_OPTION_REMOVE_PUPI_FROM_ATR
      Remove PUPI from ATR if ISO 14443-B card is detected (ACR1222).
  DRIVER_OPTION_DISABLE_PICC
      Disable PICC if ICC is inserted (ACR1222).
- Add DRIVER_OPTION_REMOVE_PUPI_FROM_ATR and DRIVER_OPTION_DISABLE_PICC driver
  options to ACR85.
- Simulate ACR85 as multi-slot reader. The first slot is ICC and the second
  slot is PICC.
- Add firmware version check for ACR1222. The driver options are for ACR1222
  v401 only.
- Fix reader hang problem by checking card status of ACR85 PICC if SW1SW2
  "63 00" is received.

v1.0.1 (9/11/2009)
- Remove firmware version check.
- Modify the driver to use separate thread to poll the slot ICC states from
  interrupt endpoint.

v1.0.0 (14/10/2009)
- New release.
- Based on ccid-1.3.11 (http://pcsclite.alioth.debian.org/ccid.html).
- Change CmdPowerOn() read timeout in IFDHPowerICC() from 60 seconds to 4
  seconds.
- Import Mac OS X 10.5 configure script from ccid-1.3.11.
- Update AUTHORS and COPYING files.
- Disable interrupt read in ccid_open_hack_pre() for all readers. It will cause
  the driver hang in ACR88U and ACR128U readers on Mac OS X.
- There is a pcscd problem supporting multi-slot readers on Mac OS X. It will
  create duplicate reader name for each slot. ACR88U and ACR128U readers are
  affected by this bug. For more information, please refer to
  http://www.opensc-project.org/sca/wiki/LeopardBugs.
- Test the driver on Mac OS X 10.6.



Support
-------

In case of problem, please contact ACS through:

Web Site: http://www.acs.com.hk/
E-mail: info@acs.com.hk
Tel: +852 2796 7873
Fax: +852 2796 1286



-------------------------------------------------------------------------------
Copyright (C) 2009-2024 Advanced Card Systems Ltd.
Copyright (C) 2003-2011 Ludovic Rousseau
Copyright (C) 2000-2001 Carlos Prados
Copyright (C) 2003 Olaf Kirch
Copyright (C) 1999-2002 Matthias Bruestle

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

About

acsccid is a PC/SC driver for Linux/Mac OS X and it supports ACS CCID smart card readers. This library provides a PC/SC IFD handler implementation and communicates with the readers through the PC/SC Lite resource manager (pcscd).

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages