Interoperability & compliance of Keyple-based ticketing terminal solutions

In order to guarantee interoperability between smart cards and terminals, the ‘Calypso Networks Association’ (CNA) encourages ticketing operators to follow various specifications and certification processes.

Contactless reader communication protocol

For compliance with the contactless reader communication protocol, CNA supports the certification programme standardised by the ‘Smart Ticketing Alliance’ (STA) for ‘Public Transport Readers’ (PT Readers). Several test laboratories are approved for ‘Proximity Coupling Device’ (PCD) certification under the supervision of the ‘Certification Body’ Paycert.

Separation and functional logic of the various software layers

To guarantee the functional capability of the ticketing terminals, CNA has proposed a software architecture with a distribution of responsibilities per layer, and has defined dedicated functional requirements for each software layer.

Reader software layer

For terminals integrating contactless and/or contact readers, the Keyple’s ‘Core’ libraries have been designed to meet the terminal requirements for the reader layer. 2 conditions must be met to guarantee « complete » compliance with the requirements of the reader layer:

Pending the future certification programme for reader layer libraries, CNA plans to publish the self-declarations of conformity of the Keyple Core libraries for reader solutions interfaced with PC/SC and Android NFC plugins.

Properties of PC/SC and NFC reader solutions

ApplicabilityGeneric feature support for
PC/SC readersAndroid NFC readers
Contact
  • yes, for PC/SC readers with a contact interface (both ISO 7816-3 T=0 & T=1 protocols are supported)
  • no, otherwise
no
Contactless
  • yes, the PC/SC readers with a contactless interface (at least both ISO 14443-4 type A & B protocols are supported)
  • no, otherwise
yes
Detectionyesyes
Channelsnot yet supportedno
Extendednono
Pollingno
(some PC/SC reader solutions may provide configurable RF polling, but this setting is then managed through specific APIs that are not part of the PC/SC standard)
no
Presenceyesno
Protocolyes, all contactless readers support both ISO 14443 type A & B (optional proprietary protocols can be supported in addition to ISO 14443-4)yes, all NFC readers support both ISO 14443 type A & B (& additional proprietary mode ISO 14443-3A / JIS 6319-4, etc...)
Selectionyes
  • on
yes
Shut-off RFno
(some PC/SC reader solutions may feature configurable RF field shut-off, but this setting is then managed through specific APIs that are not part of the PC/SC standard)
no

Terminal requirements support declarations

With the exception of RF certification and ‘DF Name’ selection rules, all other terminal requirements defined by CNA for the reader layer, applicable according to the properties of the PC/SC or NFC reader solutions, are fully supported by default.

For “contactless” readers, the ‘RL-CL-RFSTA.2’ rule defines the need for the product’s RF properties to be certified according to the scheme defined by the STA.

  • Most NFC readers are “self-declared” by by NFC reader manufacturers as compliant with the NFC Forum. This NFC declaration is recognized by the STA
  • and thus implicitly considered as compliant with STA certification.
  • By default, PC/SC contactless readers are not STA-certified.

‘Keyple Java Service sets’ definition

Product Identification
Set NameKeyple Java Service with PC/SC plugin setKeyple Java Service with Android NFC plugin set
Set Version2023/11/28 or after
Library Versions
  • keypop-card-java-api (external API) : 2.0+
  • keypop-reader-java-api (external API): 2.0+

  • keyple-common-java-api (internal API): 2.0+
  • keyple-plugin-java-api (internal API): 2.2 to 2.3+
  • keyple-service-java-lib: 3.0.0 to 3.3.5+
  • keyple-util-java-lib: 2.3.0 to 2.4.0+
  • keyple-plugin-pcsc-java-lib: 2.0.0 to 2.4.2+
  • keyple-plugin-android-nfc-java-lib: 2.0.0 to 3.0.0+
Product Compatibility
Reader LayerKeyple Core Java set:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-card-java-api (internal API): 2.0+
  • keyple-plugin-java-api (internal API): 2.2 to 2.3+
  • keyple-common-java-api (internal API): 2.0+
  • keyple-service-java-lib: 3.0.0 to 3.2.3+
  • keyple-util-java-lib: 2.4.0+
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-calypso-card-java-api (external API): 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.7+

Calypso software layer

The Keyple’s ‘Calypso’ libraries have also been implemented to meet the terminal requirements for the Calypso layer, regardless of the reader solutions used. 2 conditions must be met to guarantee « complete » compliance with the requirements of the Calypso layer:

