Project-Structure » History » Revision 16
Revision 15 (Hans-Martin Haase, 08/21/2015 12:05 PM) → Revision 16/17 (Hans-Martin Haase, 08/21/2015 01:55 PM)
{{toc}}
h1. Modules
The following modules are derived from the high level project structure. Information about the architecture, data structures and other things can be found in the respective links.
h2. Add-on Framework
Contains the implementation of the Add-on Framework. This includes the mapping of the abstract XML description into Java data structure, interface specifications and classes for the management of the add-ons.
h2. CardInfo files
Here you'll find all CardInfo files of the eID client which are used to recognize cards. Furthermore there are images of the specific card and a static recognition tree which is executed when a new card is inserted.
h2. Card Recognition
The Card Recognition module uses the abstract XML descriptions of the CardInfo module to provide functionality to the system.
h2. Client Implementations
Contains sub modules which implement a client for a specific platform. Currently there are the following two client available:
h3. Rich Client
Contains the code for the Rich client application based on the Swing implementation of the GUI. The main target of this client version are desktop pcs and laptop.
h3. Android Client
A client version for the Android operating system which is primary located on smart phones and tablet pcs.
h3. Open eCard Java Version Checker
The Open eCard App requires currently Java 7 if it is available this little tool will warn the user.
h2. Control Interface Bindings
This package contains all available Binding implementations which are listed below.
h3. HTTP Binding
Contains the implementation of the HTTP Binding which is used to offer HTTP Services to the external world.
h2. Crypto packages
h3. Open eCard Bouncy Castle
This module contains the Bouncy Castle code.
h3. Crypto common
Contains common cryptography classes for e.g. ASN1 objects used in the EAC process. Furthermore there are utility classes for easier access to DID's and their features.
h3. Open eCard TLS
Contains TLS client implementations used to communicate with remote parties. The clients are implemented according to the guideline that are related to TLS cryptography.
h2. Event Manager
The Event Manager module is
h2. h2 GUI implementations
h3. About Dialog
Swing implementation of the About dialog.
h3. Graphics
Graphic utilities to retrieve the Open eCard logo in different sizes and different backgrounds.
h3. GUI common
Provides the abstract definition of the GUI elements which are implemented by the specific platforms. Their are also executors for GUI steps.
h3. Swing GUI
Contains the Swing implementation of the abstract GUI definitions of the GUI common package.
h3. Android GUI
Contains the Android specific GUI.
h2. IFD implementations implementationes
h3. IFD common
Contains common interfaces and classes for an IFD implementation.
h3. IFD Protocols -> PACE
Implementation of the PACE protocol as IFD protocol.
h3. SmartcardIO implementations -> PC/SC for OS X
SmartcardIO stuff specific for OS X
h3. SmartcardIO implementations -> PCSC SmartcardIO
This sub module contains the implementations of the interfaces specified in IFD common for PC/SC.
h3. SmartcardIO implementations -> NFC SmartcardIO
Contains an implementation of the interfaces specified in the IFD common module which is able to interact with the NFC interface of modern smart phones.
h3. IFD core
Provides the general functionality of the IFD.
h2. Integrated Add-ons
h3. PIN Management Add-on
Currently this contains the code for a PIN Management which is only capable to handle the German eID card.
h3. Generic cryptography protocol
Implementation of the Genric Cryptography Protocol according to BSI-TR03112-7 (Not complete)
h3. TR-03112 Add-on
Provides the classes for a TCToken based activation of the eID client. This mechanism supports the German eID card and cards used for an TLS authentication.
h3. Status
Implementation of an Add-on which provides status information about the eID client.
h2. Management
h2. Open eCard Common Libs
Provides several classes for the handling of APDUs for smart cards. It is easier to use them instead of using the plain hex codes. Furthermore there are utility classes for different purposes.
h2. Open eCard I18n
Module containing the translations of the Open eCard App.
h2. Open eCard Webservice Definitions
h3. class-list Plugin
h3. Open eCard WS common
Contains ab Open eCard implementation of a Marshaller
h3. Open eCardd WS classes
Contains web service definitions (.xsd, .wsdl).
h3. JAXB Marshaller
h3. Android Marshaller
h2. SAL
h3. SAL common
Provides h3. TinySAL
h2. Transport
h3. Dispatcher
h3. Apache shadded HTTP core
h3. Open eCard HTTP core
h2. wsdef
Contains web service definitions (.xsd, .wsdl) and related utilities.
h3. class-list-plugin
h3. wsdef-client
h2. common
Contains common utilities and helper classes.
h2. crypto
Contains basic crypto modules.
h3. bouncycastle
Relocated bouncycastle classes (moved from org.bouncycastle to org.openecard.bouncycastle) with some utility patches regarding TLS-PSK.
h3. crypto-common
Other crypto related code. E.g. ASN.1 classes for EAC and exception definitions. CVC.
h2. saml
Contains the functionality for [["SAML-ECP":http://www.oasis-open.org/committees/download.php/41209/sstc-saml-ecp-v2.0-wd02.pdf]].
h2. esign
Contains signature-related functionality.
h2. transport
Contains modules related to the transport of messages.
h3. TinySAL dispatcher
Implementation h3. paos
h3. tls
The TLS design can be found [[TLS-Design|here]].
h2. gui
Contains user interfaces (User Consent) for the different platforms.
h3. gui-common
Data structure definitions and common GUI execution code.
h3. swing
Swing based User Consent implementation.
h3. android
Android UI based User Consent implementation.
h2. ifd
Contains the interface device (IFD) components for the different platforms. The following figure provides an overview of the Service access layer providing functions according relationship between the different ifd modules:
!IFD-Module-Structure_656x280.png!
h3. ifd-common
Code and data structures common to BSI-TR03112 part 4 core and 7. protocol modules.
h3. protocols
h2. Transport
Contains IFD-related trusted channel protocols, which can be used with @EstablishChannel@. Currently the following protocols are supported:
* *pace*
Password Authenticated Connection Establishment [["PACE":https://www.bsi.bund.de/ContentBSI/Publikationen/TechnischeRichtlinien/tr03110/index_htm.html]]
h3. Dispatcher scio-backend
Implementation Provides an implementation of [["javax.smartcardio":http://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html]] for different platforms.
* *oma*
Maps [["javax.smartcardio":http://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html]] to the Dispatcher which is responsible [["Transport API within the Open Mobile API":http://www.simalliance.org/en?t=/documentManager/sfdoc.file.supply&e=UTF-8&i=1185787014303&l=0&fileID=1322061907922]].
* *android-nfc*
Maps [["javax.smartcardio":http://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html]] to [["android.nfc":http://developer.android.com/reference/android/nfc/package-summary.html]].
* *android-scio*
Maps [["javax.smartcardio":http://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html]] to a native PCSC implementation [["pcsclite":http://pcsclite.alioth.debian.org]] compiled for Android.
More information can be found [[Android-PCSC|here]].
* *pcsc*
Is necessary to embed the message passing between java default implementation of the SmartcardIO into the scio-backend context.
h3. ifd-core
Implements the IFD-API including the mapping to [["javax.smartcardio":http://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html]].
h2. sal
Contains the service access layer (SAL) components.
h3. Apache shadded HTTP core sal-common
* *State management*
More information can be found [[SAL-Statemanagement|here]].
h3. protocols
* *eac*
* *crypto-lite*
* *Generic Cryptography*
* *PinCompare*
More information can be found [[SAL-Protocols|here]].
h3. tiny-sal
h2. recognition
Features CardInfo-based card type recognition. This module also bundles CardInfo files for the recognisable cards.
h2. event-manager
Provides an easy to use interface for IFD related events.
h2. browser
Contains components for the integration of the Open eCard HTTP core App into popular browsers.
h3. object-handler
h3. pkcs11
!TLS-module-structure_667x404.5.png!
h3. tls-channel-binding
h2. control-interface
This module is used to activate the client and authenticate against a server.
The eCard-API Framework part 7 defines the [[Control_Interface#Activation|TCToken-Interface]] to trigger the activation.
More sophisticated activation scenarios need the possibility to request information about the App and available token. The [[Control_Interface#GetStatus1|Status-Interface]] extends the TCToken-Interface respectively.
h2. client
Contains modules for the different forms of the Open eCard App.
h3. applet
h3. richclient
h3. android