主机将以下命令发送到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命令有什么问题吗?
答案 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个字节。