WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Conception et réalisation d'une application Java Card pour la recherche de billet d'avion le moins cher

( Télécharger le fichier original )
par Etudiants fin de cycle ingénieur Etudiants fin de cycle ingénieur
Université Mouloud Mammeri Tizi Ouzou Algérie - Ingénieur informatique 2008
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

PARTIE II : Réalisation

Introduction :

Présentation du projet

Notre projet consiste en la création d'une application exploitant la technologie javacard pour la recherche du billet d'avion le moins cher possible. Pour ce faire, on va introduire des bases de données qui représentent chacune une compagnie aérienne donnée.

L'objet de ce rapport est l'étude de l'ingénierie logicielle permettant le développement d'applications de carte à puce par le billet de carte java. Il est destiné aux personnes qui désirent étudier les éléments essentiels de la technologie des cartes à puce et de la programmation des cartes java. Au cours de ce rapport, on se concentre sur les méthodes impliquées pendant le processus de développement d'une application javacard.

Ce rapport est organisé comme suit:


· Section I : Création des bases de données, projet JavaCard et Applet :

1. Création des bases de données nécessaires pour l'application.

2. Création du projet JavaCard.

3. Création de l'applet.


· Section II : Création & Description de l'application :

- Résumé.

- Conception.

- Chargement de l'applet sur la carte (avec JCardManager)

- Le code source de l'applet.

- Le source de l'application cliente (voir annexe).


· Section III : Tests & Exécution.


·Conclusion.


· Bibliographies.

Section I : Création des bases de données, projet JavaCard

I-1 Création des bases de données nécessaires pour l'application 

On a utilisé dans ce projet une base de données nommée Compagnie qui contient deux tables simulant ainsi deux agences aériennes : air_algerie et aigle_azur. Pour cela on a opté pour un SGBD Mysql intégré à EasyPHP dont l'installation est décrite précédemment.

Voici le code SQL pour la création des deux tables :

- phpMyAdmin SQL Dump

-- version 2.6.1

-- http://www.phpmyadmin.net

--

-- Serveur: localhost

-- Généré le : Dimanche 25 Mai 2008 à 15:51

-- Version du serveur: 4.1.9

-- Version de PHP: 4.3.10

--

-- Base de données: `compagnie`

--

-- --------------------------------------------------------

--

-- Structure de la table `aigle_azur`

--

