51
 samia.bouzefra [email protected] - CEDRIC ( CNAM) - 1 1 La carte à puce et la Tec hnologi e Java La carte à puce et la Tec hnologi e Java Samia Bouzefrane Maître de Conférences CEDRIC –CNAM [email protected] http://cedric.cnam.fr/~bouzefra samia.bouzefra [email protected] - CEDRIC ( CNAM) - 2 2 L :  L :

Cartes Java Card RMI

Embed Size (px)

Citation preview

La carte puce et la Technologie Java La carte puce et la Technologie Java

Samia Bouzefrane Matre de Confrences CEDRIC CNAM [email protected] http://cedric.cnam.fr/~bouzefra

1

[email protected] - CEDRIC ( CNAM) -

La carte puce : :introduction et principe La carte puce introduction et principe

2

[email protected] - CEDRIC ( CNAM) -

La carte puce aujourdhuiMontique : - Carte bancaire : Groupement Cartes Bancaires, nouvelles cartes EMV, etc. - Porte-monnaie : Octopus, Moneo en France, Proton en Belgique, Geldkarte en Allemagne Identification : Cartes d'identit nationales (eID en Belgique), E-passeports (aot 2006 en France) Enseignement (comme carte d'tudiant et/ou de restauration) Tlphonie mobile (carte SIM) Secteur mdical (carte Vitale en France, carte SIS en Belgique). Titre de transport (Passe Navigo Paris, Oyster Londres, Korrigo (un seul titre de transport pour tous ses dplacements en transports en commun ). Scurit informatique (authentification forte et signature lectronique): carte dot dun cryptoprocesseur pour la gnration des cls et le stockage de la cl prive).3 [email protected] - CEDRIC ( CNAM) -

Historique Invention de la carte puce1967-1968: Jrgen Dethloff et Helmut Grtrupp ingnieurs allemands (dposent un brevet en 1969)

1970: Kunitaka Arimura japonais dpose un brevet en mars 1970 au Japon

1971: Paul Castrucci de IBM dpose aux USA un brevet intitul Information Card

1974-1979 : Roland Morno franais dpose 47 brevets dans 11 pays (cre ensuite la socit Innovation) Implication industrielle de Bull et Schlumberger

4

[email protected] - CEDRIC ( CNAM) -

Premire carte puce

1979: 1re carte base de microcontrleur Fabrique par Motorola pour Bull CP8 Possde une UC de type 6805 (micro-contrleur 8 bits de Motorola)

1re implmentation de la smart card (CP8) RAM : 36 octets EPROM : 1ko ROM : 1,6 ko

5

[email protected] - CEDRIC ( CNAM) -

Famille de produitscarte mmoire carte logique cble carte microprocesseur

6

[email protected] - CEDRIC ( CNAM) -

Dveloppement dune application

Carte mmoire = X zones mmoires Carte micro-processeur : installation de vrais programmes

7

[email protected] - CEDRIC ( CNAM) -

Cartes microcontrleurCartes puce intelligentes Comportent un microcontrleur : - UC - PROM - RAM - EEPROM - interface dE/S - crypto processeur Processeur : 16 ou 32 bits EEPROM : de 1Ko 128 Ko (256 Ko pour une Java Card ou une Basic Card) Interface srie: UART simplifi

dans le mme circuit

8

[email protected] - CEDRIC ( CNAM) -

Synoptique interne dune carte microcontrleur

9

[email protected] - CEDRIC ( CNAM) -

Fonctionnement

10

[email protected] - CEDRIC ( CNAM) -

Les grandes familles de SE

Les prmisses (avant 1990): - M4, BO, COS,... Mono-application Plus ou moins fig dans les fonctions et structures COS : possibilit dajouter des fonctions Les volutions (1990-1995) : - MP, MP100, MCOS - Multi-application - CQL (1993), Basic Card,.... En avant vers louverture... - Java Card - .Net

11

