Project

General

Profile

Project-Structure » History » Revision 15

Revision 14 (Detlef Hühnlein, 10/16/2012 03:32 PM) → Revision 15/17 (Hans-Martin Haase, 08/21/2015 12:05 PM)

{{toc}} h1. Project-Structure 

 {{>toc}} 

 The overall project structure has been derived from the high level design of the Open eCard App (see "Sicherheit 2012 paper":http://subs.emis.de/LNI/Proceedings/Proceedings195/95.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. 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 GUI implementations 

 h3. About Dialog 

 h3. Graphics 

 h3. Swing GUI 

 h3. Android GUI 

 h2. IFD implementationes 

 h3. IFD common 

 h3. IFD Protocols -> PACE 

 h3. SmartcardIO implementations -> PC/SC for OS X 

 h3. SmartcardIO implementations -> PCSC SmartcardIO 

 h3. SmartcardIO implementations -> NFC SmartcardIO 

 h3. IFD core 

 h2. Integrated Add-ons 

 h3. PIN Management Add-on 

 h3. Generic cryptography protocol 

 h3. TR-03112 Add-on 

 h3. Status 

 h2. Management 

 h2. Open eCard Common Libs 

 h2. Open eCard I18n 

 h2. Open eCard Webservice Definitions 

 h3. class-list Plugin 

 h3. Open eCard WS common 

 h3. Open eCardd WS classes 

 h3. JAXB Marshaller 

 h3. Android Marshaller 

 h2. SAL 

 h3. SAL common 

 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 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* 
 * *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 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