本文记录 USB CCID 标准中几个"复杂"的命令,复杂在于在这些命令身上花的时间较之简单的命令多许多或者是理解的时间比较晚,可能就是刚才。
主要有以下几条:
ccid_T0APDU();
ccid_Secure();
ccid_Escape();
ccid_Abort();
ccid_Mechanical();
ccid_SetDataRateAndClockFrequency();
ccid_T0APDU(): 我们知道,当读卡器是APDU level时,并且卡片使用T=0协议进行通信,那么构造TPDU的任务就落在了读卡器身上。根据ISO7816规定,该角色需要将APDU构造成一组命令,其中包括GET_RESPONSE()和ENVELOPE()命令,同时,由于每张卡片的CLA字段可以不同,这时,读卡器就需要一个规则来确定发送这2条命令时,选择的CLA是什么了。主机可以用ccid_T0APDU()来设置该值,以后读卡器就知道该怎么做了。
ccid_Secure(): 该命令用于 PIN_VERIFY 和 PIN_MODIFY 时,也就是校验PIN和修改PIN,该命令复杂在于命令后面的参数,需要根据卡片特性来填充并且构造合适的APDU命令,比较麻烦。
ccid_Escape(): 该命令用于传输厂家定义的特殊命令,可以理解为扩展命令,比如有的卡片PIN_VERIFY和PIN_MODIFY就是通过这个命令来做的,是因为M$ ccid驱动不支持 ccid_Secure()命令吧,我不确定?!
ccid_Abort(): 该命令是最难理解的一个,首先要明确 abort 什么东西?根据CCID,能够被 abort 的命令有以下几个:
PowerOn()、XfrBlock()、Escape()、Secure()、Mechanical() 和 Abort()本身。 从这些命令似乎很难看出 abort 到底有什么用处(个人原来一直认为没用,现在有所转变了),不过,根据标准和实际场景分析得出,这条诡异的命令主要有以下2个功能:
&nb
USB CCID "复杂"命令拾零
最新推荐文章于 2025-10-16 12:17:04 发布
本文深入探讨了USB CCID规范中的复杂命令,包括ccid_T0APDU(), ccid_Secure(), ccid_Escape(), ccid_Abort()和ccid_Mechanical()。ccid_T0APDU()涉及构造TPDU;ccid_Secure()用于PIN验证和修改,需要根据卡片特性构造APDU;ccid_Escape()用于传输厂家特定命令;ccid_Abort()则用于读卡器和主机的状态同步,尤其是在处理阻塞和错误情况时的重要作用。"
85299635,7335718,Unity:统一绑定多个按钮的监听方法,"['Unity', '游戏开发', '事件处理', '编程技巧']

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



