智能卡ISO7816-4规范(中文版) 联系客服

发布时间 : 星期二 文章智能卡ISO7816-4规范(中文版)更新完毕开始阅读8c465adc2f3f5727a5e9856a561252d381eb2051

情况c——部分读的记录序列

记录#n …… 记录#n+m中的前面若干字节 Tn‖Ln‖Vn …… Tn+m‖Ln+m‖Vn+m ——————————--------------Le字节——————————-------------------

当Le字段不仅包含了若干‘0’时,该情况适用。

情况d——读多个记录直到文件结束 记录#n …… 记录#n+m Tn‖Ln‖Vn …… Tn+m‖Ln+m‖Vn+m 当Le字段仅包含了若干‘0’时,该情况适用。

数据字段的长度与其TLV结构相比较给出了数据的性质:唯一记录(读一个记录)或最后一个记录(读所有记录)是不完整的,完整的或添加的。

注:如TLV编码不被使用,则读所有记录的功能导致接收的几个记录没有标准的记录定界。

6.5.5 状态条件

下列特定报警条件可能发生。 ——SW1=‘62’,同时SW2= ·‘81’:被返回数据的一部分可以被损坏。 ·‘82’:在Le字节之前已到达记录结束端。 下列特定差错条件可能发生。 ——SW1=‘67’,同时SW2= ·‘00’:错误的长度(空的Le字段) ——SW1=‘69’,同时SW2= ·‘81’:命令与文件结构不兼容。 ·‘82’:安全状态不被满足。 ——SW1=‘6A’:同时SW2= ·‘81’:功能不被支持。 ·‘82’:文件未被找到。 ·‘83’:记录未被找到。 ——SW1=‘6C’,同时SW2= ·‘XX’:错误的长度(错误的Le字段;‘XX’表示正确的长度)。 6.6 WRITE RECORD命令 6.6.1 定义和范围

WRITE RECORD命令报文启动下列操作之一: ——写一次记录;

——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“或”运算;

——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“和”运算。

当在数据编码字节中未给出指示(见表86)时,逻辑“或”运算应该适用。

当使用当前记录寻址时,该命令应将记录指针设置在成功的WRITE RECORD上。 6.6.2 使用与安全的条件

仅当安全状态满足了用于写功能的该EF的安全属性时,才能执行该命令。 如果在发出命令的时刻,当前选择了EF,则该命令可以被处理,而无需该文件的标识。 当命令包含了有效的短EF标识符时,它将文件置为当前EF,并且复位当前记录指针。

如果命令被施加到不带有记录结构的EF,则应放弃该命令。

被施加到循环文件的“先前”的命令选项(P2=×××××011)具有和APPEND RECORD相同的行为。 6.6.3 命令报文

表39 WRITE RECORD命令APDU CLA 按5.4.1定义的 INS ‘D2’ P1 P1=‘00’指明当前记录 P1≠‘00’是所规定记录的号 P2 按照表40 Lc字段 后续数据字段的长度 数据字段 待写的记录 Le字段 空

表40 引用控制P2的编码 b8 b7 b6 b5 b4 b3 b2 b1 含义 0 0 0 0 0 - - - ——当前选择的EF × × × × × - - - ——短EF标识符 (不全相等) - - - - - 0 0 0 - - - - - 0 0 1 - - - - - 0 1 0 - - - - - 0 1 1 - - - - - 1 0 0 任何其他值

当记录为简单TLV数据对象(见本部分规范5.4.4)时,表41示出了命令报文数据字段的格式。

表41 命令的数据字段 完整写的一个记录 Tn Ln 记录的整个数据字节 1个字节 1个或3个字节 Ln字节 6.6.4 响应报文(标称情况)

表42 WRITE RECORD响应APDU 数据字段 空 SWL-SW2 状态字节 6.6.5 状态条件

下列特定报警条件可能发生。 ——SW1=‘63’, 同时SW2= ·‘CX’:计数器(成功的写,但是使用内部重试例行程序之后,‘X’≠‘0’表示重试数;‘X’=‘0’意味着没有计数器被提供)。

下列特定差错条件可能发生。 ——SW1=‘65’, 同时SW2= ·‘81’:存储器故障(不成功的写)。 ——SW1=‘67’, 同时SW2= ·‘00’:错误的长度(空的LC字段)。

——第1个记录 ——最后一个记录 ——下一个记录 ——先前一个记录 ——在P1中给出的记录号 RFU

