APDU没问题,问题出在TPDU和APDU的映射上。
终端给卡片发送了五个字节的命令头后,卡片需要判断这是哪个CASE的指令,然后做出适当响应,以接收后续数据或者发送后续数据。
五字节命令头属于是传输层TPDU,而传输层竟然不能知道接下来该收还是该发,竟然需要把命令头交给应用层,并“询问”应用层——我接下来该怎么办?
传输层和应用层产生了如此紧密的耦合,以至于传输层不能脱离应用层独立存在,而应用层也必须涉及到传输层的传输细节。
如果一条指令是哪个CASE的,很容易判断倒也还凑合。
可是同样一个INS的指令,在采取了安全报文的时候,就可能从CASE1变成CASE3。还有其他变化,此处不列举了。
搞不懂这些指定标准的人是否考虑过实现。