[email protected] - CEDRIC ( CNAM) -

Architecture matrielle aujourdhui

CPU : 8, 16 & 32 bits, - Coeur 8051, AVR, ARM, MIPS, propritaire Mmoires : - RAM : 1 4 Ko - NVM (EEPROM/Flash) : 16 32 Ko - ROM : 32 64Ko Co-processeur - Java Card : excution directe du Byte Code Java Card Technology 2.2

12

[email protected] - CEDRIC ( CNAM) -

Caractristiques physiques dune carte SIM

Dbut des annes 90: Une carte SIM : un CPU (8 bits), RAM (128 octets), ROM (7 Ko), EEPROM (3 Ko). Anne 2008 : Une carte SIM : un CPU (32 bits), RAM (16 Ko), ROM (512 Ko), EEPROM/FLASH (512 Ko), processeur ddi au calcul cryptographique. La ROM (Read Only Memory) contient le systme d'exploitation de la carte, les mcanismes de scurit (algorithmes spcifiques (API GSM). l'EEPROM (Electrically Erasable Programmable Read Only Memory) contient des rpertoires dfinis par norme GSM (tels que les numros de tlphones l'abonn) et des donnes lies aux applets (service de messages courts et applications spcifiques). la RAM (Random Access Memory) permet d'effectuer des calculs ou de charger des instructions et les excuter.13 [email protected] - CEDRIC ( CNAM) -

La normalisation La normalisation

14

[email protected] - CEDRIC ( CNAM) -

Les standards

Les normes lies la carte : ISO, ETSI, (tlcommunications, GSM) EMV, (cartes de paiement) ICAO, (agence de lONU, biomtrie, passeport) Sant, ...

15

[email protected] - CEDRIC ( CNAM) -

Normes principales des cartes contact : lISO 7816

LISO 7816 Idenfication cards Integrated circuit cards with contacts publi par lISO (International Organisation for Standardisation) le plus important standard dfinissant les caractristiques des cartes puce qui fonctionnent avec un contact lectrique 15 normes sont proposes pour les cartes contact.

16

[email protected] - CEDRIC ( CNAM) -

Normes principales des cartes contactLa norme ISO 7816-1 prcise les caractristiques physiques de la carte

La norme ISO 7816-2 dfinit la position et le brochage des contacts de la carte

La norme ISO 7816-3 dfinit les niveaux lectriques utiliss pour le dialogue avec la carte

La norme ISO 7816-4 dfinit les commandes de base des cartes puce

17

[email protected] - CEDRIC ( CNAM) -

La norme ISO 7816-1ISO 7816-1 : rvis en mars 1998 dfinit les caractristiques physiques des cartes puce contact, ex : la gomtrie, la rsistance, les contacts, etc.

18

[email protected] - CEDRIC ( CNAM) -

Caractristiques mcaniques des cartes puce

Mme si on connat en gnral deux formats de la carte puce Celui de la carte bancaire Celui de la carte SIM

3 formats normaliss : ID1, ID00 et ID000

19

[email protected] - CEDRIC ( CNAM) -

Les 3 formatsID 01

ID 00

ID 000

20

[email protected] - CEDRIC ( CNAM) -

Les 3 formatsLe fabricant produit une seule taille (ID1), le client final pourra rduire ses dimensions au format ID00 ou ID000 (ex. carte SIM)

21

[email protected] - CEDRIC ( CNAM) -

Normalisation AFNOR / ISOLa position des contacts : position AFNOR et position ISO

Carte ISO

Carte AFNOR

22

[email protected] - CEDRIC ( CNAM) -

LISO 7816-2

Elle spcifie le dimensionnement physique (extrieur) des contacts de la puce. 2 des 8 contacts rservs une utilisation future (RFU) sont redfinis pour lutilisation USB dans la norme ISO 7816-12.

Dimension et emplacement des contacts, rvis en mars 1998.

23

[email protected] - CEDRIC ( CNAM) -

LISO 7816-2

Valeurs en mm

24

[email protected] - CEDRIC ( CNAM) -

LISO 7816-2

Vcc: tension lectrique (3 5 V) RST: cest le reset , initialise le microprocesseur (warm reset) cold reset = coupure et rtablissement de lalimentation CLK: signal dhorloge car pas dhorloge sur la carte GND: masse Vpp: utilis dans les anciens modles pour avoir une autre source dalimentation I/O: utilis pour le transfert des donnes et des commandes entre la carte et le lecteur. La communication half-duplex.25 [email protected] - CEDRIC ( CNAM) -

Signification des contactsVcc : tension dalimentation positive de la carte fournie par le lecteur (4.75V Vcc 5.25V) Vcc=3.3V pour une carte SIM RST: commande de reset de la carte, fournie par le lecteur (entre non obligatoire avec certaines cartes mmoire) CLK: Clock, horloge fournie la carte par le lecteur - rythme les changes de donnes entre la carte et le lecteur RFU (Reserved for Future Use) non utiliss pour le moment GND masse lectrique de la carte Vpp: tension de programmation de la carte fournie par le lecteur -inutilis aujourdhui -21V ncessaire dans les premires cartes pour crire dans des EPROM I/O entres/sorties des donnes - ligne bidirectionnelle (carte26

lecteur)[email protected] - CEDRIC ( CNAM) -

LISO 7816-3Elle dfinit linterface lectrique et les protocoles de transmission : Les protocoles de transmission (TPDU, Transmission Protocol Data Unit) T=0 : protocole orient octet, T1 : protocole orient paquet, T=14 : rserv pour les protocoles propritaires, La slection dun type de protocole, La rponse un reset (ATR, ou Answer To Reset) qui correspond aux donnes envoyes par la carte immdiatement aprs la mise sous tension, Les signaux lectriques, tels que le voltage, la frquence dhorloge et la vitesse de communication.

27

[email protected] - CEDRIC ( CNAM) -

ATR dfini dans lISO 7816-3

ATR (Answer To Reset): Ds que la carte est mise sous tension, elle envoie un message de rponse dinitialisation appel ATR, il peut atteindre une taille maximale de 33 octets. Il indique lapplication cliente les paramtres ncessaires pour tablir une communication avec elle. Paramtres envoys par la carte : - Le protocole de transport ; - Taux de transmission des donnes ;

28

[email protected] - CEDRIC ( CNAM) -

Le protocole APDU Le protocole APDU

29

[email protected] - CEDRIC ( CNAM) -

LISO 7816-4

Elle dfinit les messages APDU (Application Protocol Data Units) utiliss par les cartes puce pour communiquer avec le lecteur.

Les changes seffectuent en mode client-serveur,

Le terminal est toujours linitiateur de la communication.

30

[email protected] - CEDRIC ( CNAM) -

LISO 7816-4 : Le protocole APDU

terminal

carte

Commande APDU (xxxx)

Rponse APDU (xxxx)

31

[email protected] - CEDRIC ( CNAM) -

Format des commandes APDU

Commande APDU Entte obligatoire CLA INS P1 P2 Lc Corps optionnel Data field Le

CLA (1 octet): Classe dinstructions --- indique la structure et le format pour une catgorie de commandes et de rponses APDU INS (1 octet): code dinstruction: spcifie linstruction de la commande P1 (1 octet) et P2 (1 octet): paramtres de linstruction Lc (1 octet): nombre doctets prsents dans le champ donnes de la commande Avec Le=0, - Si cde dcriture => pas de donnes utiles - Si cde de lecture => la cde doit retourner 256 octets de donnes utiles Data field (octets dont le nombre est gal la valeur de Lc): une squence doctets dans le champ donnes de la commande

32

[email protected] - CEDRIC ( CNAM) -

Format des rponses APDURponse APDU Corps optionnel Data field SW1 Partie obligatoire SW2

Data field (longueur variable): une squence doctets reus dans le champ donnes de la rponse SW1 (1 octet) et SW2 (1 octet): Status words (Mots dtat)tat de traitement par la carte

SW1 SW2 =

0x90 0x00 0x6E 0x00 0x6D 0x00 0x6B 0x00 0x67 0x00 0x98 0x04 0x98 0x40

Succs CLA error INS error P1, P2 error LEN error Bad PIN Card [email protected] - CEDRIC ( CNAM) -

33

Exemples de classes : CLA

34

[email protected] - CEDRIC ( CNAM) -

LISO 7816-5Elle dfinit la procdure denregistrement et dattribution des identifiants des applications (AID, ou Application IDentifier). Un unique AID est associ chaque application = {RID, PIX} RID : le numro denregistrement du fournisseur dapplication attribu par la Copenhagen Telephone Company Ltd. Le RID doit tre le mme pour le paquetage et l'applet.

Application identifier (AID) National registered provider (RID) 5 octets application Proprietary application extension (PIX) 0 to 11 octets identifier

35

[email protected] - CEDRIC ( CNAM) -

La gestion des fichiers dune carte puce La gestion des fichiers dune carte puce

36

[email protected] - CEDRIC ( CNAM) -

Les fichiersCartes mmoire: composes de zones mmoire destines la lect/crit Cartes puce: comportent un vritable systme de fichiers - cration/destruction de fichiers - attribuer un nom un fichier - dfinir des restrictions daccs en Letc/crit - lire/crire dans un fichier - le plus contraignant est lchange en binaire entre le lecteur et la carte

37

[email protected] - CEDRIC ( CNAM) -

Arborescence des fichiers et rpertoiresLa norme ISO 7816-4 dfinit larborescence de fichiers Vocabulaire propre aux cartes puce - EF (Elementary Files): fichiers lmentaires (feuilles de larbre) - DF (Dedicated Files) : quon peut appeler Directory Files (rpertoires) - MF (Master File): fichier matre, cest le rpertoire racine

38

[email protected] - CEDRIC ( CNAM) -

Types de FichiersFichier structure transparente : suite doctets (min=1 octet, max: 255 octets) Fichier structure linaire fixe : enregistrements de taille fixe, indic partir de 1 Fichier structure linaire variable: enregistrements de taille variable, indic partir de 1 Fichier structure linaire cyclique : a la structure linaire fixe ferme, avec indice 1 = dernier enregistrement crit.

39

[email protected] - CEDRIC ( CNAM) -

Les commandes de gestion de fichiers

Binary (read, write, search, erase) Record (read, write, update, append, search, erase) Get/Put Data

40

[email protected] - CEDRIC ( CNAM) -

Larrive de la technologie Java CardAnne 1979 1980-81 1983 1984 1987 1989 1998 vnement Premire carte fabrique par Motorola pour Bull CP8 Premires exprimentations de tlvision payante Premires cartes tlphoniques France Tlecom Premire version de la carte bleue base de carte Bull CP8 Publication des normes ISO 7816 Premires cartes GSM pour tlphones mobiles (Gemplus) Premires cartes Java Card

41

[email protected] - CEDRIC ( CNAM) -

La technologie Java Card : :introduction et principe La technologie Java Card introduction et principe

42

[email protected] - CEDRIC ( CNAM) -

Java Card - IntroductionBesoin des systmes programmables Recherche de solution volutive (dpasser la ROM) Les applications : Longues dvelopper Statiques dans leurs fonctions Des tentatives 1re version: octobre 1996, dmarrage et produit rel en 1998, une ralit industrielle partir de 2000. En 2004, le nombre de Java Cards vendus a atteint le milliard. En 2007, 3 milliards de cartes SIM fabriques

43

[email protected] - CEDRIC ( CNAM) -

tapes du dveloppement de lindustrieLa carte microprocesseur et les grandes tapes de dveloppement de la technologie : Les pionniers (1975-1985): premires ides (les bases technologiques sont tablies) 1985-1995: la technologie est amliore - marchs et dploiements importants: CB, GSM - limites : besoin de davantage de flexibilit 1995-2005 : explosion du march, nouveau paradigme avec - les cartes volutives bases sur Java Card 2006: 1,2 billions de tlphones mobiles utilisant des cartes SIM/Java Card 1,65 billions cartes puce/ Java Card (source site de Sun ) 2005-???: la carte devient un lment du rseau -Les SCWS (Smart Card Web Server) - .Net44 [email protected] - CEDRIC ( CNAM) -

Larrive de la technologie Java CardNovembre 1996, premire proposition dutilisation de Java pour les cartes est faite par une quipe de Schlumberger (Austin) proposition de Java Card API permettant la programmation en Java de la carte Cest la Java Card 1.0 Bull, Gemplus et Schlumberger crent le Java Card Forum le JCF discute et propose Sun des spcifications Novembre 1997, publication de la spcification Java Card 2.0 Gemplus dmontre en oct./nov. CASCADE, le premier chip RISC 32 bit (ARM 7) avec de la mmoire Flash, une implmentation de la Java Card 2.0 et des DMIs (Direct Method Invocation), etc.

45

[email protected] - CEDRIC ( CNAM) -

Les volutions de la 2.xLa version 2.0 de la Java Card Specification introduit: un environnement dexcution La possibilit dcrire des applets avec une approche oriente objet (mme si le format de chargement ntait pas encore spcifi)

Mars 1999, la version 2.1 qui contient 3 parties est publie: Java Card API Specification Java Card Runtime Environment Specification Java Card Virtual Machine Specification

46

[email protected] - CEDRIC ( CNAM) -

Un lment de la technologie Java

47

[email protected] - CEDRIC ( CNAM) -

Une plate-forme Java Card (rsum)est une carte puce avec une machine virtuelle Java capable dexcuter des applications crites en Java

Les plateformes Java Card sont normalises par Sun et Java Card Forum Java est le langage de programmation le plus utilis dans les applications ddies la carte puce

48

[email protected] - CEDRIC ( CNAM) -

Java Card = Java + smart Card

49

[email protected] - CEDRIC ( CNAM) -

Le langage Java Card Le langage Java Card

50

[email protected] - CEDRIC ( CNAM) -

Acteurs dune Java Card

51

[email protected] - CEDRIC ( CNAM) -

Types supports

52

[email protected] - CEDRIC ( CNAM) -

Caractristiques non supportes jusqu V2.2.2Pas de Threads Pas de chargement dynamique Pas de Garbage Collector (ramasse-miettes, jusqu la version 2.2) Pas de clonage Pas de tableaux plusieurs dimensions Toutes ces caractristiques sont intgres dans la version 3.0 (pile TCP/IP, servlets, multi-threading, etc.) : spcification publie en mars 2008.

53

[email protected] - CEDRIC ( CNAM) -

Rsum des caractristiquesCaractristiques supportes boolean, byte, short Tableau une dimension Paquetage Java, classes, interface et exceptions Hritage, mthode abstraite, surcharge et cration dobjets (instantiation) int est optionnel Caractristiques non supportes long, double, float, char, String Tableau plusieurs dimensions Threads, srialisation Chargement dynamique de classes

Gestionnaire de scurit

54

[email protected] - CEDRIC ( CNAM) -

Caractristiques spcifiques Java CardObjets temporaires (APDU, Reset, Select) Atomicit Partage Gestion dexceptions sur la carte (runtime, ISO) API particulire : Java Card 2.1.x et 2.2 Mthodes spciales pour linstallation dapplets, dAPDUs et de slection

55

[email protected] - CEDRIC ( CNAM) -

Processus de dveloppement dapplets

Off-Card CAP file On-Card

56

[email protected] - CEDRIC ( CNAM) -

Comment crire une applet Comment crire une applet

57

[email protected] - CEDRIC ( CNAM) -

Construction dapplets Java CardUne application carte Code dans la carte : application serveur = Applet Java Card Code dans le terminal : application cliente Une application construite en 3 tapes criture de lapplication serveur (applet) Installation de lapplet dans la Java Card criture de lapplication cliente

58

[email protected] - CEDRIC ( CNAM) -

crire une applet Java CardJava Card API 2.1 tapes du dveloppement dune applet Spcifier les fonctions de lapplet : - spcifier les AIDs (Application IDentity) de lapplet et du paquetage auquel elle appartient - crire le corps de lapplet - compiler (.class) - convertir (.cap) - charger dans la carte

59

[email protected] - CEDRIC ( CNAM) -

Phases de dveloppement dune applet

Spcifier les fonctions de lapplet Assigner des AIDs lapplet et au paquetage contenant la classe de lapplet Concevoir les programmes de lapplet Dfinir linterface entre lapplet et le terminal

60

[email protected] - CEDRIC ( CNAM) -

Comportement dune applet

Application crite en Java Card Applet sur la carte est slectionne reoit des messages partir du lecteur traite ces messages retourne des donnes au lecteur est dslectionne

61

[email protected] - CEDRIC ( CNAM) -

Exemple de lapplet porte-monnaie lectronique

Les oprations offertes par lapplication : Lire le montant du porte monnaie, dbiter ou crditer son compte. Ces oprations sont implantes sur lapplet laide des mthodes suivantes : getBalance(), credit(), debit() Ces mthodes sont appeles directement par la mthode process(). Do: pour chaque opration dfinir une commande APDU qui dclenchera la mthode correspondante.

62

[email protected] - CEDRIC ( CNAM) -

Commandes de lapplet porte-monnaie lectroniqueCommande APDU CREDIT Commande APDU CLA 0xB0 INS 0x30 P1 0x0 P2 0x0 Lc 1 Data field Valeur crditer Le NS

Commande APDU DEBIT Commande APDU CLA 0xB0 INS 0x40 P1 0x0 P2 0x0 Lc 1 Data field Valeur dbiter Le NS

Commande APDU GET BALANCE Commande APDU CLA 0xB0 INS 0x50 P1 0x0 P2 0x0 Lc NS Data field NS Le 2

63

[email protected] - CEDRIC ( CNAM) -

Structure dune Applet/1-Inclure javacard.framework - lapplet doit hriter de la classe Applet - dclarer les constantes et variables - dans le constructeur de lapplet, prvoir linitialisation des variables dclares et lenregistrement auprs du JCREMonnaie (byte [] bArray, short bOffset, byte bLength) { balance = (short) 0x1000; register(); }

- Une mthode install pour linstallation de lapplet auprs du JCREpublic static void install (byte [] bArray, short bOffset, byte bLength) { new Monnaie (bArray, bOffset, bLength); }

Linstallation = cration de lobjet Applet et son enregistrement. - Deux mthodes select et deselect pour slectionner ou dslectionner lapplet, car avant toute utilisation dune applet, celle-ci doit tre slectionne.64 [email protected] - CEDRIC ( CNAM) -

Structure dune Applet/2-Une mthode process qui traite toute commande APDU reue du terminal:public void process (APDU apdu) throws ISOException { byte [] buffer = apdu.getBuffer(); if (selectingApplet()) return; . }

- La mthode process doit faire appel selectingApplet() car mme la commande APDU SELECT sera reue par la mthode process.

- Toute commande APDU traite ncessitera une rponse APDU

65

[email protected] - CEDRIC ( CNAM) -

Applet porte-monnaie lectronique/1import javacard.framework.*; public class APurse extends Applet { /* declaration de constantes */ // code of CLA byte in the command APDU header final static byte APP_CLA = (byte)0x80; // codes INS dans lentete de la commande APDU final static byte VERIF_INS = (byte)0x20; final static byte GET_BALANCE_INS = (byte)0x30; final static byte CREDIT_INS = (byte)0x40; final static byte DEBIT_INS = (byte)0x50; // Poids le plus faible a droite final static short MAX_BALANCE = (short)0x7fff; final static short MAX_TRANSACTION_AMOUNT = (short)0x3fff; final static byte [] MAX_BALANCE = {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF}; final static byte [] MAX_TRANSACTION_AMOUNT = {(byte) 0x00, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};

66

[email protected] - CEDRIC ( CNAM) -

Applet porte-monnaie lectronique/2

final static short SW_INVALID_AMOUNT = (short)0x6A83; final static short SW_AMOUNT_EXCEEDS_MAX = (short)0x6A82; final static short SW_NEGATIVE_BALANCE = (short)0x6A84; /* instance variables declaration */ byte [] balance; short balance; public void Monnaie (byte [] bArray, short bOffset, byte bLength) { balance = (short) 0x1000; register(); }

public static void install (byte [] bArray, short bOffset, byte bLength) { new Monnaie (bArray, bOffset, bLength); }

67

[email protected] - CEDRIC ( CNAM) -

Applet porte-monnaie lectronique/3

public boolean select () { return true; } public void deselect () { } public void process (APDU apdu) throws ISOException { byte [] buffer = apdu.getBuffer();

if (selectingApplet()) return;

68

[email protected] - CEDRIC ( CNAM) -

Applet porte-monnaie lectronique/4

if (buffer[ISO7816.OFFSET_CLA] != APP_CLA) ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED); switch (buffer[ISO7816.OFFSET_INS]) { case VERIF_INS : verify(apdu); break; case GET_BALANCE_INS : getBalance(apdu); break; case CREDIT_INS : credit(apdu); break; case DEBIT_INS : debit(apdu); break; default : ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); break; } }

