Импорт апплета javacard на cref
У меня проблема с установкой апплета javacard на cref.
Я беру простой пример из примеров Oracle javacard - HelloWorld и добавляю две дополнительные строки - import sim.toolkit.*; и частный инструментарий Registry reg;. Вот код апплета
package helloworld;
import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.Util;
import sim.toolkit.*;
public class Hello extends Applet {
private byte[] echoBytes;
private static final short LENGTH_ECHO_BYTES = 256;
private ToolkitRegistry reg;
/**
* Only this class's install method should create the applet object.
*/
protected Hello() {
echoBytes = new byte[LENGTH_ECHO_BYTES];
register();
}
/**
* Installs this applet.
*
* @param bArray
* the array containing installation parameters
* @param bOffset
* the starting offset in bArray
* @param bLength
* the length in bytes of the parameter data in bArray
*/
public static void install(byte[] bArray, short bOffset, byte bLength) {
new Hello();
}
/**
* Processes an incoming APDU.
*
* @see APDU
* @param apdu
* the incoming APDU
* @exception ISOException
* with the response bytes per ISO 7816-4
*/
public void process(APDU apdu) {
byte buffer[] = apdu.getBuffer();
// check SELECT APDU command
if ((buffer[ISO7816.OFFSET_CLA] == 0) &&
(buffer[ISO7816.OFFSET_INS] == (byte) (0xA4))) {
return;
}
short bytesRead = apdu.setIncomingAndReceive();
short echoOffset = (short) 0;
while (bytesRead > 0) {
Util.arrayCopyNonAtomic(buffer, ISO7816.OFFSET_CDATA, echoBytes, echoOffset, bytesRead);
echoOffset += bytesRead;
bytesRead = apdu.receiveBytes(ISO7816.OFFSET_CDATA);
}
apdu.setOutgoing();
apdu.setOutgoingLength((short) (echoOffset + 5));
// echo header
apdu.sendBytes((short) 0, (short) 5);
// echo data
apdu.sendBytesLong(echoBytes, (short) 0, echoOffset);
}
}
Перед добавлением этих строк мой апплет без проблем устанавливается на cref (SW1 SW2 90 00), но после этих изменений у меня возникли проблемы при установке - SW1 SW2 0x6438, что означает, что импортированный пакет не найден.
Что я сделал не так? Во время компиляции я использовал файл jar sim.toolkit, во время генерации.cap файл использовал файлы экспорта из инструментария sim.
1 ответ
Насколько я знаю, симулятор в комплекте с Java Card Development Kit не поддерживает функциональность SIM Toolkit.
Вы можете использовать, например, Gemalto Developer Suite.
Удачи!