Java Card
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] VersiJava Card 2.2.2Java Card 2.2.2 dikeluarkan pada Mac 2006.[2] Keluaran ini menyediakan beberapa ciri-ciri baharu, antaranya:
Java Card 3.0Tentuan 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).[3] Antara ciri baharu dalam Connected Edition ialah sokongan bagi servlet, sokongan bagi rentetan (string) dan shareable interface object (objek antara muka boleh kongsi, SIO). Java Card 3.0 Classic Edition adalah serasi kebelakang dengan Java Card 2.22. ContohBerikut ialah contoh ringkas bagi aplikasi yang digunakan sebagai dompet elektronik: public class DompetApplet 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)0x0bb8; // RM300
private short baki;
private OwnerPIN pin;
public static void install(byte[] bArray, short bOffset, byte bLength) {
new DompetApplet(bArray, bOffset, bLength);
}
protected DompetApplet(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, (byte)lc);
}
break;
case MASUK_DUIT:
if (pin.isValidated()) {
duit = Util.getShort(buffer, ISO7816.OFFSET_CDATA);
baki += duit;
}
break;
case KELUAR_DUIT:
if (pin.isValidated()) {
duit = Util.getShort(buffer, ISO7816.OFFSET_CDATA);
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
|
Portal di Ensiklopedia Dunia