Pergi ke kandungan

Java Card

Daripada Wikipedia, ensiklopedia bebas.
Semakan 2772433 pada 04:42, 6 Mac 2013 oleh Kurniasan (bincang | sumb.)

Java Card merupakan teknologi yang membolehkan aplikasi berasaskan Java dijalankan dengan selamat pada kad-kad pintar dan peranti-peranti kecil yang beringatan kecil. Java Card adalah pelantar Java terkecil yang dibangunkan untuk peranti-peranti terbenam. Ia membolehkan penggunanya mengatur cara peranti-perantinya serta mengkhususkan aplikasi.

Java Card yang pertama telah diperkenalkan pada tahun 1996 oleh bahagian kad Schlumberger yang kemudiannya bergabung dengan Gemplus bagi membentuk Gemalto. Produk-produk Java Card adalah berasaskan spesifikasi yang dibangunkan oleh Sun Microsystems (yang kemudiannya menjadi anak syarikat Oracle Corporation). Kebanyakan produk-produk Java card turut bergantung kepada spesifikasi GlobalPlatform bagi pengurusan keselamatan aplikasi pada kad (muat turun, pemasangan, pemperibadian, penghapusan).

Matlamat utama reka bentuk teknologi Java Card ialah kemudahalihan dan keselamatan.[1]

Java Card 3.0

Tentuan Java Card versi 3.0 (drafnya dikeluarkan pada bulan Mac 2008) dibahagikan kepada dua versi iaitu Classic Edition (edisi klasik) dan Connected Edition (edisi tersambung).

Contoh

Berikut ialah contoh ringkas bagi aplikasi yang digunakan sebagai dompet elektronik:

public class Dompet extends Applet {
    private final byte PENGESAHAN = (byte)0x20;
    private final byte MASUK_DUIT = (byte)0x6a;
    private final byte KELUAR_DUIT = (byte)0x6b;
    private final short MAKSIMUM_KELUAR = (short)0x0493e0; //300,000 sen = RM3000.00
    private short baki;
    private OwnerPIN pin;

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

    protected Dompet(byte[] bArray, short bOffset, byte bLength) {
        register();
        pin.update(bArray, bOffset, bLength);
        baki = (short)0;
    }

    @Override
    public void process(APDU apdu) {
        byte[] buffer = apdu.getBuffer();
        short lc = apdu.getIncomingLength();
        short duit;

        if (!selectingApplet()) {
            switch (buffer[ISO7816.OFFSET_INS) {
                case PENGESAHAN:
                     if (pin.getTriesRemaining() != 0) {
                         pin.check(buffer, ISO7816.OFFSET_CDATA, lc);
                     }
                     break;
                case MASUK_DUIT:
                     if (pin.isValidated()) {
                         duit = Util.getShort(buffer, ISO7816.OFFSET_CDATA, lc);
                         baki += duit;
                     }
                     break;
                case KELUAR_DUIT:
                     if (pin.isValidated()) {
                         duit = Util.getShort(buffer, ISO7816.OFFSET_CDATA, lc);
                         if ((baki - duit) > 0 && duit <= MAKSIMUM_KELUAR) {
                             baki -= duit;
                         } else {
                             ISOException.throwIt(ISO7816.SW_WRONG_DATA);
                         }
                     }
                     break;
                default:
                     ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
            }
        }
    }
}

Rujukan

  1. ^ Ahmed Patel, Kenan Kalajdzic, Laleh Golafshan, Mona Taghavi (2011). "Design and Implementation of a Zero-Knowledge Authentication Framework for Java Card". 5 (3). IGI: 1–18. Unknown parameter |booktitle= ignored (bantuan); Cite journal requires |journal= (bantuan)CS1 maint: multiple names: authors list (link)

Jika anda melihat rencana yang menggunakan templat {{tunas}} ini, gantikanlah dengan templat tunas yang lebih spesifik.