Proj-2015-2016-Extensions IPOPO

Subject: Services étendus pour le modèle de composants iPOPO pour Python (in French)

 Supervisors: 
 * Thomas CALMANT
 * Didier DONSEZ

 Students: 
 * Abdelaziz FOUNAS (RICM4)
 * Rémi GATTAZ (RICM4)
 * Marwan HALLAL (RICM4)

Objectives

 * Meet with supervisors
 * Decide which suggested extension of IPOPO we will work on
 * Understand the subject

Objectives

 * Create the project's SRS
 * Lean python
 * Learn how to use IPOPO (basic usage)

Work done

 * Studied the code of iPOPO
 * Prepared meeting with Thomas CALMANT

Objectives

 * Work on the design of our extension
 * Start designing the extension
 * Find where our extension will be located in the existing code
 * Creation of UML Diagrams
 * Find python modules that we could use

Weekly meeting
During this week's meeting, the following points were discussed and agreed upon :
 * The creation and revocation of client's certificates will be done inside iPOPO. It implies that iPOPO will have to handle a keystore.
 * To connect to the IPOPO secured remote shell, we will create a simple python client
 * Extending the RemoteConsole class seems to be a good approach for what we are trying to do.

Work done

 * UML Diagrams:
 * [[Media:Proj-2015-2016-Extensions_IPOPO_UseCase_v1.png|Use Cases (v1)]]
 * [[Media:Proj-2015-2016-Extensions_IPOPO_SequenceDiag_v1.png|Sequence Diagram (v1)]]

Objectives

 * Search of a python2 and python3 compatible cryptology module (must be able to handle keystores)
 * Choose our workflow
 * Continue designing the extension
 * Read the IPOPO documentation to improve our understanding of the IPOPO project
 * Decide where to implant it.

Weekly meeting
During this week's meeting, the following points were discussed and agreed upon :
 * We will create a package pelix.crypto in iPOPO.
 * To handle certificates, we will create in IPOPO a module keystore
 * For a first version, we will use the python module ssl in order to not add a new dependency. We will however try to make it easy to create a new keystore module with pyOpenssl

Problems faced
We didn't have specific problems during the week.

Objectives

 * Write a simple client/server application using AES encryption
 * Start to write the TLS versions of classes handling the remote connections in IPOPO
 * Write the keystore service interface

Work done

 * Draft of keystore interface
 * Implementation of TLS version classes
 * Client/Server application using AES encryption

Weekly meeting

 * The problem we had was discussed and a solution found

Problems faced

 * The current implementation of remote shell forced to rewrite a lot of code. A solution was found that however requires to slightly modify the current iPOPO remote shell module.

Objectives

 * Add mutual authentication to the simple client/server python application written the previous week
 * Complete and test the TLS version of IPOPO remote shell classes

Work done

 * Mutual authentication was added to the client/server python application written the previous week
 * Tests of the TLS remote shell with the client of the simple application
 * Creation of two issues on Ipopo's Github repository Issue #52 Issue #53


 * Use of the following Tutoriale to learn about the methods of creation of Authorities, Keys and Certificates Installation et configuration de OpenSSL

Problems faced

 * The client written for the simple client/server application can not connect to the TLS remote shell. The problem has not been identified yet.

Objectives

 * Find the issue in the TLS RemoteShell and fix it
 * Design a module PKI (Public Key Infrastructure) and the submodules it needs.

Work done

 * The problem in our implementation of the tls remote shell was found and corrected.
 * First Draft of the PKI's modules

Problems faced

 * While designing the PKI modules, we were looking how to use it with the current implementation of the TLS-RemoteShell. We found that the wrapping of the socket can only be done using files. Thus, we will most likely have to create temporary files to wrap sockets with using certificates.

Objectives

 * Finish design of the PKI modules and put it on the Air wiki
 * Creation of a Gantt diagram to plan the last 3 weeks of the project
 * Start the implementation of the PKI

Work done

 * Creation of a class diagram of the PKI's modules. It is available here
 * The Ganntt was created and presented to Thomas CALMANT

Weekly meeting
During this week's meeting, we discussed what we still had to do and presented a Gantt to show what was our goal.

Problems faced
We didn't have specific problems during the week.

Objectives

 * Make small modifications to the TLS Remote Shell for upcoming merge with the second branch of our project
 * Start the implementation of the dependencies of the PKI module

Work done

 * Define constants in the remote shell module used in the TLS Keystore modules
 * Started implementation of the module Keystore and BasicKeystore
 * Creation of a function main in the module tlsremoteshell to start it easily

Problems faced
We didn't have specific problems during the week.

Objectives

 * Implementation of the module PKI
 * Creation of tests for the module BasicKeystore

Work done

 * Creation of the module PKI
 * Creation of Travis tests of the module BasicKeystore

Problems faced

 * We didn't know how to test properly our travis tests before commiting them to the project repository. We thus created a lot of meaningless commits.

Objectives

 * Creation of Travis tests of the module PKI
 * Have a bettter coverage on the module KeyStore

Work done

 * Creation of automatic tests of the PKI

Problems faced

 * The continuous integration server Travis was not running well. Every tests requiring networking was failing. Even previously working tests could not be completed.

Objectives

 * Modify the PKI. Have PKI the name of an interface and make the current PKI a subclass of PKI name BasicPKI
 * Make BasicPKI a ipopo component

Problems faced

 * Travis.yml is still not working properly. It worked on Monday morning for some time but started to fail again at the end of the morning.