CREATE TABLE `aigle_azur` (

`nomcompagnie` varchar(30) NOT NULL default '',

`itineraire` varchar(30) NOT NULL default '',

`prix` int(10) NOT NULL default '0',

`dateheure` datetime NOT NULL default '0000-00-00 00:00:00'

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--

-- Contenu de la table `aigle_azur`

--

INSERT INTO `aigle_azur` VALUES (`aigle_azur, 'alger-tunis', 120, '2008-05-27 00:30:00');

INSERT INTO `aigle_azur` VALUES (' aigle_azur ', 'alger-tunis', 119, '0000-00-00 00:00:00');

INSERT INTO `aigle_azur` VALUES (' aigle_azur', 'alger-tunis', 110, '2008-05-27 00:30:00');

INSERT INTO `aigle_azur` VALUES (' aigle_azur ', 'alger-Dubai', 114, '2008-05-20 12:00:00');

INSERT INTO `aigle_azur` VALUES (' aigle_azur', 'alger-bruxelles', 112, '2008-06-01 15:30:00');

INSERT INTO `aigle_azur` VALUES (' aigle_azur `, 'alger-bruxelles', 88, '2008-06-01 16:30:00');

INSERT INTO `aigle_azur` VALUES (' aigle_azur ', 'alger-Athènes', 99, '2008-05-15 12:00:00');

-- --------------------------------------------------------

--

-- Structure de la table `air_algerie`

--

CREATE TABLE `air_algerie` (

`nomcompagnie` varchar(30) NOT NULL default '',

`itineraire` varchar(30) NOT NULL default '',

`prix` int(10) NOT NULL default '0',

`dateheure` datetime NOT NULL default '0000-00-00 00:00:00'

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--

-- Contenu de la table `air_algerie`

--

INSERT INTO `air_algerie` VALUES (' air_algerie ', 'alger-paris', 121, '2008-06-01 13:00:00');

INSERT INTO `air_algerie` VALUES (`air_algerie', 'alger-paris', 119, '2008-06-01 14:00:00');

INSERT INTO `air_algerie` VALUES (' air_algerie', 'alger-Athènes', 123, '2008-05-27 12:30:00');

INSERT INTO `air_algerie` VALUES (' air_algerie', 'alger-Ryadh', 100, '2008-07-29 00:00:00');

I-2  Création du projet JavaCard :

Après avoir lancé le JBuilder, cliquez sur File/New, et dans Object Gallery choisissez Java Card/Java Card Project.

Il y' a 7 étapes à suivre pour la création du projet JavaCard. On décrit les étapes 2, 3 et 5 (Pour les autres, vous devez laisser les valeurs proposées par défaut):

· Spécification du package AID du projet (étape 2).

· Choix du Card type (étape 3).

· Choix de l'environnement JCardManager (étape 5).

I-3  Création de l'applet:

Après avoir créé le projet cliquer sur File/New, et dans Object Gallery choisissez Java Card/Java Card Applet. Il y'a 4 étapes à suivre on décrit les étapes 1 et 2 (Pour les autres, vous devez laisser les valeurs proposées par défaut):

· Spécification du package AID de l'applet et son applet AID (étape 1).

· Applet AID et instance AID (étape 2).

Section II : Création & Description de l'application

II-1 Résumé

Ce projet orienté sur la technologie Javacard consiste à réaliser une application de recherche de billet d'avion le moins cher, dont le fichier .cap sera délivré et installé sur la carte, et un programme client java sous forme d'une application avec interface graphique permettant la communication avec la carte.

II-2 Conception

Nous avons nommé notre projet Application JavaCard, il a été réalisé en utilisant JBuilder, le JDK et GemXplore.

Il contient cinq classes :

· Une classe nommée Interface contenant les composants suivants : JPanel, les JLabels, JTextArea, Buttons ainsi une classe Main permettant de lancer notre application.

· Une classe nommée Connecting pour la connexion aux bases de données et récupération des prix selon un itinéraire choisi. Elle contient les événements et les actions associés à notre application en particulier cette classe contient des variables pour lancer les méthodes correspondantes au choix de l'utilisateur.

· Une classe nommée ApduCommands, elle permet la communication avec la carte en définissant toutes les fonctions d'interface qui puisse être appelées par le terminal qui est implémenté dans la classe Terminal.

· Une classe nommée Terminal qui nous permet d'ouvrir la communication entre l'application cliente (l'interface) et l'application serveur (l'applet).

· Une classe nommée Tool pour manipuler, convertir et afficher les adresses suivant leur représentation (byte, notation hexadécimale en deux quartets sous forme de chaine, etc.).

II-3 Chargement de l'applet sur la carte

II-3-1 Lancement de JcardManager

II-3- 2 La fenêtre principale de JCardManager

II-3-3 Choix de l'applet pour être chargé et installé dans la carte

Pour charger l'applet dans la carte, on lance le JCard Manager et on s'assure que le lecteur de carte est bien sélectionné dans cette fenêtre. Ensuite, et dans la liste OP du USim Card R5, on sélectionne la commande Quickload. Cette commande permet de charger et d'installer l'applet. Dans le cadre File, on clique sur le bouton select pour sélectionner le fichier CAP à charger et installer en même temps.

Pendant que le chargement continue, les messages de statut sont sans interruption affichés dans la zone message de la fenêtre de JCard Manager.les dernières lignes indiquent que le module a été téléchargé avec succès.

NB : le fichier mypackage.cap est obtenu après compilation de l'applet avec Jbuilder, il se trouve dans le dossier (oncard\mypackage\javacard) du projet JavaCard.

II-3- 4- Sélection de l'applet

Pour sélectionner l'applet après avoir lancé le JCard Manager, on choisit dans la liste decommandes OP, la commande Select. Ensuite, on tape l'AID de l'applet et on clique sur Go pour envoyer la commande à la carte. Dans le cas du simulateur, le résultat de la commande est affiché simultanément dans la zone de messages du Jcard Manager.

II-3- 5- Effacement du paquetage et de l'applet

Pour effacer l'applet de la carte, on doit sélectionner à partir de la liste des commandes OP, la commande Delete. Dans la case identifier of the package or applet to delete, on saisit tout d'abord le code AID de l'applet après on clique sur Go ; ensuite, on tape le code AID du paquetage suivi encore du bouton Go. Cet ordre doit être respecté pour recevoir dans la zone de messages le code de succès.

II-3-6 Explication et exécution des fonctions de notre applet

II-3-6-1 code source de l'applet et explication

Voici la structure générale de notre applet

NB : Vous trouverez en annexe le programme source complet.

II-3-6.2 Exécution du programme

6.2.1 Lecture du contenu de la carte

« CLA » : décrit la classe d'instruction indiquant la structure et le format pour une catégorie de commande APDU. D'après le code, la constante a été déclarée comme (byte) 0x80.

static final byte APP_CLA = (byte) 0x80;

« INS » :représente l'instruction de la commande. Par ailleurs, il en existe trois dont celle-ci (lecture du prix de la carte) qui est déclarée comme (byte) 0x10.

final static byte LECT_INS = (byte) 0x10;

« Lc » : indique la longueur des données de commande.

« Le » : indique la longueur prévue des données de réponse. Dans ce cas, aucune réponse n'est attendue.

Le prix actuel dans la carte est de 127 d'après la réponse 7F

6.2.2 Comparer le prix avec celui de la carte

« CLA » : décrit la classe d'instruction indiquant la structure et le format pour une catégorie de commande APDU. D'après le code, la constante a été déclarée comme (byte) 0x80.

static final byte APP_CLA = (byte) 0x80;

« INS » : représente l'instruction de la commande. Par ailleurs, il en existe trois dont celle-ci (comparaison avec le prix qui existe dans la carte) qui est déclarée comme (byte) 0x20.

final static byte COMP_INS = (byte) 0x20;

« Lc » : indique la longueur des données de commande.

« Le » : indique la longueur prévue des données de réponse. Dans ce cas, aucune réponse n'est attendue.

« Data » : indique le prix à envoyer à la carte pour être comparé avec celui qui existe dans la carte.

6.2.3 Réinitialisation du prix de la carte

CLA décrit la classe d'instruction indiquant la structure et le format pour une catégorie de commande APDU. D'après le code, la constante a été déclarée comme (byte) 0xB0.

static final byte APP_CLA = (byte) 0x80;

INS représente l'instruction de la commande. Par ailleurs, il en existe trois dont celle-ci (réinitialisation du prix de la carte à la valeur maximale) qui est déclarée comme (byte) 0x20.

final static byte INIT = (byte) 0x30;

Lc indique la longueur des données de commande.

Le indique la longueur prévue des données de réponse. Dans ce cas, aucune réponse n'est attendue.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Les esprits médiocres condamnent d'ordinaire tout ce qui passe leur portée"   François de la Rochefoucauld