我是一名初学者,遇到关于通过Android移动设备上的USB主机将CCID命令发送到智能卡的问题。这次我发送了PC_to_RDR_IccPowerOn CCID命令PC_to_RDR_IccPowerOn来激活卡并收到了ATR响应。
下一步,我将PC_to_RDR_XfrBlock CCID命令发送到用于选择Applet的卡,但是却收到错误响应。
CCID响应:80 00 00 00 00 00 00 40 FE 00-0xFE含义与ICC对话时的CCID超时有关错误代码的信息,请参见文档DWG设备“智能卡集成电路设备”部分6.2.6。
我找到解决此问题的信息,但未找到解决方法。如何解决此问题并使APDU响应返回到90 00?
更多信息#1 This Byte array is the ATR value (answer to reset) that I get from RDR_to_PC_DataBlock answer is
ATR response: 3B 68 00 00 54 48 20 4E 49 44 20 36
Reference ATR value at https://smartcard-atr.appspot.com/
#2 This Byte array is APDU command that I combine with PC_to_RDR_XfrBlock CCID command to select Applet.
6F 0D000000 00 01 00 0000 00A4040008A000000054480001
Applet used to select Thailand Personal DF name of the APDU command line from this link.
https://github.com/chakphanu/ThaiNationalIDCard/blob/master/APDU.md
为得到答复,我英语不好,但如果您愿意,我会尽量发送信息,谢谢您的帮助。
通常我使用2条这些命令
1个PC_to_RDR_IccPowerOn
Command (byte) 0x62, (byte) 0x00000000, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0000
1个RDR_to_PC_DataBlock
Response 80 0C 00 00 00 00 00 00 00 00 3B 68 00 00 54 48 20 4E 49 44 20 36
2个PC_to_RDR_XfrBlock(带有APDU插入小程序)
Command (byte) 0x6f, (byte) 0x0000000c, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x0000, (byte) 0x00, (byte) 0xa4, (byte) 0x04, (byte) 0x00, (byte) 0x08, (byte) 0xa0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x54, (byte) 0x48, (byte) 0x00, (byte) 0x01
2个RDR_to_PC_DataBlock
Response 80 00 00 00 00 00 00 40 FE 00
此链接的参考 Communicate with smartcard reader through Android USB host