T=0协议(译自 ISO7816-3)

10 协议T=0,半双工传输字符

10.1 范围

本节定义了半双工字符传输中命令的结构和处理。接口设备启动这些命令。本节包括传输控制。

10.2 字符等级

传输协议按 6.3.1 规定启动。字符框架应按照 7.1 和 7.2 的规定,使用 TS 固定的编码约定(见 8.1 ),GT 按照 8.3 的规定。卡和接口装置应按照 7.3 使用错误信号和字符重复。

当使用 D = 64 时,接口设备应确保最后接收字符的前缘与为发起命令而传输的字符的前缘之间至少有 16 etu 的延迟。

如果出现在 复位-应答 中,接口字节 TC2 编码等待时间整数 WI 除以 8 位,除了值 '00' 保留为将来使用。如果没有 TC2,则默认值为 WI = 10。

“等待时间”(见 7.2)为:

[WT = WI × 960 × frac{Fi}{f} ]

10.3 命令的结构和处理

10.3.1 原则

接口设备通过传送一个告诉卡做什么的 5 字节的头来发起每一个命令。命令处理在由卡传输的过程字节的控制下,继续在一个方向上传输可变数目的数据字节。

为了进行区分,假定卡和接口设备预先知道传输的方向

  1. 当处理时,数据字节进入卡的输入数据传输的命令,和
  2. 处理时数据字节离开卡的输出数据传输的命令。

10.3.2 命令头

头由表示 CLA、INS、P1、P2 和 P3 的 5 个字节组成。CLA、INS、P1 和 P2 的值应符合 ISOIEC 7816-4 的规定。

  1. CLA 表示命令的一个类。“FF” 值是无效的(为 PPSS 保留,见 6.3.1 和 9.2 )。
    请注意 ISO/IEC 7816-4 规定 “FF” 为 CLA 的无效值。
  2. INS 表示指令代码。'6X' 和 '9X' 是无效的。
    请注意 ISOIEC 7816-4 规定 “6x” 和 “9X” 为 INS 的无效值。
  3. P1 P2表示指令参数,例如,完成指令代码的引用。
  4. P3 将表示为 D1 的数据字节数编码为 Dn,以便在命令期间传输。
    • 在输出数据传输命令中,P3 = '00' 从卡引入一个 256 字节的数据传输。

    • 在输入数据传输命令中,P3 = '00' 不引入数据传输。

10.3.3 过程字节

在以 5 个字符的字符串形式传送报头后,接口设备必须等待一个字符来传输一个过程字节。过程字节有三种类型,见表11。

  1. 如果值是 '60' ,则为空字节。它对数据传输不请求任何操作。接口设备必须等待一个字符来传输一个过程字节。

  2. 如果值是 '6x' 或 ‘9x’ 。除了 '60'。它是一个 SW1 字节。它对数据传输不请求任何操作。接口设备必须等待一个字符来传输一个 SW2 字节。对 SW2 值没有限制。

    请注意 ISO/IEC 7816-4 规定 “60” 作为 SW1 的无效值,以及与 “9X” 和 “6X” 不同的任何值。

  3. 如果该值是 INS 的值,那么除了 '6X' 和 '9X' 之外,它是一个 ACK 字节。所有剩余的数据字节(如果还有字节的话),表示Di到Dn,随后将被传输。然后接口设备需要等待一个字符来传输一个过程字节。

  4. 如果该值是 'FF' 和 INS 的值的异或,除了 '6X' 和 '9X' 之外,它是一个 ACK 字节。如果存在下一个数据字节的话(表示为Di),则应该被传输。然后接口设备应该等待一个字符来传输一个过程字节。

  5. 任何其他值都无效。

表11过程字节
字节 数据传输的动作 然后接收
NULL ‘60’ 没有动作 一个过程字节
SW1 ‘6X’(≠‘60’),‘9X’ 没有动作 一个 SW2 字节
ACK INS 所有剩余的数据字节(如果还有字节) 一个过程字节
INS⊕‘FF’ 下一个数据字节(如果存在) 一个过程字节

ISO/IEC 7816-3 的前两个版本规定了使用两个 ACK 值(即 INS 值与 '01' 和 'FE' 进行异或)来控制 C6 触点,这一操作已弃用(见 5.1.1)。所以这两个值是不支持的。

在每个过程字节上,卡可以通过 NULL 或 ACK 继续执行命令,或通过 SW1 SW2 完成命令,或通过变为无响应(将超过 WT)来显示不支持。

10.3.4 状态字节

状态字节 SW1 SW2 表示命令末尾的卡的状态。其值应符合 ISO/IEC 7816-4 的规定。

注:ISO/IEC 7816-4 加强了 SW1 SW2 的 6 个值的含义,在以前的版本中,T = 0 指定了这 6 个值(ISOIEC 7816-3:1989 和 1997)。

  1. ‘9000’ - 命令正常地完成
  2. ‘6E00’ - CLA 不支持
  3. ‘6D00’ - CLA 支持,但INS未定义或无效
  4. ‘6B00’ - CLA INS 支持,但 P1 P2 不正确
  5. ‘6700’ - CLA INS P1 P2 支持,但P3 不正确
  6. ‘6F00’ - 不支持命令,也没有给出精确的诊断

根据定义,该命令在传输 SW2 的字符的前缘之后 12 etu 完成。

原文地址:https://www.cnblogs.com/sunchukun/p/13588223.html