Open Source Software Library

The Java code (Java 1.6) of PersoApp’s Open Source software library is available for free via the SVN repository of Google Code at https://persoapp.googlecode.com. It is licensed under LGPL v3. The byte code JAR file as a ZIP archive is together with some Linux packages also available at the download section of the PersoApp homepage.

Please use the issue tracker of PersoApp for your comments and questions to the source code. For other topics, e.g. use cases, security, usability, and privacy, please use the PersoApp forum.

Architecture

The architecture of the PersoApp Open Source Software Library is based on the technical guidelines (TR) of the Federal Office for Information Security (BSI). It consists mainly of the following modules:

  • Core-Lib
  • GUI
  • Crypto-Algs
  • Misc

Each module is a closed implementation and interacts with other modules via its API. This allows to develop individual modules on their own or to replace them, without changing other, dependent modules. The following figure shows the architecture with the modules as building blocks.

Architektur der Open Source Core

The Core-Lib consists of all sub modules for the electronic identification functionality. It requires a communication module for the data exchange with the eID server (TLS) and with the smart card (PC/SC). Another important part of Core-Lib is the local API server. The local API server provides the electronic identification function to the other IT systems integrated on the same target platform/runtime environment. These include among others web browser and Internet applications without the need of specific browser plugins. The GUI module consists of sub modules for the interaction with the owner of the new German national ID card and the Core-Lib. This implies user guidance, guidelines, and PIN management. Crypto-Algs is the crypto layer supporting the Core-Lib with an implementation of the necessary cryptographic algorithms, e.g. for encryption and authentication.

Core-Lib

The Core-Lib consists of the following sub modules.

  • Network Layer
  • ISO 24727 Services
  • Card Services
  • Misc

The Core-Lib is separate from the GUI so that an individualized GUI can be designed and implemented for each application.

Network Layer

Network Layer is an eID client interface for network communication, for example towards an Internet application. The components are:

  • Webservice Dispatcher
  • PAOS Client
  • TLS1.1+
  • Local API Server

ISO 24727 Services

ISO 24727 Services provides the core functions of an eID client and consists of the following components:

  • Management
  • SAL (Service Abstraction Layer)
  • IFD (Interface Device)
  • Protocol Service

Card Service

The Card Service provides the “interface” to the smart card, here the new German national ID card. It is responsible for message exchange between an eID client and the ID card. The Card Service consists of:

  • eCard Handler/ PACE
  • Transport Provider
  • PC/SC

Crypto-Algs

Crypto-Algs (Cryptographic Algorithms) represents the crypto layer and unifies the usage of cryptographic primitives and protocols for other components and higher cryptographic eID client protocols.

GUI

The GUI module serves for the implementation of an interface to an owner of a smart card. The PersoApp Open Source Software Library will provide a rudimentary GUI with dialogues for using the electronic identification functionality with the PersoApp demo and test service.

Misc

This module serves as a bracket for all other submodules, e.g. for the configuration modules. It enables software configuration such as for cryptographic operations.