69

[email protected] - CEDRIC ( CNAM) -

Applet porte-monnaie lectronique/5

public void credit (APDU apdu) { byte [] buffer = apdu.getBuffer(); byte lc = buffer[ISO7816.OFFSET_LC]; short bytesRead = apdu.setIncomingAndReceive(); if ((lc != BALANCE_RESP_SZ) || (bytesRead != BALANCE_RESP_SZ)) { ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); } short creditAmount = Util.makeShort(buffer[ISO7816.OFFSET_CDATA], buffer[ISO7816.OFFSET_CDATA+1]); if (creditAmount < 0) ISOException.throwIt(SW_INVALID_AMOUNT); if (creditAmount > MAX_TRANSACTION_AMOUNT) ISOException.throwIt(SW_INVALID_AMOUNT); if (((short)(balance + creditAmount) > MAX_BALANCE) || (((short)(balance + creditAmount) < 0))) ISOException.throwIt(SW_AMOUNT_EXCEEDS_MAX); balance = ((short) (balance + creditAmount)); } . } // fin de lapplet 7070

[email protected] - CEDRIC ( CNAM) -

criture dune applet pour une plateforme criture dune applet pour une plateforme Java Card RMI Java Card RMI

71

[email protected] - CEDRIC ( CNAM) -

