USB CCID开发 APDU level和TPDU level 区别
我在开发中始终难以搞清楚两者的区别。其实character level也没太理解。
我这样理解的:
字符层,几乎是透传,CCID做的工作极少;
TPDU层,就要做一些工作,比如解析"过程码":见到0x61,就要发送GET RESPONSE指令给IC卡等;
APDU层,我真心不知道和TPDU有啥区别,难道就是比TPDU的“自动化程度”更高(CCID官方文档中说:A CCID supporting APDU level of exchanges implements a high level of automatism in ICC communications)?
关键是CCID1.10文档中这句话:“For APDU level exchanges, the CCID provides the transportation of host’s APDU to ICC’s TPDU.”
真心不理解啊。
jennyvenus,你在么能讲讲他们的区别,和他们各自的核心意义么?谢啦~
[解决办法]
俺也不大明白,俺好久没做ccid了,而且没做过character level的,能做tpdu level的,实际做过的只是apdu level的。
俺是这么认为的
apdu没有格式,任何数据都可以靠apdu来传输,如果apdu跟tpdu有冲突了,那么就要给apdu进行封装,来达到与tpdu不冲突的目的。
机卡双方在通讯时,将apdu分包,变成tpdu格式,比如在t0下,就是先发送apdu头,然后根据过程字节来决定后续数据的方向。
在t1下,apdu还是不变的,apdu头与apdu数据都被封装成i块,分包发送给卡片,在主机看来,下发的是apdu指令,在卡看来,收到的也是apdu指令,中间的传输过程是按tpdu划分的,tpdu在7816中又分为t0/t1。