Showing posts with label protocol. Show all posts
Showing posts with label protocol. Show all posts

Wednesday, October 5, 2016

Networking Protocol


Tuesday, February 17, 2015

11. Commands Part 1 - 102 221 v8

Berikut diterjemahkan bab 11 dari ETSI TS 102 221 v8. Beberapa istilah yang perlu diketahui yaitu :
  • MF = Master File
  • DF = Dedicated File
  • ADF = Application Dedicated File
  • CLA = CLAss
  • INS = Instruction
  • Lc = Length Command
  • Le = Length Expected
  • RFU = Reserved for Future Use
  • SFI = Short File Identifier
11.1 Generic Commands
Bab berikut mendaftar basic command dan responnya yang digunakan oleh aplikasi yang terdapat pada UICC. Dalam hal ini tergantung tiap aplikasi untuk menentukan command mana yang akan digunakan. Jika suatu aplikasi tidak mensupport suatu command, dia harus mengembalikan status word yang sesuai seperti yang dijelaskan pada 10.2.
11.1.1 SELECT
11.1.1.1 Functional Description
Fungsi ini (command SELECT) memilih suatu file sesuai dengan suatu methods yang dijelaskan pada bab 8.4. Setelah proses pemilihan tersebut berhasil, record pointer dan pointer tag saat ini menjadi tidak terdefinisi.
Input :
  • File ID, application ID, path atau empty.
Output :
  • Jika file yang dipilih ada MF, DF, atau ADF:
    • File ID, ukuran total file, PIN status dan data yang spesifik pada aplikasi
  • Jika file yang dipilih adalah EF:
    • File ID, ukuran file, ukuran total file, access condition, indikator invalidated/not invalidated, struktur EF, panjang record dalam kasus linear fixed structure atau cyclic structure dan reserved dan ukuran file maksimum untuk kasus struktur BER-TLV.
11.1.1.2 Command Parameters and Data
Jika P1='00' dan data field kosong, maka P2 harus diset ke '0C' (No data returned). Maka MF diset sebagai current directory.
Untuk mencegah ambiguitas ketika P1='00', urutan pencarian dibawah berlaku ketika memilih file dengan file ID dengan parameter :
  • Children langsung dari current DF;
  • Parent dari DF;
  • Childrend langsung dari parent DF;
Ketika P1 != '04', bit b2 dan b1 dari P2 tidak mempunyai arti apa-apa dan harus diset ke '0'.
Ketika P1 = '04', (i.e pemilihan dengan AID), AID yang terpotong dapat dispesifikasikan pada data field.
11.1.1.3 Response Data
Data respon berisi template File Control Parameter (FCP) dari file yang terpilih. Isi FCP tersebut tergantung dari file yang terpilih. Lihat keterangan berikutnya untuk daftar TLV yang dikembalikan untuk tiap case.
Untuk mengambil semua template FCP, maka Le harus diset ke '00'.
Nilai dari data object untuk FCP template seperti ditunjukkan pada sub bab 11.1.1.3.1. Data object sifatnya mandatory pada FCP template yang digunakan untuk mendeskripsikan setiap response. Data object yang baru dapat ditambahkan ke akhir dari respon data. Terminal tidak akan memperhatikan data object dengan tag yang tidak dapat disupport.
11.1.1.3.1 Response untuk MF, DF, atau ADF
Sub bab ini memperlihatkan daftar TLVyang dikembalikan ketika MF, DF, atau ADF dipilih.
11.1.1.3.2 Response for an EF
Berikut diperlihatkan daftar TLV yang dikembalikan ketika memilih EF.
11.1.1.4 File Control Parameters
11.1.1.4.1 File Size
MSB byte terletak pada bagian pertama pada value field.
Untuk transparent EF, ukuran file adalah panjang dari bagian body dari EF, dan untuk liner fixed atau cyclic EF, ukuran filenya adalah panjang recordnya dikali dengan jumlah record dari EF. Untuk BER-TLV structure EF, ukuran file sifatnya mandatory digunakan oleh data object yang telah teralokasi.
11.1.1.4.2 Total File Size
MSB terletak dibagian pertama pada value field.
Untuk EF, total file size menggambarkan alokasi memory untuk isi dan informasi struktural (jika ada) dari EF ini.
Untuk BER-TLV structure EF, informasi struktural harus memasukkan suatu administrasi overhead yang dibutuhkan untuk object TLV di file. Jika reserved file size sesuai dengan subab 11.1.1.4.6.Y didefinisikan untuk suatu file, setiap ruang memory, yang dialokasikan untuk file ini tetapi tidak sedang digunakan, harus dimasukkan dalam total file size.
Untuk DF, total file size menggambarkan jumlah dari total file size dari semua EF dan DF yang terdapat dalam DF ini ditambah jumlah memory yang tersedia dari DF ini. Ukuran dari informasi struktural dari DF yang terpilih tidak dimasukkan dalam total file size.
11.1.1.4.3 File Descriptor 
* File Descriptor.
 Isi : file descriptor menspesifikasikan aksesibilitas dari suatu file, type file, dan strukturnya.
 Format : lihat tabel 11.5 di bawah.