Rappel : Etapes dun appel de mthode distante d m

Client Serveur de noms

Serveur

3. Interroger

2. Publier

Application Cliente

1. Exposer 4. Rcuprer Serveur dobjets

Objet distant

7. Appel mthodeSkeleton

5. Appel de mthode Stub 10. Retour

6. Arguments srialisation

8. Retour

9. Rsultat

72

[email protected] - CEDRIC ( CNAM) -

Etapes dun appel de mthode distante en JCRMI d mTerminalClient Service de noms 2. Enregistrer 0. CrerApplication Cliente

CarteServeur

3. Interroger

4. RcuprerApplet Serveur

1. Crer

Objet distant

7. Appel mthodeSkeleton

5. Appel de mthode Stub 10. Retour

6. Arguments srialisation

8. Retour

9. Rsultat

73

[email protected] - CEDRIC ( CNAM) -

Le service de noms

rmiService est un service de noms qui possde une table de hachage dont les cls sont des noms et les valeurs sont des rfrences aux objets distants ;

rmiService est un objet cr par lapplet ;

Tout objet distant cr par lapplet est enregistr dans rmiService ;

74

[email protected] - CEDRIC ( CNAM) -

Dvelopper une application JCRMI Ct Serveur (carte) /1 Ct

1. Dfinir une interface distante (Xyy.java) ;

