Host Interfaces USB CCID (PCSC)
March 13, 2024 at 8:08 AMCCID (PC/SC) over USB
Overview
A SpringCore USB-attached device running in PC/SC Mode implements the USB CCID specification.
According to the PC/SC specification, the operating system shall then provide a complete PC/SC stack and run a PC/SC USB driver for this device.
Operating systems officially supporting PC/SC
Operating system | PC/SC stack | PC/SC USB driver |
---|---|---|
Microsoft Windows | Supplied by the OS | SpringCard SDD480 |
Linux | PC/SC Lite (open source) | PC/SC Lite CCID driver (open source) |
Apple Mac OS | Fork of PC/SC Lite | Fork of PC/SC Lite CCID driver |
Operating systems not supporting PC/SC
Operating system | Alternative to PC/SC |
---|---|
Android | SpringCard Companion Service (CCID implementation on top of Android’s USB Host API) |
Apple iOS | None currently available (USB Host API not available out of MFI logo program) |
USB endpoints
The SpringCore device’s PC/SC interface uses the following endpoints to communicate with the host computer:
Endpoint | Purpose | Size | Protocol |
---|---|---|---|
Control | Initial setup | ||
BulkOut | PC to RDR commands | 64B | See paragraph CCID_PC_To_RDR below |
BulkIn | RDR to PC responses | 64B | See paragraph CCID_RDR_To_PC below |
InterruptIn | RDR to PC notification of card(s) insertion/removal | 8B | See paragraph CCID_Interrupts below |
CCID_PC_To_RDR (BulkOut)
Communication over the BulkOut endpoint is fully specified in the USB CCID specification.
It contains a 10-byte CCID header, optionally followed by a payload (up to 64kB).
Format of the message
Bytes | Content |
---|---|
0-9 | Header |
10-N | Payload |
Header
Byte | Content |
---|---|
0 | Command code, see table in the CCID protocol chapter. |
1-4 | Length of payload, LSB-first |
5 | Slot number |
6 | Sequence number |
7-9 | Command parameters |
CCID_RDR_To_PC (BulkIn)
Communication over the BulkIn endpoint is fully specified in the USB CCID specification.
It contains a 10-byte CCID header, optionally followed by a payload (up to 64kB).
Format of the message
Bytes | Content |
---|---|
0-9 | Header |
10-N | Payload |
Header
Byte | Content |
---|---|
0 | Response code. See table in the CCID protocol chapter. |
1-4 | Length of payload, LSB-first |
5 | Slot number |
6 | Sequence number |
7 | Slot status |
8 | Slot error |
9 | RFU |