Smart Reader Operation NFC Templates Google SmartTap
June 7, 2024 at 6:27 AMGoogle SmartTap Template
Optional, restricted functionality - Confidential information
This functionality is available only for customers who have signed a specific license agreement, and its documentation can be provided only to customers who are under NDA with SpringCard and/or with the owner of the technology.
Please contact SpringCard Sales Team for detailed information and pricing options.
Description
Read data from an Android mobile phone using the Google SmartTap protocol.
Remark
When configuring the Google SmartTap template in the Smart Reader, always activate both NFC-A and NFC-B protocol, and activate EMV compliance in the “NFC/RFID HF compliance in poller mode” configuration register.
The SpringCore firmware is only suitable to read Google SmartTap data, not to run Google Pay transactions. SpringCore devices are not payment terminals.
Registers
This Template uses 7 configuration registers:
Alias | Offset | Name | Description |
---|---|---|---|
LKL | 0 |
Lookup List | Set to D2 to use this Template |
COLLECTORID | 3 |
Collector ID | Collector ID of merchant system. |
KEYVERSION | 4 |
Long Term Key Version | Version of the private key. |
PRIVATEKEY | 5 |
Long Term Private Key | See details below |
TOF | 1 |
Output Size and Format | See details below |
OPT | 4 |
Options | Template-specific Options |
PFX | 2 |
Prefix | Template-specific Prefix |
COLLECTORID - Collector ID
Offset : 3
Size : 4
KEYVERSION - Long Term Key Version
Offset : 4
Size : 4
PRIVATEKEY - Long Term Private Key
Offset : 5
Size : 32
Byte 0 : Key slot in the internal ATECC
Condition : If the size of the register is 1, this Byte stores the ATECC key slot.
Bytes 0-31 : Value of ECC Private Key
Condition : If the size of the register is 32, these Bytes store the actual private key.
TOF - Output Size and Format
Offset : 1
Size : 2
Byte 0 : RAW Mode
Condition : When RAW Mode is selected (Bit 6 in Byte 0 is 0
)
Bit | Role | Values |
---|---|---|
7 | Invert Data? | 0 : Transmit the sequence of bytes as is1 : Transmit the sequence of bytes in reverse order |
6 | Mode | 0 : RAW Mode (Data is a numerical value)1 : String Mode (Data is an ASCII string) |
5 | Padding if Data is shorted than specified length | 0 : Padd with 0 on the left1 : Padd with F on the right |
4 | Remove leading zeroes? | 0 : Keep all digits1 : Suppress 0 digits on the left of the Data |
3-0 | Length and Format | 0 : Decimal, 10 digits (truncation on 4-B)1 : Raw (hex), 4 bytes (32 bits)2 : Raw (hex), 8 bytes (64 bits)3 : Raw (hex), 5 bytes (40 bits)4 : Raw (hex), 10 bytes (80 bits)5 : Raw (hex), 7 bytes (56 bits)6 : Raw (hex), 11 bytes (88 bits)7 : RFU8 : Raw (hex), 16 bytes (128 bits)9 : Raw (hex), 20 bytes (160 bits)10 : Raw (hex), 24 bytes (196 bits)11 : Raw (hex), 32 bytes (256 bits)12 : Decimal, 12 digits (truncation on 5-B)13 : Decimal, 13 digits (truncation on 5-B)14 : Decimal, variable length15 : Raw (hex), variable length |
Byte 0 : String Mode
Condition : When String Mode is selected (Bit 6 in Byte 0 is 1
)
Bit | Role | Values |
---|---|---|
7 | Invert Data? | 0 : Transmit the sequence of characters as is1 : Transmit the sequence of characters in reverse order |
6 | Mode | 0 : RAW Mode (Data is a numerical value)1 : String Mode (Data is an ASCII string) |
5 | Padding if Data is shorted than specified length | 0 : Variable length (no padding)1 : Padd with (space characters) on the right until the specified length |
4 | Short string or Long string? | 0 : Short string (truncate to 16 characters or less)1 : Long string (more than 16 characters) |
3-0 | Length | 0 : 16 characters1 : 1 character2 : 2 characters3 : 3 characters4 : 4 characters5 : 5 characters6 : 6 characters7 : 7 characters8 : 8 characters9 : 9 characters10 : 10 characters11 : 11 characters12 : 12 characters13 : 13 characters14 : 14 characters15 : 15 characters |
Byte 1 : Options for Long String
Condition : When Long String Mode is selected (Bit 6 in Byte 0 is 1
and Bit 4 is 1
)
Use this byte to specify the exact length to read from the card. Valid range is 1
to 255
.
OPT - Options
Offset : 4
Size : 1
If this register is set, the Reader adds a token to its output to tell the receiver what kind of credential has been read.
Bit | Role | Values |
---|---|---|
7-4 | RFU | |
3-2 | Position of the Card Type Token | 0 : Before the Prefix1 : After the Prefix, before the Data2 : After the Data (before the Suffix)3 : RFU |
1-0 | Add a Card Type Token to the output stream? | 0 : Do not add a Card Type Token1 : Add D2 hex value as Card Type Token2 : Add g char as Card Type Token3 : RFU |
PFX - Prefix
Offset : 2
Size : 8
A Template-specific Prefix, that is added after the Reader’s global Prefix.
Remark : Use \t
for a Tab, \n
for Enter, \b
for Back space, \v
for Vertical space.