智能卡ISO7816-4规范 联系客服

发布时间 : 星期日 文章智能卡ISO7816-4规范更新完毕开始阅读b4582722f66527d3240c844769eae009591ba25d

情况3E——3+(B2‖B3),(B1)=0,并且(B2‖B3)≠0。

·Lc 字段由前3个字节组成,其中,B2和B3编码了值从1至65 535的Lc(≠0)。 ·B4 至BL 都是数据字段中的Lc字节。 ·没有字节用于值为0的Le。

情况4E——L=5+(B2‖B3),(B1)=0,并且(B2‖B3)≠0。

·Lc字段由前3个字节组成,其中,B2和B3编码了值从1至65 535的Lc(≠0)。 ·B4至BL-2都是数据字段中的Lc字节。

·Le字段由最后的2个字节B L-1和BL组成;它们编码了值从1至65 536的Le。 对于本规范本部分定义的每个传输协议,附属到本部分的附录(每个协议一个)规定了先前7种情况中的每一种用的运输APDU的命令响应对。 5.3.3 响应APDU

如图6所示(也见表7),本规范本部分定义的响应APDU由下列内容组成: ——有条件的可变长度主体;

——必备的2字节尾标(SW1 SW2)。

主体 尾标 SW1 SW2 [数据字段] 图6 响应APDU结构 在响应APDU的数据字段中呈现的字节数用Lr来表示。 尾标编码了处理“命令响应对”之后的接收实体的状态。 注:如果该命令被放弃,则响应APDU是一个尾标,它按2个状态字节来编码差错条件。 命令首标、数据字段和响应尾标用的编码约定

表6示出了命令APDU的内容

表6 命令APDU内容 代码 名称 长度 描 述 CLA 1 类别 指令的类别 INS 1 指令 指令代码 P1 1 参数1 指令参数1 P2 1 参数2 指令参数2 Lc字段 长度 变量1或3 在命令的数据字段中呈现的字节数 数据字段 数据 变量=Lc 在命令的数据字段中发送的字节串 Le字段 长度 变量≤3 在向命令响应的数据字段中期望的字节最大数 表7示出了响应APDU的内容

表7 响应APDU内容 代码 名称 长度 描 述 数据字段 数据 变量=Lr 在响应的数据字段中收到的字节串 SW1 1 状态字节1 命令处理状态 SW2 1 状态字节2 命令处理受限字符 后续条规定了类别字节、指令字节、参数字节、数据字段字节和状态字节用的编码约定。

除非另有规定,在这些字节中,RFU的比特都编码为0,并且RFU字节也都编码为‘00’。 5.4.1 类别字节

按照与表9一起使用的表8,命令中的类别字节CLA用来指出: ——命令和响应在什么程度上应遵循本规范本部分;

——当适用(见表9)时,安全报文交换的格式及逻辑信道号。

表8 CLA的编码及含义

值 含 义 ‘OX’ 按照本规范定义 命令和响应的结构和编码(对于编码‘X’ 见表9)。 ‘10’~‘7F’ RFU ‘8X’‘9X’ 按本规范定义命令和响应的结构。‘X’除外(对于‘X’编码 见表9) 命令和响应的编码及含义是专有的。 ‘AX’ 除非通过应用上下文另有规定 按照本规范定义命令和响应的编码及含义(对于编码‘X’ 见表9)。 ‘BO’~‘CF’ 按照本规范本部分 命令和响应的结构 ‘DO’~‘FE’ 命令和响应的专有结构 ‘FF’ 保留供PTS用

表9 当CLA=‘OX’、‘8X’、‘9X’或‘AX’时,半字节‘X’的编码及含义

