Project-Structure » History » Revision 10
Revision 9 (Tobias Wich, 09/19/2012 03:33 PM) → Revision 10/17 (Dirk Petrautzki, 09/24/2012 03:57 PM)
h1. Project-Structure
{{>toc}}
The overall project structure has been derived from the high level design of the Open eCard App (see [["Sicherheit 2012 submission":https://redmine.vserver-001.urospace.de/attachments/14/Open-eCard-App-2011-12-05.pdf]]) and is depicted in the following figure:
!Open-eCard-App-Design_690.6x476.4.png!
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. 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 patches regarding TLS-PSK.
h3. crypto-common
Other crypto related code. E.g. ASN.1 classes for EAC and 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. dispatcher
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 relationship between the different ifd modules:
!IFD-Module-Structure_656x280.png!
h3. ifd-common
Code and data structures common to core and protocol modules.
h3. protocols
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. scio-backend
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 [["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 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. sal-common
* *State management*
More information can be found [[SAL-Statemanagement|here]].
h3. protocols
* *eac*
* *crypto-lite*
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 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