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

将小程序安装到java卡的APDU命令顺序是什么?

昌招
2023-03-14

我有一本书。CAP文件(applet),我想把它安装到我的java卡上。我知道我可以使用GPShell或apdutool(来自JCDK)这样的工具来实现这一点,但我想自己复制安装过程。

令人困惑的是,在GP标准中,安装过程是:APDU命令INSTALL[for load]后跟多个load命令,后跟INSTALL[for INSTALL]命令。

而oracle留档为安装. CAP文件提出了不同的APDU命令序列:选择(发行方安全域?)、CAP开始、组件##开始数据结束(每个组件)、CAP结束、创建应用程序。

这两种安装小程序的方法是等效的吗?

加载命令数据字段包含什么?GP标准没有规定这一点,我知道从。CAP文件是错误的。我使用GPShell成功地安装了applet,但LOAD命令的数据字段对我来说毫无意义。GPShell输出

对于oracle方法,我使用Java Card Development Kit中的scriptgen生成APDU命令,但这些命令(B0、B2、B4、BC、BA)中的INS字节没有GP引用。scriptgen输出

共有1个答案

令狐声
2023-03-14

而oracle留档为安装. CAP文件提出了不同的APDU命令序列:选择(发行方安全域?)、CAP开始、组件##开始数据结束(每个组件)、CAP结束、创建应用程序。

在安装小程序之前,需要选择card manager(发卡机构安全域-根),因为它是负责在卡上加载和安装小程序的组件。另外请注意,您需要通过建立安全通道(最好是SCP02)向card manager进行身份验证。

执行以下APDU的安装小程序的顺序:-

>

  • 选择发行方安全域(ISD).00 a4 04 00 LcAID_ISD

    与ISD验证。

    设置SCP02(请参阅命令初始化更新、外部身份验证)。在这里,您需要该卡的3DES密钥。请参阅随卡提供的文档。

    发送apdu,安装[用于加载]。

    令人困惑的是,在GP标准中,安装过程是:APDU命令INSTALL[for load]后跟多个load命令,后跟INSTALL[for INSTALL]命令。

    发送apdu,加载块。

    小程序的.cap文件是其组成部分cap文件的zip文件(http://pfa12.free.fr/doc_java/javacard_specifications/specs/jcvm/html/JCVM06cap.html).所以你需要将每个CAP文件逐个发送到卡上。

    负载(Header.cap),负载(Directory.cap)...

    发送apdu, Install[for Install].安装完成。

  •  类似资料:
    • 我使用netbeans制作了java card classic小程序 当我编程读取操作时,我检查APDU中的第一个字节是否为0x80,然后第二个字节是否为,然后从字节2和3中读取文件中的偏移量,然后从字节4中读取字节数 作为默认的APDU 从当前文件中读取60个字节,从偏移量3开始 当我尝试这个命令时,它返回错误。 经过一番努力,我发现了问题 问题是编译器假定字节4是数据的长度,所以在我的命令中,

    • 我使用Java卡开发工具包(Java卡3.0.2运行时)创建了一个小程序,我使用生成脚本APDU,然后我想用生成的APDU脚本文件运行,将小程序上传到通过USB连接到我的计算机的真正读卡器上的真正智能卡中。我运行以下命令: 但我犯了一个错误: 有可能实现我想要的目标吗?

    • 问题内容: 我已经使用过智能卡,并且熟悉APDU命令(在 ISO / IEC 7816 和 Global Platform 规范中定义)。 现在,我想知道是否有什么方法可以将APDU命令发送到插入手机的USIM / SIM卡?(安装了Android v4.4.4 kitkat的三星A3。) 我已经在Google中搜索过,发现了一些相关的主题和工具,名为 SIM Toolkit Applicatio

    • 我想向JavaCard applet发送一个随机字节数组(例如,包括24个元素),然后我的applet应该使用特定的方法更改该数组。例如,该方法使用对每个元素进行异或,并在APDU响应中返回结果数组。 为了实现上述目标,我编写了以下程序: 我必须在编译并选择我的小程序后发送以下APDU命令: <代码>>>80 00 00 00 00 18 11 22 33 44 55 66 88 99 10 20

    • 互联网上的大多数网站都说: “使用命令编译文件。然后使用命令运行它” 但是今天我试着运行一个没有javac的java程序,得到了一个奇怪的结果。 下面是名为的文件的内容: 然后我跑: 这给了我这个错误: 但是,当我在没有命令的情况下运行它时,它执行时没有任何错误。 命令是否也编译程序?如果是,为什么我们需要命令? 我的java版本是:

    • 我试图运行一个java应用程序,但它说javac未找到。当我使用以下命令安装java时: sudo apt安装openjdk-11-jre-headless 它在我的路径,因为我可以运行java命令罚款。我不知道为什么它看不到javac命令。安装openjdk-11 java后,我错过了什么?