当前位置: 首页 > 知识库问答 >
问题:

在cref上导入javacard applet

章丰茂
2023-03-14
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);
    }
}

在添加这些行之前,我的applet在cref上安装没有问题(SW1 SW2 9000),但是在这些编辑之后,我在安装中遇到了问题-SW1 SW2 0x6438,这意味着没有找到导入的包。

我做错了什么?在编译过程中,我使用了sim.toolkit jar文件,在生成过程中,cap文件使用了从sim工具箱导出的文件。

共有1个答案

干亮
2023-03-14

据我所知,与Java Card Development Kit捆绑的模拟器不支持SIM Toolkit功能

您可能希望使用例如Gemalto Developer Suite。

祝你好运!

 类似资料:
  • 我一直试图在PyCharm上导入bigQuery,但没有成功。尽管我已经安装了所有必要的包,但bigQuery上总是有红色下划线。我得到的错误消息是 回溯(最近一次调用):文件 “~~~\write_csv.py”,第 1 行,从 google.cloud 导入 bigquery 导入错误:无法从“google.cloud”导入名称“bigquery”(未知位置) 它与防火墙有关吗?

  • 我正在尝试使用SQL导入导出向导将数据从Excel文件导入到SQL数据库。我们已经正确上传了4张表,我们可以查询他们。由于某些原因,我们的一些表给出了一些错误,我们不确定如何破译它们或可能是什么问题,因为它们与已经工作的表非常相似。 以下是错误: null 这些是什么意思?我们需要做些什么来修复它们? 谢谢

  • 问题内容: 我有一个模块foo,包含util.py和bar.py。 我想将其导入IDLE或python会话中。我该怎么办? 我找不到关于如何在当前目录或默认python PATH中导入模块的文档。经过尝试后, 我能得到的最接近的是 这给了我在Windows 7上拒绝的权限。 问题答案: 一种方法是简单地修改路径: 请注意,这要求foo为python包,即包含一个文件。如果您不想修改,也可以修改环境

  • 我已经安装了jdk1。7.0_07和更改的路径,但我仍然无法导入javafx,是否有什么我应该做的事情来修复此问题?

  • 我是Java和编程的一年级新生,我正在coursera上学习算法。我想通过编写一个简单的二进制搜索并按照书上的说明进行练习,但是当我尝试使用algs4时。jar库由图书在线资源提供,库无法解析: 我尝试导入edu时出错。普林斯顿大学反恐精英。StdIn和Eclipse告诉我无法解析导入edu。我已经按照说明将jar文件作为引用库(通过project将classpath变量添加到项目的构建路径中

  • 问题内容: 如何在MAMP上导出/导入大型数据库?使用PHPMyAdmin无法正常工作。 问题答案: 应该通过如下所示的终端来完成。 在终端中,使用以下命令导航到MAMP的文件夹 使用此命令导出文件。EG将是 行应该出现在说。在这里输入MySQL密码。请记住,这些字母不会出现,但是它们在那里。 如果需要导入,请使用BigDump,这是一个MySQL Dump Importer。