2. Crer une classe implmentant cette interface (XyyImpl.java) qui sera lobjet distant (ou le service)

3. Compiler cette classe (javac XyyImpl.java) ;

4. Crer une applet qui jouera le rle du serveur dobjets (XyyServer.java) ;

5. Compiler lapplet serveur et linstaller sur la carte ;

75

[email protected] - CEDRIC ( CNAM) -

Dvelopper une application JCRMI Ct Serveur (carte): gnration de Stub Ct g6. Lancer le gnrateur rmic explicitement : Solaris and Linux platforms: rmic -classpath ../..;$JC_HOME/lib/javacardframework.jar -d examples/purse -v1.2 examples.purse.PurseImpl Microsoft Windows 2000 platform: rmic -classpath ../..;%JC_HOME%/lib/javacardframework.jar -d examples/purse -v1.2 examples.purse.PurseImpl On doit trouver dans examples/purse PurseImpl_Stub.class Purse.class 7. Linstallation de lapplet sur la carte permet la cration du service de noms rmiService et des objets enregistrer auprs de ce service;

76

[email protected] - CEDRIC ( CNAM) -

Dvelopper une application JCRMI Ct Client (terminal) Ct

8. La classe cliente qui sera crite doit disposer localement de : - linterface de lobjet distant et du - stub de lobjet (gnr pralablement par rmic lors de la compilation de lobjet distant) Le partage de lobjet distant se fait automatiquement grce JBuilder alors que le stub doit tre copi explicitement dans le rpertoire class du projet Client 9. Crer une classe cliente qui appelle les mthodes distantes de lobjet distant (XyyClient.java) ; 10. Compiler cette classe et lancer son excution.

