Modification Example 1 ......................36 12.10. Modification Example 2 ......................38 12.11. Modification Example 3 ......................40 12.12. Modification Example 4 ......................42 12.13. Modification Example 5 ......................45 Page 2 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Page 3
Appendix D. Sample Code (PC/SC 2.0 Part 10) ............52 Appendix E. Set bKeyReturnCondition ................. 60 Appendix F. Response Error Codes ................61 List of Figures Figure 1 : PIN Verification and Modification Operation Flowchart ............22 Page 3 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
(for example, a PC) and a smart card. Different types of smart cards have different commands and communication protocols, and the ACR83 PINeasy establishes a uniform interface from the computer to the smart card for a wide variety of cards.
(TA2 present; bit b5 of TA2 must be 0) and when that the particular mode is not supported by the ACR83 PINeasy, the reader will reset the card to a negotiable mode. If the card cannot be set to negotiable mode, the reader will then reject the card.
4.0. Smart Card Interface ACR83 PINeasy Smart Card Reader has a 14-key keypad and LCD display consisting of 2 rows with 16 characters dot matrix. 4.1. Smart Card Power Supply VCC (C1) The current consumption of the inserted card must not be higher than 100 mA.
The ACR83 (CCID) requires a voltage of 5 V DC, 100 mA regulated power supply. The ACR83 (CCID) gets the power from PC through the cable supplied along with each type of reader. Page 8 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Reference voltage level for power supply Table 1: USB Interface Wiring Note: ACR83 PINeasy is a PC/SC Device. In order for the ACR83 (CCID) to function properly through USB interface, an ACS PC/SC driver has to be installed. Please refer to the Device Driver Installation Guide for more details.
Does not support manual setting bNumDataRatesSupported of data rates Maximum IFSD supported by dwMaxIFSD 00000Feh ACR83 (CCID) for protocol T=1 is 254 ACR83 (CCID) does not support dwSynchProtocols 00000000h synchronous card Page 10 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Page 11
Insignificant for TPDU level bClassGetResponse exchanges Insignificant for TPDU level bClassEnvelope exchanges wLCDLayout 0000h No LCD bPINSupport No PIN Verification Only one slot can be bMaxCCIDBusySlots simultaneously busy Page 11 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
#define CM_IOCTL_GET_FEATURE_REQUEST SCARD_CTL_CODE(3400) Note: Data is stored in little-endian form in which the LSB (Least Significant Byte) is first. Furthermore, SCardControl command must be declared in the source code. Page 12 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
XX XX XX XXh is the control code for the feature. nOutBufferSize sizeof(ULONG) of IpOutBuffer lpBytesReturned pointer to a DWORD that receives the size, in bytes, of the data stored into the buffer pointed to by lpOutBuffer Page 13 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
T=1 I-block prologue field to use bTeoPrologue 000000h (fill with 00h) Length of data to be sent to the ulDataLength abData Data to send to the ICC nInBufferSize 19 + uLDataLength IpOutBuffer Page 14 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Page 15
SW1SW2: Result from the card nOutBufferSize IpBytesReturned Pointer to a DWORD that receives the size, in bytes, of the data stored into the buffer pointed to by IpOutBuffer. Page 15 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
If 0 = No current PIN entry requested. (In this case, the bInsertinoOffsetOld value must not be taken into account.) If 1 = Current PIN entry requested b2 – b7: RFU Page 16 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Page 17
SW1SW2: Result from the card nOutBufferSize lpBytesReturned Pointer to a DWORD that receives the size, in bytes, of the data stored into the buffer pointed to by lpOutBuffer. Page 17 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
1 = IFD distinguishes bTimeOut from bTimeOut2 nOutBufferSize lpBytesReturned Pointer to a DWORD that receives the size, in bytes, of the data stored into the buffer pointed to by lpOutBuffer. Page 18 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Shift lpOutBuffer[4] by 8 bits Set OR operation with the shifted lpOutBuffer[4] and lpOutBuffer[5] value Input: hCard Reference value returned from SCardConnect dwControlCode IOCTL_SMARTCARD_GET_FIRMWARE_VERSION Output: lpOutBuffer Output value of command Page 19 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
IOCTL_SMARTCARD_READ_KEY The IOCTL_SMARTCARD_READ_KEY enables Read Key command. Input: hCard Reference value returned from SCardConnect dwControlCode IOCTL_SMARTCARD_READ_KEY lpInBuffer Set value for Display LCD message option nInBufferSize sizeof(ULONG) of lpInBuffer Page 20 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Page 21
Offset Field Size Value Description 0000h SUCCESS abStatus 0001h BAD_PARAMETER Maximum size reached Key [E] pressed bKeyReturnCondition Timeout occurred Key [C] pressed abNumericInputKeys 0-32 Page 21 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
In ACR83, only Verify PIN Direct, Modify PIN Direct and IFD PIN Properties are supported. To use these features, you can get the control codes from the list. For more information, please refer to PC/SC 2.0 Specification Part 10. Page 22 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
The Modes setting is based on CCID abPINOperationDataStructure. For more information, please refer to CCID specification 6.1.11.1. bPINOperation: 00h: PIN Verification 01h: PIN Modification Any other values will not be supported by ACR83. Page 23 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
XX: (SpePinMin) Minimum PIN Size YY: (SpePinMax) Maximum PIN Size bNumberMessage: 00h: No message display in LCD 01h: Display one message: LCD will display “Enter PIN:” FFh: Default value equal to 01h Page 24 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
SpePinMin must be equal or larger than 1 Verification system unit is byte. Command Header Offset SpePINPos SpePINLen APDU Command APDU Offset SpePINPos Header Length Offset Not used CLA INS P1 P2 SpePINSize SpePINLenPos field Page 25 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
After Lc (09h), the first 1 byte 57h is control character. bmFormatString = 89h SpePinPos = 1 byte because bmFormatString bit 7 = 1 SpeLeftRight = Left SpePINTyp = BCD bmPINBlockString = 48h Page 29 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Bit4: 0: indicates if the SpePINLenPos is in bit or byte unit bInsertionOffsetOld (SpeOffsetOld): insertion position offset in byte for the current PIN bInsertionOffsetNew (SpeOffsetNew): insertion position offset in byte for the new PIN Page 32 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
System unit is bit. APDU Command SpeOffsetNew SpePINLen APDU APDU Header Maybe not Offset SpePINPos Not used Offset CLA INS P1 P2 Exists SpePINSize field/Does not SpePINLenPos exist Page 33 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
System unit is bit. APDU Command SpeOffsetOld SpePINLen APDU APDU Maybe not Offset SpePINPos Old PIN Header CLA INS Offset Not used Exist SpePINSize Old PIN P1 P2 SpePINLenPos field Page 34 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
CLA INS P1 P2 Exist SpePINSize Old PIN SpePINLenPos field SpeOffsetNew Offset SpePINPos SpePINLen Maybe not Offset SpePINPos New PIN Offset Exists SpePINSize Not used field New PIN SpePINLenPos Page 35 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
= 00h (if bConfirmPIN = 00h, the bNumberMessage must equal to 01h, 00h) Enter the New PIN once. bmFormatString = 39h SpePinPos = 7 bits because bmFormatString bit 7 = 0 SpeLeftRight = Left SpePINTyp = BCD Page 36 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
1. Lc must be equal to SpePINLen + SpePINPos + SpeOffsetNew 2. SpePINPos must be equal or larger than SpePINLenPos + SpePINSize 3. SpePINLen – SpePINPos must be larger or equal to SpePinMax (if BCD, need multiple 4) Page 40 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
System unit is bit. APDU Command SpeOffsetOld SpePINLen APDU APDU Header Maybe not Offset SpePINPos Old PIN Offset Not used SpePINSize CLA INS P1 P2 Exists Old PIN SpePINLenPos field Page 42 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Input 10 digits New PIN relative to Lc 00=00000011 1010 (bits) New PIN 00001010 (1010 replace original 00000011) New PIN First, handle the old PIN. Old PIN (Byte) Page 44 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
SpePINLen – SpePINPos must be larger or equal to SpePinMax (if BCD, need multiple 4) • SpePinMax must be equal or larger than SpePinMin • SpePinMax cannot be larger than 16 digits because LCD one row only have 16 digits Page 45 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Bit mask for the PIN justification: Bit 2 If 0h: Left justify data If 1h: Right justify data Bit wise for the PIN format type: 00h: binary Bit 1-0 01h: BCD 10h: ASCII Page 49 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
APDU command) PIN length information: PIN block size in bytes after justification and Bit 3 - 0 formatting Page 50 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
If 1h: the system units are bytes Indicates the PIN length position in the APDU command according to Bit 3 - 0 the previous parameters (maximum 1111 for 15 system units) Page 51 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
// Advance to the next value pReader = pReader + strlen(pReader) + 1; numReaders++; // Allocate reader name readerName = new char*[numReaders]; if (readerName == NULL) printf("Error: not enough memory\n"); Page 53 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
= 0; len = 0; if (dwNumBytesReturned >= 4) len = dwNumBytesReturned - 3; memcpy(keyString, bOutputBuffer + 3, len); // Set the last NULL character keyString[len] = '\0'; Page 58 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
If ACR83 device KEY_C is pressed If ACR83 device KEY_BACK is pressed If ACR83 device KEY_FN is pressed Note: Set value to an OR Operation again the specific OR Operand. Page 60 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
BAD_PARAMETER 0083h SLOTERROR_LCDCOMMANDERROR 0084h SLOTERROR_WRONGCONFIRMPIN 0085h SLOTERROR_UNKNOWN_LCD 0086h SLOTERROR_MAXPINSIZE_EQUAL_ZERO 00EFh SLOTERROR_PIN_CANCELLED 00F0h SLOTERROR_PIN_TIMEOUT Microsoft is a registered trademark of Microsoft Corporation in the United States and/or other countries. Page 61 of 61 ACR83 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.06...
Need help?
Do you have a question about the ACR83 PINeasy and is the answer not in the manual?
Questions and answers