Импорт апплета 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.

Удачи!

Другие вопросы по тегам