进程方法没有从主机收到完整的APDU命令?

时间:2015-12-08 06:32:16

标签: smartcard javacard apdu

主机将以下命令发送到applet以选择EF文件

00 A4 02 00 02 40 01

目的是选择标识为40 01的EF文件(在命令的数据字段中指定)。

但是当我调试进程(APDU apdu)方法时,APDU缓冲区只包含5个第一个字节00 A4 02 00 02。数据字段设置为00 00。所以我的applet无法使用EF ID选择EF。

你能告诉我上面的APDU命令有什么问题吗?

2 个答案:

答案 0 :(得分:6)

根据卡(或仿真器),APDU缓冲区可能只包含APDU报头字段(CLA,INS,P1,P2,Lc)。即使某些卡自动将命令APDU的数据部分填充到APDU缓冲区中,也不能依赖于该行为。

相反,您必须通过调用APDU对象上的setIncomingAndReceive()方法明确指示卡(或模拟器)检索数据部分。但请注意,只能针对案例3和案例4 APDU(即包含命令数据部分的APDU命令)调用此方法。如果没有命令数据字段,则不应调用此方法(案例1和案例2 APDU)。

答案 1 :(得分:0)

要在APDU缓冲区中获取数据,您需要调用apdu.setIncomingAndReceive(),并且在EMV规范中,applet的AID是5-16个字节,不能使用少于5个字节。