* Data coding byte.
 Format : Format data byte seperti yang terdapat pada ISO/IEC 7816-4. Nilai aktual tidak boleh dicek atau digunakan oleh terminal.
* Record Length.
Isi : record length menspesifikasikan panjang record ketika suatu record structured file terpilih.
Format : record length harus ada jika suatu record structured file (i.e untuk linear fixed atau cyclic files) terpilih. Dalam kasus ini, dia menunjukkan panjang record pada 2 byte. MSB terletak dibagian pertama pada value field.
* Number of records.
Isi : jumlah record menspesifikasikan jumlah record pada record structured file.
Format : jumlah record harus ada jika record structured file (i.e untuk linear atau cyclic files) dipilih. Pada kasus ini, dia menunjukkan jumlah record pada 1 byte saja.
11.1.1.4.4 File Identifier
11.1.1.4.5 DF Name
DF name adalah suatu string byte, AID, yang digunakan secara unik untuk mengidentifikasi suatu aplikasi dedicated file pada card.
11.1.1.4.6 Proprietary Information
Deskripsi constructed TLV object seperti terlihat di bawah.
Object TLV berikut didefinisikan untuk template proprietary (tag 'A5'). Object private TLV tambahan (bit b7 dan b8 dari byte pertama diset ke '1') mungkin ada setelah object TLV didefinisikan. Sebagai contoh, untuk suatu perusahaan manufaktur, pemberi, atau provider aplikasi, object TLV yang spesifik mungkin saja ada. Jika lebih satu TLV object dengan tag yang sama ditunjukkan pada constructed TLV, mereka harus digroupkan bersama sebagai suatu urutan/rangkaian untuk menspesifikasikan kegunaannya masing-masing.
Suatu aplikasi dapat memberi lebih dari satu konsumsi daya untuk aplikasi atau minimum application clock frequency data object.
11.1.1.4.6.1 UICC Characteristics
Jika bit b1 diset ke '1', penghentian clock diperbolehkan pada level tinggi atau rendah. Pada kasus ini, bi1 b3 dan b4 memberi informasi mengenai level pilihan (tinggi atau rendah) pada saat clock akan dihentikan.
Jika bit b1 diset ke '0', clock dapat dihentikan hanya jika kondisi mandatory b3 = '1' (i.e distop pada level tinggi) atau b4 = '1' (distop pada level rendah) dipenuhi. Jika semua 3 bit tersebut diset ke '0', maka clock tidak boleh dihentikan.
Supply voltage class, seperti didefinisikan pada 6.2.1, disupport jika bit diset ke '1'. Jika voltage class tidak disupport, maka akan diset ke '0'.
11.1.1.4.6.2 Application Power Consumption
Konsumsi daya suatu aplikasi ditunjukkan dengna tag '81' dalam constructed TLV object. Byte pertama menunjukkan suply voltage dimana konsumsi power dihitung. Format byte ini sama dengan suply voltage class yang ditunjukkan pada ATR, lihat tabel 6.1. Bit yang tidak digunakan diset ke RFU. Byte kedua menunjukkan konsumsi daya dalam mA (milli ampere). Bit b8 dan b7 adalah RFU. Bit b6 ke b1 menunjukkan konsumsi power dari aplikasi dalam mA. Konsumsi power ini dihitung pada frekuensi yang ditunjukkan pada field "Power consumption reference frequency" dari suatu aplikasi, nilai rata-rata diatas 1 ms atau maksimum clock frequency yang didukung oleh UICC jika tidak ada informasi yang diberikan. Terminal tidak akan memperhatikan nilai konsumsi power jika diset ke '00' dan 'FF'. Nilai yang lebih tinggi dari '3C' tidak akan diterjemahkan oleh terminal dan tidak akan digunakan, tetapi terminal masih tetap boleh menggunakan aplikasi ini.
Terminal akan mengevaluasi nilai konsumsi power yang diberikan pada respond command. Jika power supply class yang ditunjukkan pada respon tersebut tidak sedang digunakan, terminal akan melakukan perhitungan ulang sesuai nilai supply voltage kelas tersebut. Terminal harus menerima aplikasi tersebut jika hasil rekalkulasinya berada dalam batas-batas supply voltage class yang digunakan oleh terminal. Terminal dapat menerima suatu aplikasi yang melebihi nilai spesifikasi jika dia mensupport konsumsi power yang ditunjukkan oleh aplikasi.
Power consumption reference frequency disimbolkan dalam format hexadecimal. Resolusinya adalah 0,1 MHz, contohnya '0A' adalah 1 MHz dan 'FE' adalah 25,4 MHz. Nilai 'FF' menunjukkan bahwa tidak ada referensi frequency.
11.1.1.4.6.3 Minimum Application Clock Frequency
Minimum clock frequency dari suatu aplikasi ditandai dengan tag '82' dalam object TLV. TLB ini menunjukkan keterminal minimum clock frequency yang dibutuhkan aplikasi. Tergantung aplikasi untuk menspesifikasikan nilai yang dibutuhkan untuk suatu command atau prosedur tertentu untuk dieksekusi dalam waktu yang dibutuhkan. Suatu aplikasi dapat menunjukkan satu atau lebih minimum clock frequency jika dibutuhkan. Dalam kasus lebih dari satu object TLV yang ditunjukkan, maka tergantung aplikasi untuk menspesifikasikan untuk tujuan apa perbedaan nilai tersebut digunakan, contohnya urutan object TLV dalam TLV yang bersangkutan.
Minimum clock frequency dituliskan dalam format hexadecimal. Resolusinya adalah 0,1 MHz, contohnya '0A' adalah 1 MHz, dan 'FE' sama dengan 25,4 MHz. Jika object TLV ini tidak ada atau nilainya adalah 'FF', maka tidak ada minimum clock frequency yang ditunjukkan.
11.1.1.4.6.4 Amount of Available Memory
Jumlah memory yang tersedia untuk pembuatan DF atau EF pada DF yang terpilih (dan ADF pada/dibawah MF) atau untuk pembuatan object TLV  pada BER-TLV structure EF.
MSB terletak pada byte pertama pada field value.
Untuk BER-TLV structured EF, nilai ini adalah nilai byte maksimum yang tersedia pada EF untuk TLV object berikutnya yang akan dibuat. Nilai tersebut juga harus memasukkan kapasitas yang dibutuhkan untuk tag dan field length. Jika ukuran file maksimum didefinisikan untuk file tersebut, nilai tersebut tidak boleh berlebih, jika object dibuat dengan size yang tersedia yang telah ditunjukkan sebelumnya.
Sebagai contoh, jika jumlah space yang tersedia adalah 100 byte, ini berarti terminal dapat menyimpan object TLV dengan 2 byte tag, 1 byte length, dan 97 byte untuk datanya.
11.1.1.4.6.5 File Details
Indikator dari format TLV yang disupport oleh BER TLV structured EF.
* Pengkodean nilai detail untuk file access :
Byte tambahan dapat ditambahkan pada value field.
11.1.1.4.6.6 Reserved File Size
Ukuran memory yang disimpan/dicadangkan untuk file ini dan tidak dapat dialokasikan untuk entiti yang lain.
MSB terletak pada urutan byte pertama pada value field.
Nilai tersebut harus memasukkan administrative overhead (jika ada) yang dibutuhkan untuk menyimpan object TLV, tetapi bukan structural information untuk file itu sendiri. Maka ukuran file sebenarnya digunakan yang dihitung sesuai dengan sub 11.1.1.4.1 dapat lebih kecil.
Jika tidak ada memory yang tersedia untuk file, maka nilai 'Reserved File Size' akan diset ke 0.
11.1.1.4.6.7 Maximum File Size
Adalah ukuran file yang tidak boleh dilewati.
MSB terletak pada byte pertama dalam field value.
Field value tersebut harus memasukkan administrative overhead (jika ada) yang dibutuhkan untuk menyimpan object TLV, tetapi bukan structural information untuk file itu sendiri. Maka ukuran file yang digunakan sebenarnya yang dihitung dari sub 11.1.1.4.1 dapat menjadi lebih kecil.
Jika tidak ada nilai ukuran file maksimum untuk suatu file, maka maksimum file size object tidak ada untuk file tersebut, dan semua memory yang tersedia pada UICC dapat dialokasikan untuk file ini.
11.1.1.4.6.8 Supported System Commands
*Coding dari command field yang disupport :
Byte tambahan dapat ditambahkan pada field value.
Aplikasi pada UICC yang membutuhkan daya yang lebih besar dari konsumsi daya minimum yang didefnisikan pada tabel 6.4 dapat menggunakan indikasi "TERMINAL CAPABILITY is supported" untuk meminta terminal untuk menunjukkan kemampuannya sesuai dengan konsumsi daya tambahan yang disupport menggunakan TERMINAL CAPABILITY command. Penggunaan fitur ini tergantung pada aplikasi untuk menspesifikasikannya. Jika suatu aplikasi tidak menggunakan mekanisme ini, maka aplikasi tersebut harus digunakan seperti yang didefinisikan pada document standard ini.
11.1.1.4.6.9 Specific UICC Environmental Conditions
Object TLV ini menunjukkan kepada terminal kondisi spesifik yang disupport oleh UICC. Object TLV ini sifatnya mandatory jika UICC mendukung kondisi lingkungan spesifik tersebut. Hal ini tergantung pada terminal untuk mengevaluasi object dan bagaimana menyikapinya/memberikan aksi untuk object tersebut.
11.1.1.4.7 Security Attributes
11.1.1.4.7.1 Compact Format
Nilai AM byte didefinisikan pada ISO/IEC 7816-4. Jumlah SC byte tergantung pada nilai dari AM byte. Terdapat SC byte jika tidap bit diset ke '1' pada AM byte kecuali untuk byte b8. Nilai dari SC byte juga didefinisikan pada ISO/IEC 7816-4.
11.1.1.4.7.2 Expanded Format
11.1.1.4.7.3 Referenced to Expanded Format
Jika panjang data yang mengikuti tag '8B' = '03', definisi di bawah berlaku.
Jika panjang data yang mengikuti tag '8B' adalah '02' + X x '02', definisi di bawah berlaku.
11.1.1.4.8 Short File Identifier
Jika tidak ada TLV, maka nilai SFI adalah 5 LSB bit (bit b5 sampai b1) dari file identifier.
Jika ada TLV tetapi kosong (panjangnya 0), maka SFI ini tidak disupport untuk file yang terpilih.
Jika panjang TLV adalah 1, maka nilai SFI adalah 5 MSB bit (b8 sampai b4) dari nilai TLV. Dalam kasus ini, bit b3 sampai b1 diset ke 0.
11.1.1.4.9 Life Cycle Status Integer
11.1.1.4.10 PIN Status Template DO
Object TLV ini berisi informasi PIN status untuk DF/ADF dan dimana PIN digunakan untuk mengakses DF/ADF dan file-file dibawahnya. PIN ditunjukkan pada object data ini menggunakan key reference tag '83' seperti didefinisikan pada ISO/IEC 7816-4. Isi dari constructed PIN status pada TLV Data Object dengan tag 'C6' bergantung pada panjangnya.
Penggunaan qualifier DO menunjukkan jika key reference data object (PIN) yang mengikutinya digunakan untuk verifikasi atau tidak. Jika terdapat object data, maka dia harus didahului oleh key reference data object yang berhubungan dengannya.
Untuk format PS_DO lihat sub bab 9.5.2. Untuk setiap bit yang diset ke '1' pada PS byte, key yang bersesuaian pada PS template, DO dienabled. Jumlah key reference dengan tag '83' menunjukkan berapa banyak PIN yang berbeda yang digunakan untuk mengakses DF yang terpilih dan anak2nya.
11.1.2 STATUS
11.1.2.1 Functional Description
Fungsi ini mengembalikan informasi yang berhubungan dengan current directory atau current application. Selain itu, sesuai dengan spesifikasi pada aplikasi, dia dapat digunakan untuk menunjukkan aplikasi pada UICC bahwa prosedur sesi aktivasinya telah berhasil dieksekusi atau prosedur terminasinya telah berhasil dieksekusi.
Catatan. Indikasi tersebut dapat digunakan untuk melakukan sinkroniasi aplikasi pada terminal dan UICC.
Input : * tidak ada
Output :
* Salah satu dari :

  • FCP dari direktory saat ini
  • Nama DF pada TLV data object dari aplikasi yang terpilih saat ini
  • Tidak ada dapat yang dikembalikan
11.1.2.2 Command Parameters


Monday, February 16, 2015

10. Structure of Commands and Responses - 102 221 v8

Berikut diterjemahkan bab 10 dari ETSI TS 102 221. Beberapa istilah yang penting untuk diketahui pada bab 10 ini antara lain :
  • 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
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
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
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
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 :

  • 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.