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.
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
Applicability | Generic feature support for |
---|
PC/SC readers | Android 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 |
Detection | yes | yes |
Channels | not yet supported | no |
Extended | no | no |
Polling | no (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 |
Presence | yes | no |
Protocol | yes, 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...) |
Selection | yes | yes |
Shut-off RF | no (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 Name | Keyple Java Service with PC/SC plugin set | Keyple Java Service with Android NFC plugin set |
---|
Set Version | 2023/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 Layer | Keyple 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 Layer | Any 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 libraries | Unsupported applicability | Unsupported Requirement |
---|
Calypso card | Feature |
---|
Calypso Prime PKI set 2 | | - | |
---|
Calypso Prime PKI set | | - | - CL-SEL-SNHEADER.2
- partial CL-CSS-RESPLE.1
|
---|
Calypso Prime Extended set | | - | - 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 | | - | - 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 | | - | - 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 Name | Keyple Java Calypso Prime PKI set 2 |
---|
Set Version | 2025/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Java Calypso Prime PKI set |
---|
Set Version | 2024/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Java Calypso Prime Extended set |
---|
Set Version | 2023/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Lecacy Java Calypso Prime Extended set 2 |
---|
Set Version | 2025/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Lecacy Java Calypso Prime Extended set |
---|
Set Version | 2022/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Lecacy Java Calypso Prime Regular set |
---|
Set Version | 2022/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Lecacy C++ Calypso Prime Regular set 2 |
---|
Set Version | 2025/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 Layer | Keyple 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 Layer | Any 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 Name | Keyple Lecacy C++ Calypso Prime Regular set |
---|
Set Version | 2022/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 Layer | Keyple 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 Layer | Any 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.