当前位置: 代码迷 >> 单片机 >> USB CCID开发 APDU level和TPDU level 区别,该如何解决
  详细解决方案

USB CCID开发 APDU level和TPDU level 区别,该如何解决

热度:451   发布时间:2016-04-28 15:55:18.0
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。
  相关解决方案