【发布时间】:2017-10-06 06:56:51
【问题描述】:
我有关于 T=1 智能卡通信协议的问题。假设终端发送 I 块,其中包含要从卡返回的预期 Ne 数据(所谓的情况 2S),而卡要发送的数据较少。这是否意味着终端应该等到超时,然后检查最后两个字节收到的任何内容(应该是 SW1 和 SW2 状态)?还是有与该问题相关的其他情况? 对于 T= 0 协议,该问题由过程字节解决,但是在 T= 1 中,我只看到上述方式。
谢谢
【问题讨论】:
-
我想卡片应该放在序言的 LEN 字段中,它返回的数据量是多少,但问题是该 LEN 字段是否被正确接收(检查字节确实在回复过程中稍后出现)。不过不太确定。
-
虽然我不是协议专家,但这似乎是一种误解。 Le 仅表示终端接受的最大字节数。它可能会更少。 (这与协议块的 LEN 字段不同,它当然必须完全匹配,并且响应 APDU 与您发送的命令完全解耦。)后面的 LRC 字节是无关紧要的,因为我们正在谈论一个面向块的协议。
-
在 ISO7816-3 中可能误导我的是:“Ne 表示响应数据字段中预期的最大字节数”。对我来说,它看起来像是预期的东西,但可能更多。无论如何,问题更多地与接收损坏的 LEN 字段的可能性有关,我打算将其用作尚未到来的字节数的指示器。因此,如果它(LEN)已损坏并且说大于即将到来的字节数,那么这是我捕捉超时的唯一选择吗?错误的 LEN 我只能从稍后出现的检查字节中学习,但我可能无法在消息中找到它(有错误的 LEN)。
-
如果实际数据超过 LEN,可以立即检测到差异。如果提供的数据较少,则必须等待字符等待时间超时。
标签: smartcard