Enum Class PcscCardCommunicationProtocol

java.lang.Object
java.lang.Enum<PcscCardCommunicationProtocol>
org.eclipse.keyple.plugin.pcsc.PcscCardCommunicationProtocol
All Implemented Interfaces:
Serializable, Comparable<PcscCardCommunicationProtocol>, Constable

public enum PcscCardCommunicationProtocol extends Enum<PcscCardCommunicationProtocol>
List of contactless protocols and technologies identifiable through PC/SC readers.

Each enum value associates a protocol or technology with a specific ATR pattern. These patterns follow the PC/SC standard Part 3 for contactless card identification.

The ATR patterns can identify both physical cards and virtual cards emulated by NFC devices.

See PC/SC Workgroup for more details.

Since:
2.5.0
  • Enum Constant Details

    • ISO_14443_4

      public static final PcscCardCommunicationProtocol ISO_14443_4
      Any ISO 14443-4 compliant card or device (both Type A and Type B).

      According to PC/SC specifications, ISO 14443-4 contactless cards have a specific ATR structure:

      • TS (Initial character): 0x3B - Direct convention
      • T0 (Format character): 0x8X - Where X varies based on the number of historical bytes
      • TD1: 0x80 - Indicates protocol T=0 at first level and presence of TD2
      • TD2: 0x01 - Indicates final protocol T=1

      This structure allows for recognition of both Type A and Type B ISO 14443-4 cards, regardless of the number of historical bytes they contain.

      Excludes Innovatron B Prime cards which have their own specific category.

      Default rule = 3B8.8001(?!.*5A0A).*

      Since:
      2.5.0
    • INNOVATRON_B_PRIME

      public static final PcscCardCommunicationProtocol INNOVATRON_B_PRIME
      Calypso cards using Innovatron B Prime protocol.

      According to PC/SC Part 3, B Prime cards use a specific ATR format:

      • Starting with 3B8 followed by any hex digit - Indicating direct convention with a variable number of historical bytes
      • Followed by 8001 - Indicating TD1=0x80 and TD2=0x01 (protocol T=1)
      • Followed immediately by the specific B Prime signature 5A0A in the first historical bytes

      Default rule = 3B8.8001(80)?5A0A.*

      Since:
      2.5.0
    • MIFARE_ULTRALIGHT

      public static final PcscCardCommunicationProtocol MIFARE_ULTRALIGHT
      NXP MIFARE Ultralight technologies.

      According to PC/SC Part 3 Supplemental Document:

      • Initial bytes: 3B8F8001804F0CA0000003
      • Card protocol: 0603 (ISO 14443 A part 3)
      • Card type: 0003 (for Mifare UL)

      Default rule = 3B8F8001804F0CA0000003060300030.*

      Since:
      2.5.0
    • ST25_SRT512

      public static final PcscCardCommunicationProtocol ST25_SRT512
      STMicroelectronics ST25/SRT512 memory tags.

      According to PC/SC Part 3 Supplemental Document:

      • Initial bytes: 3B8F8001804F0CA0000003
      • Card protocol: 0605, 0606, 0607 (ISO 14443 B part 1/2/3)
      • Card type: 0007 (ST25 tag)

      Default rule = 3B8F8001804F0CA0000003060(5|6|7)0007.*

      Since:
      2.5.0
    • ISO_7816_3

      public static final PcscCardCommunicationProtocol ISO_7816_3
      ISO 7816-3 Card (contact communication protocol)

      Default rule = 3.*

      Since:
      2.5.0
  • Method Details

    • values

      public static PcscCardCommunicationProtocol[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static PcscCardCommunicationProtocol valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null