将小程序安装到Java卡的APDU命令的顺序是什么?
作者:互联网
我有一个.CAP文件(applet),我想将其安装到我的Java卡中.
我知道我可以使用GPShell或apdutool(来自JCDK)之类的工具来执行此操作,但是我想自己复制安装过程.
令人困惑的是,在GP标准中,安装过程是:APDU命令INSTALL [for load],然后是多个LOAD命令,再接着是INSTALL [for install]命令.
尽管oracle文档建议了用于安装.CAP文件的APDU命令的不同顺序:Select(发行者安全域?),CAP开始,组件##开始数据结束(每个组件),CAP结束,创建小程序.
两种安装小程序的方法是否等效?
LOAD命令的DATA字段包含什么? GP标准没有指定,我知道从.CAP文件发送原始字节是错误的.
我使用GPShell成功安装了applet,但是LOAD命令的DATA字段对我没有意义.
GPShell output
对于oracle方法,我使用Java Card Developement Kit中的scriptgen生成了APDU命令,但是这些命令(B0,B2,B4,BC,BA)中的INS字节没有GP参考.scriptgen output
解决方法:
While the oracle documentation proposes a different sequence of APDU
commands for installing the .CAP file: Select( Issuer Security Domain?
) , CAP begin, Component ## Begin+Data+End ( for each component ), CAP
End, Create Applet.
在安装小程序之前,需要选择卡管理器(发行者安全域-根),因为它是在卡上加载和安装小程序的负责组件.另请注意,您将需要通过建立安全通道(最好是SCP02)向卡管理器进行身份验证.
执行以下顺序的APDU来安装小程序:-
>选择颁发者安全域(ISD).
00 a4 04 00 Lc AID_ISD
>使用ISD进行身份验证.
设置一个SCP02(请参阅命令初始化更新,外部认证).
在这里,您将需要卡的3DES密钥.请参阅文档
随卡提供.
>发送apdu,安装[用于加载].
The confusing thing is that in the GP standard the installation
process is : APDU command INSTALL[for load] followed by multiple LOAD
commands followed by INSTALL[for install] command.
>发送apdu,加载块.
您将拥有的applet的.cap文件是其组成CAP的压缩文件
文件(http://pfa12.free.fr/doc_java/javacard_specifications/specs/jcvm/html/JCVM06cap.html).因此,您需要将每个CAP文件一一发送到卡中.
加载(Header.cap),加载(Directory.cap)等
>发送apdu,安装[用于安装].安装完成.
标签:smartcard,javacard,globalplatform,java 来源: https://codeday.me/bug/20191025/1930496.html