- APDU = Application Protocol Data Unit
- CLA = CLAss
- INS = INStruction
- P1 = Parameter 1
- P2 = Parameter 2
- Lc = Length cmd
- Le = Length expected
- UICC = card, simcard
- Terminal = HP atau reader
Bab ini akan menjelaskan atau mendefinisikan commands dan responses APDU yang disupport oleh UICC.
10.1 Command APDU Structure
Sub bab ini menjelaskan struktru umum dari suatu Aplication Protocol Data Unit (APUD) yang digunakan oleh protokol aplikasi diatas protokol transmisi ketika mengirimkan command ke card.
APDU command terdiri dari header dan bagian body. Isi dari APDU command digambarkn pada tabel 10.1 di bawah. Header terdiri dari CLA, INS, P1, dan P2 yang merupakan bagian mandatory dan bagian optional adalah bagian body yang terdiri dari Lc, data, dan Le. Parameter-parameter ini akan dijelaskan lebih lanjut pada 10.1.1 sampai 10.1.6.
Ada empat kasus dari struktur C-APDU yang memungkinkan seperti didefinisikan pada table 10.2
10.1.1 Coding of Class Byte
Standard ini mendukung CLA seperti yang didefinisikan pada tabel 10.3 dan tabel 10.4a. Selain itu, pada command chaining, yang menggunakan b5 pada class byte, seperti didefinisikan pada ISO/IEC 7816-4 tidak didukung pada standard ini. Jika card mendukung mekanisme logical channel, jumlah maksimum logical channel yang tersedia ditunjukkan pada data object kapabilitas card dari historical bytes pada ATR (lihat ISO/IEC 7816-4). Jika data object kapabilitas card tidak ada, hanya basic logical channel yang disupport.
Aplikasi pada UICC yang mendukung penggunaan secure messaging pada logical channel harus membuang byte kelas dari perhitungan signature untuk verifikasi message atau mengeset kelas byte tersebut ke nilai default. Terminal dapat mengganti logical channel dimana aplikasi dieksekusi terhadap logical channel yang digunakan oleh secure messaging untuk signature verification.
Tabel 10.3 menspesifikasikan format byte kelas untuk standard logical channel. Bit b5 selalu diset ke 0. Bit b4 dan b3 digunakan untuk indikasi secure messaging (lihat tabel 10.4a). Bit b2 dan b1 menunjukkan logical channel yang digunakan. Logical channel diberi nomor dari 1 sampai 3 (untuk standar logical channel).
Tabel 10.4a menspesifikasikan format dari byte kelas untuk extended logical channel. Bit b6 menunjukkan secure messaging (lihat tabel 10.4b). Bit b5 selalu diset ke 0. Bit b4 sampai bb1 menunjukkan nomor dari 0 sampai 15; nomor ditambah 4 menunjukkan nomor logical channel dari 4 sampai 19 (extended logical channels).
Secara default, tidak ada secure messaging yang disupport oleh card (i.e b3=b4=0 pada tabel 10.3, dan b6=0 pada tabel 10.4a) kecuali jika disebutkan oleh suatu aplikasi.
10.1.2 Coding of Instruction Byte
Secara default, tidak ada secure messaging yang disupport oleh card (i.e b3=b4=0 pada tabel 10.3, dan b6=0 pada tabel 10.4a) kecuali jika disebutkan oleh suatu aplikasi.
10.1.2 Coding of Instruction Byte
Tabel 10.5 dibawah menggambarkan format INStruction byte dari suatu commands.
10.1.3 Coding of Parameter Bytes
Nilai dari parameter P1 dan P2 tergantung dari commannya. Jika parameter ini tidak digunakan, nilainya diset ke '00'. Format dari parameter bytes ditunjukkan pada subbab command definition.
10.1.4 Coding of Lc Byte
Jumlah byte data yang terdapat pada data field dari command APDU ditunjukkan pada parameter Lc. Lc sifatnya optional pada command APDU. Namun demikan, jika terdapat Lc pada command APDU, data field terdiri dari Lc pada byte berikutnya. Terminal dapat mengirim 1 sampai 255 byte dari command data.
10.1.5 Coding of Data Part
10.1.3 Coding of Parameter Bytes
Nilai dari parameter P1 dan P2 tergantung dari commannya. Jika parameter ini tidak digunakan, nilainya diset ke '00'. Format dari parameter bytes ditunjukkan pada subbab command definition.
10.1.4 Coding of Lc Byte
Jumlah byte data yang terdapat pada data field dari command APDU ditunjukkan pada parameter Lc. Lc sifatnya optional pada command APDU. Namun demikan, jika terdapat Lc pada command APDU, data field terdiri dari Lc pada byte berikutnya. Terminal dapat mengirim 1 sampai 255 byte dari command data.
10.1.5 Coding of Data Part
Struktur dari data field spesifik untuk tiap command jika memang ada dalam command tersebut atau dalam respon APDU.
10.1.6 Coding of Le Byte
10.1.6 Coding of Le Byte
Maksimum jumlah byte yang diharapkan pada respon APDU ditunjukkan oleh parameter Le, yang sifatnya optional. Artinya jika terminal tidak mengharapkan suatu data pada respon APDU, Le tidak ada pada command APDU. Namun begitu, jika ternyata terdapat Le pada command APDU, data field pada respon APDU diharapkan untuk berisi Le bytes.
Le diset ke '00' menunjukkan bahwa terminal mengharapkan untuk menerima jumlah maksimum dari byte yaitu 256 pada respond APDU. UICC dapat mengembalikan beberapa byte dari respond APDU dari 1 sampai 256 byte, dengan catatan Le diset ke '00'.
10.2 Response APDU Structure
Le diset ke '00' menunjukkan bahwa terminal mengharapkan untuk menerima jumlah maksimum dari byte yaitu 256 pada respond APDU. UICC dapat mengembalikan beberapa byte dari respond APDU dari 1 sampai 256 byte, dengan catatan Le diset ke '00'.
10.2 Response APDU Structure
Respon APDU terdiri dari data field yang sifatnya optional dan bagian status yang sifatnya mandatory dan dibagi kedalam 2 bytes yaitu SW1 dan SW2. Jumlah byte yang diterima pada respon APDU disimbolkan sebagai Lr (length of response data field). Struktur pada respond APDU ditunjukkan pada tabel 10.6 dibawah :
Penjelasan lebih pada SW1 dan SW2 terdapat pada sub bab berikutnya.
10.2.1 Status Conditions Returned by the UICC
Status dari card setelah memproses suatu command ditunjukkan pada byte SW1 dan SW2. Sub bab ini menspesifikasikan coding of status bytes.
10.2.1.1 Normal Processing
10.2.1.2 Postponed Processing
10.2.1.3 Warnings
10.2.1.4 Execution Errors
10.2.1.5 Checking Errors
10.2.1.5.1 Functions in CLA not Supported
10.2.1.5.2 Command not Allowed
10.2.1.5.3 Wrong Parameters
10.2.1.6 Application Errors
10.2.2 Status Words of Commands
Tabel 10.16 dibawah menunjukkan kemungkinan status yang kembalikan untuk suatu command (kemungkinan yang dapat terjadi ditandai dengan arsiterik *)
Respon dengan '91 XX' dan '93 XX' hanya dapat diberikan oleh UICC ketermina yang mendukung CAT (lihat 102 223).
Aksi yang dilakukan terminal ketika menerima respon APDU dari ENVELOPE command dengan status word '6F XX', '62 XX', dan '63 XX' didefinisikan pada sub bab 7.4.2.2.
10.2 Logical Channels
Command yang mengacu pada suatu logical channel tertentu membawa nomor logical channel dengan :
Penjelasan lebih pada SW1 dan SW2 terdapat pada sub bab berikutnya.
10.2.1 Status Conditions Returned by the UICC
Status dari card setelah memproses suatu command ditunjukkan pada byte SW1 dan SW2. Sub bab ini menspesifikasikan coding of status bytes.
10.2.1.1 Normal Processing
10.2.1.2 Postponed Processing
10.2.1.3 Warnings
10.2.1.4 Execution Errors
10.2.1.5 Checking Errors
10.2.1.5.1 Functions in CLA not Supported
10.2.1.5.2 Command not Allowed
10.2.1.5.3 Wrong Parameters
10.2.1.6 Application Errors
10.2.2 Status Words of Commands
Tabel 10.16 dibawah menunjukkan kemungkinan status yang kembalikan untuk suatu command (kemungkinan yang dapat terjadi ditandai dengan arsiterik *)
Respon dengan '91 XX' dan '93 XX' hanya dapat diberikan oleh UICC ketermina yang mendukung CAT (lihat 102 223).
Aksi yang dilakukan terminal ketika menerima respon APDU dari ENVELOPE command dengan status word '6F XX', '62 XX', dan '63 XX' didefinisikan pada sub bab 7.4.2.2.
10.2 Logical Channels
Command yang mengacu pada suatu logical channel tertentu membawa nomor logical channel dengan :
- Dua LSB dari CLA byte yang didefinisikan pada tabel 10.3. Logical channel dinomori dari 1 sampai 3. Basic logical channel (nomor 0) selalu ada secara permanent.
- Empat LSB dari CLA byte yang didefinisikan pada tabel 10.4a. Logical channel dinomori dari 4 sampai 19 (extended logical channel).
MANAGE CHANNEL command harus digunakan untuk membuka dan menutup suatu logical channel. Nomor channel dimasukkan oleh UICC.
No comments:
Post a Comment