Post on 14-Jan-2016
description
transcript
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Command APDU
Response APDUJava Card
Bereich der DataLayer Gruppe
GUI Gruppe Treiber Gruppe
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Header (mandatory)
CLA INS P1 P2
Body (optional)
Lc DATA Le
Command APDU
– CLA - indicates the type of command (ISO, prop.)
– INS - specifies the instruction to be performed
– P1 and P2 - instruction parameters
– Lc - number of bytes in the data field
– Data - command optional data
– Le - number of bytes expected in the response
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Trailer (mandatory)Body (optional)
SW1DATA SW2
Response APDU
– Data - command optional response
– SW1 and SW2 - status word
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Die Aufgaben des DataLayer– Umwandeln der übergebenen Parameter ( z.B.
Abfahrtszeit ) in Hex-Werte und erstellen des Sendbuffers.
– Auslesen des Recvbuffers und Übergabe der Werte an die GUI.
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Erschwerende Umstände
– Häufig wechselnde Anpassungen der Spezifikationen erforderten einige Mühen bei der Implementierung.
– Aufgrund der Positionierung zwischen Treiber und GUI konnte die korrekte Funktionalität lediglich simuliert werden, da Tests im Gesamtsystem erst nach dem Zusammensetzen aller Teile möglich waren.
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Entwicklung einer Testumgebung– Aufruf der verfügbaren Funktionen– Simulation der zu übergebenden Daten– Ausgabe der Ergebnisse– Überprüfung der „Status Words“
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Testumgebung
Beispiel CarInit:
public String initCar(String KMStand ,String AbfahrtsPLZ)
Spezifikation:
KMStand 4 Byte AbfahrtsPLZ 4 Byte AnzahlTrips 1 Byte
Keine Rückgabe
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Testausgabe am Beispiel: public String initCar(String KMStand ,String AbfahrtsPLZ)
Aufruf der Methode:PkwGuiDataLayer v_Pkw = new PkwGuiDataLayer(); ergebnis = v_Pkw.initCar("00198765","00085221");System.out.println("InitCar-Ergebnis:" + ergebnis);PkwGuiDataLayer.printByteArray(v_Pkw.sendbuffer);PkwGuiDataLayer.printByteArray(v_Pkw.recvbuffer);
Ausgabe des Ergebnis:InitCar-Ergebnis:o
v_Pkw.sendbuffer:Oxcl* Ox20* Ox0* Ox0* Ox8* Ox0* Ox13* Ox57* Ox41* Ox0* Ox8* Ox34* Ox29* Ox0
v_Pkw.recvbuffer:* Ox90* Ox0 KMStand AbfahrtsPLZ
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PINDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String verify(string PIN, int FID)
0x
AB
0x
05
0x
00
0x
00
0x
05
PIN
FID
0x
01
Exception Code e(xxxx), xxxx = Rückgabewerte des oncard PIN Applet
oder ox, x = Int-Wert der FID
public String addPIN (string PIN, int FID)
0x
AB
0x
04
0x
00
0x
000x 05
PIN
FID0x 00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PINDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String deletePIN (int FID)
0x
AB
0x
03
0x
00
0x
00
0x
01FID
0x
00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
public String getUsers ()
0x
AB
0x
06
0x
00
0x
00
0x
00
0x
000x 04
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder Success-Code oxxxx, xxxx = Bitmaske der gesetzten FID‘s
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PINDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String unBlock (String PUK)
0x
AB
0x
12
0x
00
0x
00
0x
04PUK
0x
01
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PKWDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String WriteStart (string AZS)
0x
AB
0x
25
0x
00
0x
00
0x
05AZS
0x
00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
public String WriteEnd (string APLZ, string KMS, string AZS)
0x
AB
0x
26
0x
00
0x
00
0x
13
APLZ KMS AZS
0x
00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PKWDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String GetMiles ()
0x
AB
0x
24
0x
00
0x
00
0x
00
0x
00
0x
00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder Success-Code o(String km)
public String InitCar (string KMS, string APLZ)
0x
AB
0x
20
0x
00
0x
00
0x
08KMS APLZ
0x
00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PKWDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String ReadData ()
0x
AB
0x
21
0x
00
0x
00
0x
00
0x
00
0x
20
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder Success-Code o(String Data)
public String DeleteData ()
0x
AB
0x
22
0x
00
0x
00
0x
00
0x
00
0x
00
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder o als Success-Code
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
PKWDataLayer Methoden
Methode Command APDU ReturnwerteCLA INS P1 P2 Lc Data Le
public String ReadInitData ()
0x
AB
0x
23
0x
00
0x
00
0x
00
0x
00
0x
09
Exception Code e(xxxx)xxxx = Rückgabewerte des oncard PIN Applet oder Success-Code o(String Data)
Fachhochschule München, Projektstudium Chipkarten SS 2002
8. DataLayer
Abschließend
– Sehr interessantes Thema– Gute Einführung durch die Vorlesungen am Anfang des Semesters– Guter Einblick in die technischen Details der Chipkarten Programmierung
– Etwas Chaotisch ( Absprache mit anderen Gruppen )– Ständige Änderungen der Spezifikation