我很困惑应该使用哪种协议与T0或T1卡通信?那么,如果卡支持两种协议,读卡器实际上会自行决定使用哪种协议与卡通信,如果我有误,请纠正我。
因此,我的逻辑现在是:
// if ATR(T1) -> set_params(T1 structure) -> T1 APDU communication
// if ATR(T0) -> set_params(T0 structure) -> T0 APDU communication
但事实证明,这种逻辑是错误的,尽管它意外地适用于大多数读者。我刚刚发现有读者即使卡片的ATR返回T1也期望使用T0通信。
问:确定使用哪种协议必须遵循什么逻辑?如果有相关规范,请指出来。
编辑:我忘记提到我的代码位于操作系统之前的预引导环境(UEFI)中。因此,我没有任何API可供使用。我的代码处于字节流APDU级别,并直接使用UEFI UsbIo通信与硬件进行通信。
谢谢大家!
祝您一切顺利,
Alex
T=0
或T=1
通信,卡片和读卡器都必须支持它。现今大多数卡片仅支持T=1
,而大多数读卡器则支持两种协议。 - Ebrahim Ghasemi