Pending the future certification programme for Calypso layer libraries, CNA has published the self-declarations of conformity of the Keyple Calypso libraries (independently of interfaced reader solutions, but on the basis of a compliant reader software layer).

Terminal requirements support declarations

For the various Keyple Calypso library sets, all applicabilities and terminal requirements are supported, with the exception of those listed in the table below.

  • For requirements for which support is conditional on the availability of specific features, support has been integrated at the same time as the addition of the corresponding feature.
  • Prior to the integration of Eclipse Keypop, Keyple libraries were based on terminal APIs implemented and published by CNA: the Keyple libraries sets corresponding to these old configurations contain the word “legacy” in their name.

For older configurations where support for the ‘CL-CSS-RESPLE.1’ requirement is indicated as “partial”: the countermeasure was initially implemented in a ‘permissive’ way, requiring applications to set only card commands for which the response size can be predetermined. More recent configurations benefit from a more ‘strict’ implementation of the countermeasure, which is compliant regardless of the processing set at application level as indicated in the Calypso development guide.

The lack of official support for the “HCE” functionality and the related ‘CL-SEL-SNHEADER.2’ requirement is not a limitation to correctly processing Calypso HCE solutions, as the HCE token data can still be recovered as described in the Calypso development guide.

Keyple Calypso layer librariesUnsupported applicabilityUnsupported Requirement
Calypso cardFeature
Calypso Prime PKI set 2
  • HCE
-
  • CL-SEL-SNHEADER.2
Calypso Prime PKI set
  • HCE
-
  • CL-SEL-SNHEADER.2
  • partial CL-CSS-RESPLE.1
Calypso Prime Extended set
  • Prime PKI
  • HCE
-
  • CL-SEL-SNHEADER.2
  • CL-RAT-PKIMODE.2
  • CL-SV-PKIMODE.1
  • CL-PKI-ALGO.1
  • CL-PKI-VERIF.2
  • CL-PKI-PUBKEY.1
  • CL-PKI-RQMODE.1
Legacy Calypso Prime Extended set 2
  • Prime PKI
  • HCE
-
  • CL-SEL-SNHEADER.2
  • CL-RAT-PKIMODE.2
  • CL-SV-PKIMODE.1
  • CL-PKI-ALGO.1
  • CL-PKI-VERIF.2
  • CL-PKI-PUBKEY.1
  • CL-PKI-RQMODE.1
Legacy Calypso Prime Extended set
  • Prime PKI
  • HCE
-
  • CL-SEL-SNHEADER.2
  • partial CL-CSS-RESPLE.1
  • CL-RAT-PKIMODE.2
  • CL-SV-PKIMODE.1
  • CL-PKI-ALGO.1
  • CL-PKI-VERIF.2
  • CL-PKI-PUBKEY.1
  • CL-PKI-RQMODE.1
Legacy Calypso Prime Regular set 2
  • Prime PKI
  • Prime Extended
  • HCE
-
  • CL-SEL-SNHEADER.2
  • CL-RAT-PKIMODE.2
  • CL-SV-PKIMODE.1
  • CL-PKI-ALGO.1
  • CL-PKI-VERIF.2
  • CL-PKI-PUBKEY.1
  • CL-PKI-RQMODE.1
Legacy Calypso Prime Regular set
  • Prime PKI
  • Prime Extended
  • HCE
-
  • CL-SEL-SNHEADER.2
  • partial CL-CSS-RESPLE.1
  • CL-RAT-PKIMODE.2
  • CL-SV-PKIMODE.1
  • CL-PKI-ALGO.1
  • CL-PKI-VERIF.2
  • CL-PKI-PUBKEY.1
  • CL-PKI-RQMODE.1

‘Keyple Java Calypso Prime PKI set 2’ definition

Product Identification
Set NameKeyple Java Calypso Prime PKI set 2
Set Version2025/04/11 or after
Library Versions
  • keypop-calypso-card-java-api (external API): 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.7+
  • keypop-calypso-crypto-symmetric-java-api (internal API): 0.1+
  • keypop-calypso-crypto-asymmetric-java-api (internal API): 0.2+
  • keyple-card-calypso-java-lib: 3.1.8+
  • keyple-card-calypso-crypto-legacysam-java-lib: 0.9.0+
  • keyple-card-calypso-crypto-pki-java-lib: 0.2.1+
Product Compatibility
Reader LayerKeyple Core Java set:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-card-java-api (internal API): 2.0+
  • keyple-plugin-java-api (internal API): 2.2 to 2.3+
  • keyple-common-java-api (internal API): 2.0+
  • keyple-service-java-lib: 3.0.0 to 3.2.3+
  • keyple-util-java-lib: 2.4.0+
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-calypso-card-java-api (external API): 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.7+

