我试图理解发送APDU命令 - 响应对的通信。 任何人都可以用简单的方式解释T = 0的工作原理吗?
APDU和TPDU有什么区别?
例如,命令头是CLA,INS,P1,P2和P3 = 0x20 32字节数据。卡如何知道命令的第5个字节是Lc还是Le? 卡如何知道不期望任何命令数据,以及它如何知道读者是否期望响应中的数据?
另一件事,过程字节何时参与场景?是程序字节吗?或者,程序字节?卡是否必须发送过程字节?
答案 0 :(得分:6)
APDU是应用协议数据单元,TPDU是传输协议数据单元。如果已为T = 0 和定义了APDU命令响应对,则它同时具有命令数据和响应数据(情况4S),则将生成单独的TPDU以发送和接收数据({{1} })。参见ISO / IEC 7816-3(2006)第12.2.1章。
卡知道P3(字节5)的含义,因为它是服务器。应该以这样的方式实现每个命令,使得P3只能具有单一含义。在这方面,ISO / IEC 7816不符合OSI堆栈 - 层不是严格分开的。这是ISO 7816的主要问题之一。
过程字节是T = 0传输协议的一部分。它在应用程序协议中定义为不,但它可能映射到状态字的第一部分SW1。它只发送给接口设备(IFD)指示做什么。有关更多信息,请参见ISO / IEC 7816-3(2006)的第10.3.3章。第10章定义T = 0,T = 1不包含过程字节。
答案 1 :(得分:1)
APDU用于应用层,TPDU用于物理层。 如果您将“00 84 00 00 08”发送到卡,则卡可以响应“xx xx xx xx xx xx xx xx 90 00”。 p3背后没有数据,所以p3代表le。否则,p3代表lc。 但是,我认为没有必要区分le和lc。
答案 2 :(得分:0)
假设通信分为3部分- -PC至控制器(控制器具有2个A部分的MCU,已连接至 通过i2c或SPI或UART和Radio的Rcontroller单元 控制器单元)。 -控制器到无线电控制器(天线和无线电传输芯片) -目标或其他NFC设备的无线电控制器。 APDU从PC到控制器,而TPDU从控制器到无线电控制器。