b4 b3 b2 b1 含 义 × × — — 安全报文(SM)格式 0 × — — ·没有SM或SM不按照 0 0 — — ——没有SM或没有SM指示 0 1 — — —专有的SM格式 1 X — — ·安全报文交换按照 1 0 — — —不被鉴别的命令首标 1 1 — — —被鉴别的命令首标 (关于命令首标的用法见5.6.3.1) — — × × 逻辑信道号(按照 (当不使用逻辑信道号时或当逻辑信道#0被选择时,b2 b1=00) 5.4.2 指令字节

命令中的指令字节INS应予以编码,以便允许使用本规范第3部分定义的任何协议进行传输。表10示出了必然无效的ISN代码

表10 无效的INS代码 b8 b7 b6 b5 b4 b3 b2 b1 含 义 × × × × × × × 1 —奇数值 0 1 1 0 × × × × —‘6X’ 1 0 0 1 × × × × —‘9X’ 表11示出了本规范定义的INS代码。当CLA的值位于从‘00’至‘7F’的范围内时,INS代码的其他值有待ISO/IEC JTC1 SC17进行分配。

表11 本规范定义的INS代码

值 命令名称 条款 ERASE BINARY ‘0E’ VERIFY ‘20’ MANAGE CHANNEL ‘70’ EXTERNAL AUTHENTICATE ‘82’ GET CHALLENGE ‘84’ INTERNAL AUTHENTICATE ‘88’ SELECT FILE ‘A4’ READ BINARY ‘BO’ GET RESPONSE ‘CO’ ENVELOPE ‘C2’ GET DATA ‘CA’ WRITE BINARY ‘DO’ WRITE RECORD ‘D2’ UPDATE BINARY ‘D6’ PUT DATA ‘DA’ UPDATE RECORD ‘DC’ APPEND RECORD ‘E2’ 5.4.3 参数字节

命令中的参数字节P1—P2可以具有任何值。如果参数字节不提供进一步的限定,则它应置为‘00’。 5.4.4 数据字段字节

每个数据字段应具有下列三种结构之一:

——每个TLV编码的数据字段应由一个或多个TLV编码的数据对象组成;

——每个非TLV编码的数据字段应按照相应命令的规范由一个或多个数据元组成; ——专用编码的数据字段结构在本规范中不予规定。

本规范支持在数据字段中的下列两种类型的TLV编码的数据对象: ——BER—TLV数据对象; ——简单TLV数据对象。

本规范不使用‘OO’或‘FF’作为标记值。

每个BER—TLV数据对象应由2个或3个连续的字段(见ISO8825和附录D)组成。 ——标记字段T由一个字节或多个连续字节组成。它编码了类别、类型和编号。 ——长度字段由一个字节或多个连续字节组成。它编码了整数L。

——如果L不为空,则值字段V由L个连续字段组成。如果L为空,则数据对象为空:不存在值字段。

每个简单TLV数据对象应由2个或3个连续字段组成。

——标记字段T由单个字节组成,从1至254中的一个编号(例如,一个记录标识符)。它对类别和结构类型不进行编码。

——长度字段由1个字节或3个连续字节组成。如果长度字段的首字节处于从‘OO’至‘FE’的范围内,则长度字段由单个字节组成,该字节编码从0至254中的一个整数L。如果首字节等于‘FF’,则长度字段后续2个字节使用从0至65535中的值编码了一个整数L。

——如果L不为空,则值字段V由L个连续字节组成。如果L为空,则数据对象为空:不存在有效字段。

某些命令(例如,SELECT FILE)的数据字段,简单TLV数据对象的值字段和某些原始BER—TLV数据对象的值字段都预期用于编码一个或多个数据元。

某些其他命令(例如,面向记录的命令)的数据字段、其他原始BER—TLV数据对象的值字段都预期用于编码一个或多个简单TLV数据对象。

某些其他命令(例如,面向对象的命令)的数据字段和结构化BER—TLV数据对象的值字段都预期用于编码一个或多个BER—TLV数据对象。

注:在TLV编码的数据对象之前、之间或之后,无任何含义‘OO”或‘FF’字节可以出现(例如,由于擦除的或修改的TLV编码的数据对象引起的)。 5.4.5 状态字节

响应的状态字节SW1—SW2表示了卡内的处理状态。图7示出了本规范本部分定义的值的结构方案。

SW1 SW2

放弃 处理 处理 完成 正常处理 报警处理 执行差错 检验差错

‘61XX’ ‘6200’ ‘6300’ ‘64XX’ ‘65XX’ ‘67XX’

‘9000’ (见注释) (见注释) 至‘6FXX’

图7 状态字节的结构方案

注:当SW1=‘63’或‘65’时,非易失存储器的状态变化。当SW1=除‘63’和‘65’外的‘6X’时,非易失存储器的状态不变化。

由于本规范本部分的规定的原因,本部分不定义SW1—SW2的下列值: ——‘60XX’;

——如果‘XX’≠‘00’,在每种情况下,‘67XX’,‘6BXX’,‘6DXX’。6EXX’,‘6FXX’; ——如果‘XXX’≠‘000’,‘9XXX’。

无论哪个协议被使用,SW1—SW2的下列值要予以定义(见附录A的举例)。

——如果使用响应(其中SW1=‘6C’)来中途停止命令,当在发出任何其他命令之前重新发出同一命令,则SW2指示将该值给予短的Le字段(被请求数据的准确长度)。 ——如果使用响应(其中SW1=‘61’)来处理命令(它可以是情况2或4,见表4和图4),则在发出任何其他命令之前发出的GET RESPONSE 命令中,SW2指示将最大值给予短的Le字段(额外数据长度仍然有效)。

注:类似于由‘61XX’所提供的功能可以在应用级上通过‘9FXX’来提供。

通过表13~18所完成的表12示出了本规范本部分定义的SW1—SW2值的一般含义。对于每个命令,相应的条款提供了更详细的含义。

当SW1的值为‘62’,‘63’,‘65’,‘68’,‘69’和‘6A’时,表13~18规定了SW2的值。除了本规范本部分不定义的从‘F0’至‘FF’值之外,表13至表18不定义的SW2值都是RFU。

表12 SW1—SW2的编码 SW1—SW2 含 义 正常的处理 ‘9000’ —无进一步限定 ‘61XX’ —SW2指示仍然有效的响应字节数 (见下面文本) 报警处理 ‘62XX’ —非易失存储器状态不变化 (在SW2中进一步的限定,见表13) ‘63XX’ —非易失存储器状态变化 (在SW2中进一步的限定,见表14) 续表12 SW1—SW2的编码 执行差错 ‘64XX’ —非易失存储器状态不变化 (SW2=‘00’,其他值都是RFU) ‘65XX’ —非易失存储器状态变化 (在SW2中进一步的限定,见表15) ‘66XX’ —保留供安全相关的发布使用 (本规范本部分不定义) 校验差错