‘Keyple Java Calypso Prime PKI set’ definition

Product Identification
Set NameKeyple Java Calypso Prime PKI set
Set Version2024/04/17 to 2025/04/10
Library Versions
  • keypop-calypso-card-java-api (external API): 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.5 to 0.6+
  • keypop-calypso-crypto-symmetric-java-api (internal API): 0.1+
  • keypop-calypso-crypto-asymmetric-java-api (internal API): 0.2+
  • keyple-card-calypso-java-lib: 3.1.1 to 3.1.7
  • keyple-card-calypso-crypto-legacysam-java-lib: 0.6.0 to 0.9.0
  • keyple-card-calypso-crypto-pki-java-lib: 0.2.0 to 0.2.1
Product Compatibility
Reader LayerKeyple Core Java set:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-card-java-api (internal API): 2.0+
  • keyple-plugin-java-api (internal API): 2.2 to 2.3+
  • keyple-common-java-api (internal API): 2.0+
  • keyple-service-java-lib: 3.0.0 to 3.3.5
  • keyple-util-java-lib: 2.3.0 to 2.4.0
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-calypso-card-java-api (external API): 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.5 to 0.7

‘Keyple Java Calypso Prime Extended set’ definition

Product Identification
Set NameKeyple Java Calypso Prime Extended set
Set Version2023/11/28 or after
Library Versions
  • keypop-calypso-card-java-api (external API): 2.0 to 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.3 to 0.6+
  • keypop-calypso-crypto-symmetric-java-api (internal API): 0.1+
  • keyple-card-calypso-java-lib: 3.0.0 to 3.1.2+
  • keyple-card-calypso-crypto-legacysam-java-lib: 0.4.0 to 0.7.1+
Product Compatibility
Reader LayerKeyple Core Java set:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-card-java-api (internal API): 2.0+
  • keyple-plugin-java-api (internal API): 2.2 to 2.3+
  • keyple-common-java-api (internal API): 2.0+
  • keyple-service-java-lib: 3.0.0 to 3.2.3+
  • keyple-util-java-lib: 2.3.0 to 2.4.0+
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • keypop-reader-java-api (external API): 2.0+
  • keypop-calypso-card-java-api (external API): 2.0 to 2.1+
  • keypop-calypso-crypto-legacysam-java-api (external API) : 0.3 to 0.6+

‘Keyple Legacy Java Calypso Prime Extended set 2’ definition

Product Identification
Set NameKeyple Lecacy Java Calypso Prime Extended set 2
Set Version2025/04/11
Library Versions
  • calypsonet-terminal-calypso-java-api (external API): 1.8
  • calypsonet-terminal-calypso-crypto-legacysam-java-api (external API): 0.2
  • keyple-card-calypso-java-lib: 2.3.15+ (<3.0.0)
  • keyple-card-calypso-crypto-legacysam-java-lib: 0.3.0
Product Compatibility
Reader LayerKeyple Core Java set:
  • calypsonet-terminal-reader-java-api (external API): 1.2 to 1.3
  • calypsonet-terminal-card-java-api (internal API): 1.0
  • keyple-plugin-java-api (internal API): 2.1 to 2.3
  • keyple-common-java-api (internal API): 2.0
  • keyple-service-java-lib: 2.2.0 to 2.3.6+ (<3.0.0)
  • keyple-util-java-lib: 2.3.0 to 2.3.1
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • calypsonet-terminal-reader-java-api (external API): 1.2 to 1.3
  • calypsonet-terminal-calypso-java-api (external API): 1.8
  • calypsonet-terminal-calypso-crypto-legacysam-java-api (external API) : 0.2

‘Keyple Legacy Java Calypso Prime Extended set’ definition

Product Identification
Set NameKeyple Lecacy Java Calypso Prime Extended set
Set Version2022/12/22 to 2023/11/27
Library Versions
  • calypsonet-terminal-calypso-java-api (external API): 1.5 to 1.8
  • calypsonet-terminal-calypso-crypto-legacysam-java-api (external API): 0.1 to 0.2
  • keyple-card-calypso-java-lib: 2.3.1 to 2.3.12+ (<3.0.0)
  • keyple-card-calypso-crypto-legacysam-java-lib: 0.1.0 to 0.3.0
