本文记录 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
USB CCID "复杂"命令拾零
最新推荐文章于 2023-01-18 17:06:19 发布