BAB 7 APPLET JAVA CARD (BAGIAN 2)

METODE select

Applet tetap dalam keadaan ditangguhkan sampai dipilih secara eksplisit. Pemilihan applet terjadi saat JCRE menerima SELECT APDU yang datanya cocok dengan AID applet. JCRE memberitahukan applet tentang pemilihannya dengan memanggil metode select-nya.

Dalam metode select, applet dapat memeriksa apakah kondisi pemilihan cocok atau tidak, jika cocok, applet dapat mengatur variabel internal dan kebutuhan-kebutuhannya untuk menangani APDU selanjutnya. Applet mengembalikan “true” dari pemanggilan metode select jika applet siap menerima APDU yang baru masuk melalui metode process-nya, atau dapat menolak untuk dipilih dengan mengembalikan “false” atau dengan membuang eksepsi.

Jika pemilihan gagal, JCRE mengembalikan SW 0x6999 ke host. Jika metode select mengembalikan “true”, maka dalam pemanggilan berikutnya perintah SELECT APDU akan diberikan ke applet pada metode process-nya sehingga applet dapat memberi respon ke host dengan informasi applet tersebut. Contohnya, applet wallet bisa saja mengembalikan nomer identitas penerbit wallet, informasi konversi mata uang, atau parameter lainnya. Host mungkin memerlukan informasi ini untuk memulai transaksi DEBIT atau CREDIT. Pembuat atau penerbit applet bebas mendefinisikan isi dan format dari data respon.

Metode select dalam kelas Applet dasar hanya mengembalikan “true”. Applet dapat meng-override metode ini dan mendefinisikan aksi yang diperlukan selama pemilihan.

Format dan pemrosesan SELECT APDU

Perintah SELECT APDU merupakan C-APDU standar platform Java Card. SELECT APDU menjamin pemilihan applet yang interoperabel dengan bermacam-macam implementasi platform Java Card. Bagian data dari SELECT APDU berisi AID applet, yang panjangnya diantara 5 – 16 byte. Agar dapat memilih applet, seluruh field data APDU harus cocok dengan salah satu AID applet.


Setelah menerima APDU, JCRE men-decode header-nya (CLA, INS, P1, dan P2) untuk menentukan apakah ini adalah perintah pemilihan applet atau bukan, jika ya, ditentukan lagi apakah AID dalam data APDU cocok dengan applet yang ada di kartu. Pemilihan applet yang berhasil meliputi men-deselect applet yang sedang berjalan, memilih applet baru, dan mengirim SELECT APDU ke metode process applet yang baru. Jika APDU tidak untuk pemilihan applet, JCRE mengirimnya ke applet yang sedang berlangsung agar diproses. Dalam beberapa hal, jika error terjadi selama pemilihan, JCRE menandai error dengan mengembalikan SW 0x6999 ke host, dan tidak akan ada applet yang dipilih pada kartu. Berikut adalah bagan pemrosesan SELECT APDU.


Applet default

Normalnya, applet hanya dapat dipilih melalui perintah SELECT yang berhasil. Namun, beberapa sistem smart card memberikan applet default yang dipilih secara implisit setiap kali kartu reset.

Untuk memilih applet default, JCRE memanggil metode select applet default dan menandainya sebagai applet terpilih yang berjalan. Karena SELECT APDU tidak ada, metode process applet tidak dipanggil selama pemilihan. Jika metode select applet default membuang eksepsi atau mengembalikan “false”, tidak akan ada applet terpilih sampai SELECT APDU berikutnya diproses.

Pemilihan applet default merupakan fitur opsional dalam JCRE. Jika didukung fitur ini, implementasi JCRE harus merencanakan sebuah mekanisme untuk spesifikasi applet default.

METODE deselect

Sebelum applet baru dipilih, JCRE menonaktifkan applet yang sedang berjalan dengan memanggil metode deselect-nya. Ada kemungkinan kalau applet baru yang akan dipilih sama dengan applet yang sedang berjalan. Dalam hal ini, JCRE tetap men-deselct-nya dan memilihnya lagi.

Metode deselect mengizinkan applet untuk melakukan beberapa operasi pembersihan untuk memperisapkan dirinya sendiri untuk berhenti dan membiarkan applet lain berjalan. Implementasi default dalam kelas Applet adalah sebuah metode empty. Applet harus meng-override metode ini untuk operasi pembersihan yang diperlukannya. Contohnya, wallet mungkin perlu me-reset keamanan atau transaksi, dan hal ini berlaku selama satu periode pemilihan.

Metode deselect bisa gagal. Meskipun demikian, applet yang sedang berjalan di-deselect dan applet yang baru dipilih tanpa memperhatikan hasil eksekusi metode deselect. JCRE juga mengabaikan eksepsi yang dibuang dari metode deselect.

Pada reset atau kehilangan daya, applet otomatis men-deselect JCRE tanpa memanggil metode deselect-nya. Oleh karena itu, applet tidak dapat selalu mengandalkan operasi pembersihan dalam metode deselect.

METODE process

Saat menerima C-APDU, JCRE memanggil metode process pada applet yang sedang berjalan. Dalam metode process, applet melakukan fungsi yang diminta dalam APDU. Metode process dalam kelas Applet dasar adalah metode abstract. Applet harus meng-override metode ini baik secara langsung maupun tidak langsung. Biasanya metode process diterapkan sebagai dispatcher. Saat menerima C-APDU, metode men-decode header APDU dan memanggil metode service untuk mengeksekusi fungsi yang diminta.

JCRE mengenkapsulasi APDU dalam argumen pada metode process, “apdu” (instans dari kelas APDU). Applet memanggil metode pada objek apdu untuk menerima dan mengembalikan data APDU. Penanganan C-APDU pada applet dijelaskan di bab 8.

METODE LAIN DALAM KELAS javacard.framework.Applet

Ada dua metode lain dalam kelas Applet: selectingApplet dan getShareableInterfaceObject.

Sistem smart card yang tradisional adalah sistem file terpusat. Data aplikasi disimpan dalam file. Pembaca yang familiar dengan perintah ISO 7816 akan sadar bahwa tabel SELECT APDU diatas adalah perintah memilih DF (Dedicated File) dengan nama. JCRE dapat menentukan apakah perintah adalah benar untuk pemilihan applet dengan mencocokkan data dalam perintah dengan AID dari beberapa applet dalam kartu (Ada kemungkinan JCRE salah memilih applet jika penyandian (encoding) nama DF identik dengan AID applet dalam kartu). Karena semua APDU diteruskan ke metode process applet yang sedang berjalan, applet memanggil metode selectingApplet untuk membedakan apakah perintah SELECT APDU digunakan untuk memilih applet ini sendiri atau apakah untuk memilih DF dari applet ini. Metode selectingApplet mengembalikan “true” jika APDU memilih applet ini. Dan keadaan yang lain adalah “false”.

Metode getShareableInterfaceObject ditujukan untuk sharing objek antara applet. Metode ini dipanggil oleh JCRE saat applet lain meminta objek interface shareable dari applet ini. Metode ini dijelaskan lebih lanjut dalam bab 9.

Sumber: from book Java card Technology for Smart Card, Architecture and Programmer’s Guide

This entry was posted in Java Card. Bookmark the permalink.