Product Compatibility
Reader LayerKeyple Core Java set:
  • calypsonet-terminal-reader-java-api (external API): 1.0 to 1.3
  • calypsonet-terminal-card-java-api (internal API): 1.0
  • keyple-plugin-java-api (internal API): 2.0 to 2.3
  • keyple-common-java-api (internal API): 2.0
  • keyple-service-java-lib: 2.1.1 to 2.3.5+ (<3.0.0)
  • keyple-util-java-lib: 2.3.0 to 2.3.1
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • calypsonet-terminal-reader-java-api (external API): 1.0 to 1.3
  • calypsonet-terminal-calypso-java-api (external API): 1.5 to 1.8
  • calypsonet-terminal-calypso-crypto-legacysam-java-api (external API) : 0.1 to 0.2

‘Keyple Legacy Java Calypso Prime Regular set’ definition

Product Identification
Set NameKeyple Lecacy Java Calypso Prime Regular set
Set Version2022/02/01 to 2022/12/22
Library Versions
  • calypsonet-terminal-calypso-java-api (external API): 1.1 to 1.4
  • calypsonet-terminal-calypso-crypto-legacysam-java-api (external API): 0.1
  • keyple-card-calypso-java-lib: 2.1.0 to 2.3.0
  • keyple-card-calypso-crypto-legacysam-java-lib: 0.0.0 to 0.2.0
Product Compatibility
Reader LayerKeyple Core Java set:
  • calypsonet-terminal-reader-java-api (external API): 1.0 to 1.3
  • calypsonet-terminal-card-java-api (internal API): 1.0
  • keyple-plugin-java-api (internal API): 2.0 to 2.3
  • keyple-common-java-api (internal API): 2.0
  • keyple-service-java-lib: 2.1.1 to 2.3.5+ (<3.0.0)
  • keyple-util-java-lib: 2.3.0 to 2.3.1
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • calypsonet-terminal-reader-java-api (external API): 1.0 to 1.1
  • calypsonet-terminal-calypso-java-api (external API): 1.1 to 1.4
  • calypsonet-terminal-calypso-crypto-legacysam-java-api (external API) : 0.1

‘Keyple Legacy C++ Calypso Prime PKI set 2’ definition

Product Identification
Set NameKeyple Lecacy C++ Calypso Prime Regular set 2
Set Version2025/04/17
Library Versions
  • calypsonet-terminal-calypso-cpp-api (external API): 1.4
  • keyple-card-calypso-cpp-lib: 2.2.5.5
Product Compatibility
Reader LayerKeyple Core Java set:
  • calypsonet-terminal-reader-cpp-api (external API): 1.0 to 1.1
  • calypsonet-terminal-card-cpp-api (internal API): 1.0
  • keyple-plugin-cpp-api (internal API): 2.0
  • keyple-common-cpp-api (internal API): 2.0
  • keyple-service-cpp-lib: 2.0.1 to 2.1.1.1
  • keyple-util-cpp-lib: 2.3.0.0 to 2.3.0.4
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • calypsonet-terminal-reader-cpp-api (external API): 1.0 to 1.1
  • calypsonet-terminal-calypso-cpp-api (external API): 1.4

‘Keyple Legacy C++ Calypso Prime PKI set’ definition

Product Identification
Set NameKeyple Lecacy C++ Calypso Prime Regular set
Set Version2022/02/01 to 2025/04/17
Library Versions
  • calypsonet-terminal-calypso-cpp-api (external API): 1.0 to 1.4
  • keyple-card-calypso-cpp-lib: 2.1.0 to 2.2.5.4
Product Compatibility
Reader LayerKeyple Core Java set:
  • calypsonet-terminal-reader-cpp-api (external API): 1.0 to 1.1
  • calypsonet-terminal-card-cpp-api (internal API): 1.0
  • keyple-plugin-cpp-api (internal API): 2.0
  • keyple-common-cpp-api (internal API): 2.0
  • keyple-service-cpp-lib: 2.0.1 to 2.1.1.1
  • keyple-util-cpp-lib: 2.0.0 to 2.3.0.4
Integrated with reader plugin implementing the Keyple Plugin API.
Ticketing LayerAny ticketing application based on:
  • calypsonet-terminal-reader-cpp-api (external API): 1.0 to 1.1
  • calypsonet-terminal-calypso-cpp-api (external API): 1.0 to 1.4

Ticketing software layer

For a ticketing terminal solution built on the Keyple framework, the responsibility for complying with the requirements for the ticketing software layer lies exclusively with the developers of the terminal application using the ‘public’ Reader & Calypso terminal APIs.