——SW1=‘69’, 同时SW2= ·‘81’:命令与文件结构不兼容。 ·‘82’:安全状态不被满足。 ·‘86’:命令不被允许(没有当前EF)。 ——SW1=‘6A’, 同时SW2= ·‘81’:功能不被支持。 ·‘82’:文件未被找到。 ·‘83’:记录未被找到。 ·‘85’:LC与TLV结构不一致。 6.7 APPEND RECORD命令 6.7.1 定义和范围

APPEND RECORD命令报文启动在线性结构EF的结束端添加记录,或者在循环结构(见本部分规范5.1.4)的EF内写记录号1。

命令应将记录指针设置在成功添加的记录上。 6.7.2 使用与安全的条件

仅当安全状态满足了用于添加功能的该EF的安全属性时,才可执行该命令。 如果在发布命令的时刻,当前选择了EF,则该命令可以被处理,而无需该文件的标识。

EF标识符时,它将文件置位为当前EF,并且复位当前记录指针。

如果命令被应用到不带有记录结构的EF,则应放弃该命令。

注:如果该命令被应用到有很多记录的循环结构EF,则带有最高记录号的记录可被代替。该记录变成为录记号1。 6.7.3 命令报文

表43 APPEND RECORD命令APDU CLA 按RPV 5.4.1定义 INS ‘E2’ P1 只有P1=‘00’是有效的 P2 按照表44 Lc字段 后续数据字段的长度 数据字段 待添加的记录 Le字段 空 表44 引用控制P2的编码 b8 b7 b6 b5 b4 b3 b2 b1 含义 0 0 0 0 0 - - - ——当前选择的EF × × × × × - - - ——短EF标识符 (不全相等) 任何其他值 RFU 当记录是简单TLV数据对象(见5.4.4)时,表45

表45 命令的数据字段 完整添加的一个记录

Tn Ln 记录的完整数据字节 1个字节 1个或3个字节 Ln字节 6.7.4 状态条件 下列特定报警条件可能发生。 ——SW1=‘63’, 同时SW2=

·‘CX’:计数器(成功的添加,但是在使用内部重试例行程序之后,‘X’≠‘0’表示重试数;‘X’=‘0’意味着没有计数器被提供)。

下列特定差错条件可能发生。 ——SW1=‘65’, 同时SW2= ·‘81’:存储器故障(不成功的添加)。 ——SW1=‘67’, 同时SW2= ·‘00’:错误的长度(空的LC字段)。 ——SW1=‘69’, 同时SW2= ·‘81’:命令与文件结构不兼容。 ·‘82’:安全状态不被满足。 ·‘86’:命令不被允许(没有当前EF)。 ——SW1=‘6A’, 同时SW2= ·‘81’:功能不被支持。 ·‘82’:文件未被找到。 ·‘84’:无足够的文件存储空间。 ·‘85’:LC与TLV结构不一致。 6.8 UPDATE RECORD命令 6.8.1 定义和范围

UPDATE RECORD命令报文启动使用命令APDU给出的位来更新特定记录。 当使用当前记录寻址时,该命令应将记录指针设置在成功的更新记录上。 6.8.2 使用与安全的条件

仅当安全状态满足了用于更新功能的该EF的安全属性时,才能执行该命令。 如果在发布命令的时刻,当前选择了EF,则该命令可以被处理,而无需该文件的标识。 当命令包含了有效的短EF标识符时,它将文件置位为当前EF,并且复位当前记录指针。

如果命令被施加到不带有记录结构的EF,则应放弃该命令。 当命令适用于带有线性固定结构或循环结构的EF时,如果该记录长度不同于现有记录的长度,则应放弃该命令。

当命令适用于带有线性可变结构的EF时,并且当该记录长度不同于现有记录的长度时,则可以完成该命令。

被施加到循环文件的“先前”的命令选项(P2=XXXXX011)具有和APPEND RECORD相同的行为。

6.8.3 命令报文

表47 UPDATE RECORD命令APDU CLA 按5.4.1定义的 INS ‘DC’ P1 P1=‘00’指明当前记录 P≠‘00’是所规定记录的号 P2 按照表48 Lc字段 后续数据字段的长度 数据字段 待更新的记录 Le字段 空 表48 引用控制P2

b8 b7 b6 b5 b4 b3 b2 b1

含义