This proposal has been approved and the Eclipse Keypop® project has been created.
Visit the project page for the latest information and development.

Eclipse Keypop

Monday, March 20, 2023 - 13:24 by Pierre Terree
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

In 2018, the Calypso Networks Association initiated the Eclipse Keyple project: an open source library facilitating the creation of ticketing terminals dealing with smart cards ( https://keyple.orghttps://projects.eclipse.org/projects/iot.keyple/ ).

The Eclipse Keyple solution addresses 2 main objectives:

  • be able to generically interface any smart card reader solution regardless of the embedded or distributed architecture,
  • provide a basis for building library extensions for ticketing solutions, with a first extension dedicated to the Calypso card solution.

The provision of transport ticketing solutions is based on public tenders where it is easier to require the support of APIs rather than the use of a particular implementation. So, the Calypso Networks Association standardized various APIs for the design of ticketing terminals operating smartcards. These ticketing terminal APIs are thus implemented by the Eclipse Keyple libraries.

The Calypso Networks Association will continue to define these ticketing terminal APIs, but now proposes to host Java and C++ implementations of these interface definitions in an Eclipse project: Keypop.

Scope

The Eclipse Keypop project will host Java & C++ codes of the ticketing terminal APIs standardized by CNA. These interface codes must allow the implementation by any ticketing terminal solution operating smart cards, independently of the system architecture.

Eclipse Keypop:

  • provides APIs to manage in a generic way any type of smart card reader solution. These APIs can then be extended for any kind of ticketing solution.
  • includes high level APIs to conduct secure transactions with Calypso ticketing cards.
Description

Eclipse Keypop open source interfaces will initially be available in Java and C++, designed on the same mutual Object-Oriented Model.

The 'Reader API' is a high-level interface used by terminal applications to operate smart card readers, it:

  • provides the means to identify card readers and verify the presence of smart cards,
  • offers the possibility to configure the observation of readers in order to be notified on card insertion or withdrawal,
  • is the entry point to manage the selection of a smart card in a specific reader.

The 'Card API' defines the internal elements shared by the reader layer to implement specific ticketing card extension.

The 'Calypso API' is an extension of the Reader API which provides a high-level API standardizing the way to interact with Calypso cards.

  • The Calypso Card API provides the means to select a target card and then perform a secure transaction with the selected target.
  • The Calypso Crypto Legacy SAM API is the interface to manage security modules.
Why Here?

The first objective is to open to the community the coding of the ticketing terminal APIs. This may also faciliate the adoption of the reader API by ticketing solutions other than Calypso.

The Eclipse foundation also hosts the Keyple project which is a set of libraries implementing these APIs: it is logical to gather these projects in the same open source foundation.

Future Work

The next evolutions will be mainly extensions of the Calypso API.

  • in the coming months, an evolution of the Calypso card API will bring the support of Prime PKI.
  • next year, a crypto extension to the Calypso API should bring the management of the future OpenSAM security module.
Project Scheduling

For summer 2023, the first release will provide full definitions of the Reader and Card APIs, and a partial definition of the Calypso API.

The Calypso API will at least support all the features of Prime Regular and Extended cards, and the Legacy SAM security module.

Interested Parties

In principle, all the companies & authorities currently publicly declared as adopters of the Eclipse Keyple solution should be interested, since they already have solutions that are based on these APIs (Bluebird, Calypso Networks Association, Coppernic, CTS, Famoco, Flowbird, Ile-de-France Mobilité, Odalid, Onewave, RATP Smart Systems, SNCF, Sopra Steria, Spirtech).

Initial Contribution

All the code of the initial contribution is owned by Calypso Networks Association. This code has no dependency with any third party.

In order to limit dependencies and allow the different components of the APIs for ticketing terminals to evolve separately with their own version numbers. Each API element will be hosted in a dedicated repository per programming language.

7 repositories initially: for the Java Reader API, C++ Reader API, Java Card API, C++ Card API, Java Calypso Card API, C++ Calypso Card API, and for the Java Calypso Legacy SAM API.

Source Repository Type