77

[email protected] - CEDRIC ( CNAM) -

Objectifs du dveloppement en JCRMI d

Appeler le service (mthodes) offert par lapplet comme si le service se trouve sur le mme terminal que le client (faire abstraction de lendroit physique o se trouve le service appeler) Avoir un niveau dabstraction plus lev afin de ne pas manipuler par exemple le protocole APDU qui est dun niveau plus bas Sparer les spcifications fonctionnelles de lapplication des aspects nonfonctionnels (relatifs la communication avec la carte).

78

[email protected] - CEDRIC ( CNAM) -

Linterface de lobjet distant l- Inclure en plus de javacard.framework le package java.rmi - Linterface doit hriter de la classe java.rmi.Remotepublic interface Purse extends Remote { // on dclare les constantes utiliser // exemple public static final short BAD_ARGUMENT

= (short)0x6002;

// on dfinit les signatures des mthodes avec une leve // de lexception RemoteException et UserException si exception // dfinie par lutilisateur // exemple : public void debit(short m) throws RemoteException, UserException; }

79

[email protected] - CEDRIC ( CNAM) -

Implmenter linterface de lobjet distant Impl l l- La classe dimplmentation doit tendre CardRemoteObject pour dsigner lobjet distant - Cette classe doit implmenter linterface pour associer un code aux mthodes dfinies dans linterfacepublic class PurseImpl extends CardRemoteObject implements Purse { // dfinir le constructeur qui se contente dappeler la classe mre public PurseImpl() { super(); } // associer un code chaque mthode dfinie dans linterface // en utilisant Java standard // Exemple de la mthode debit public void debit(short m) throws RemoteException, UserException { if(m