命令APDU由一个四个字节长的命令头和可变长度的命令体构成。如图I-1所示:
CLA |
INS |
P1 |
P2 |
Lc |
Data |
Le |
必备头 |
可选体 |
图 I-1 命令APDU结构
命令APDU传输的数据长度由Lc表示(命令数据域的长度)。
命令响应APDU数据域的最大长度由期望数据长度(Le)表示。当 Le 值为零时,应答数据域最大长度为256。如果命令报文中需要,则Le总是‘00’。
响应APDU格式响应APDU包括一个可变长度的报文体和一个长度为2个字节的报文尾. 如图I-2所示:
响应APDU的数据域的结构在附件B中定义, 详细的编码信息如下所示.
数据 |
SW1 |
SW2 |
报文体 |
报文尾 |
图 I-2 响应APDU结构
编码约定本节定义了报文(命令和应答)头和报文体的编码方法。
2.3.1 类字节编码类字节的高4位代表了命令的类别, 如表I-2所示.
十六进制 |
意义 |
‘0’ |
通用工业命令 |
‘8’ |
本规范专有命令 |
其他任何数值 |
不在本规范之内 |
表I-2 类字节的高四位
类字节的高4位值为8时,代表该命令是本规范专有的命令。即该命令和响应报文的结构根据 ISO/IEC 7816- 4定义, 报文编码在 PSE范围内定义。
类字节的低4位根据 ISO/IEC 7816-4定义,代表了保密信息和逻辑通道机制。
2.3.2 指令字节编码
命令的INS字节根据本规范的第一册第I部分编码。INS的编码和它与 CLA的关系如表I- 3 所示:
CLA |
INS |
意义 |
‘8x’ |
‘1E’ |
应用锁定 |
‘8x’ |
‘18’ |
应用解锁 |
‘8x’ |
‘16’ |
锁卡 |
‘0x’ |
‘82’ |
外部认证 |
‘8x’ |
‘AE’ |
生成应用密文 |
‘0x’ |
‘84’ |
取随机数 |
‘8x’ |
‘CA’ |
取数据 |
‘8x’ |
‘A8’ |
取处理选项 |
‘0x’ |
‘88’ |
内部认证 |
‘8x’ |
‘24’ |
改变/解锁个人识别号(PIN) |
‘0x’ |
‘B2’ |
读记录 |
‘0x’ |
‘A4’ |
选择 |
‘0x’ |
‘20’ |
验证 |
‘8x’ |
‘Dx’ |
支付系统保留 |
‘8x’ |
‘Ex’ |
支付系统保留 |
‘9x’ |
‘xx’ |
制造商的专有INS编码保留 |
‘Ex’ |
‘xx’ |
发卡行的专有INS编码保留 |
表I-3 命令字节编码
类'8x'可能会被分配给附加的INS编码,以便将来在PSE的范围中使用. 所以最好不要把可能在PSE范围中使用的专有命令分配在类'8x'中,以避免冲突。
2.3.3 参数字节编码参数字节 P1,P2 可以是任意值。如果不使用,参数字节的值可以为00。
2.3.4 数据域字节编码如果存在,命令APDU的数据域包含一串数据元。
如果存在,响应APDU数据域包含一个数据对象或按照附件B封装在一个模板内的数据对象串。
2.3.5 状态字节编码响应报文中的状态字节SW1,SW2用来表示命令的处理状态,它由传输层传递到应用层。状态字节的编码如图I-3 所示:
SW1 |
SW2 |
意义 |
|
|
正常处理 |
‘90’ |
‘00’ |
处理完成(其它SW2值保留) |
|
|
警告处理 |
‘62’ |
‘83’ |
非易失性内存状态未改变;选择文件无效 |
‘63’ |
‘00’ |
非易失性内存状态改变;鉴定失败 |
‘63’ |
‘Cx’ |
非易失性内存状态改变;‘x’提供计数器 |
|
|
错误检测 |
‘69’ |
‘83’ |
命令不允许;认证方法锁定 |
‘69’ |
‘84’ |
命令不允许;引用数据无效 |
‘69’ |
‘85’ |
命令不允许;使用条件不满足 |
‘6A’ |
‘81’ |
错误参数P1 P2;功能不支持 |
‘6A’ |
‘82’ |
错误参数P1 P2;文件未找到 |
‘6A’ |
‘83’ |
错误参数P1 P2;记录未找到 |
‘6A’ |
‘88’ |
引用数据(数据对象)未找到 |
表 I-4 状态字节SW1 SW2编码
下列SW1,SW2的值在本规范的第一册第I部分进行了描述,它们用于TPDU而不返回给APDU:
'61xx': SW2表示可用的应答字节数。
'6cxx': 错误长度Le,SW2表示实际的长度。
SW1='6x'或'90'表示一个根据ISO/IEC 7816-4 编码的正常、警告或错误状态。
从IC卡返回的其它的SW1值在本规范的第一册第I部分中不支持。
表I-5中列出了本规范要求的对特定条件的应答中,SW1,SW2状态字节的编码。IC卡可能会产生不在下表所列的状态字,来表示本册第二部分IC卡应用规范中没有规定的错误或警告条件。
|
应用锁定 |
应用解锁 |
锁卡 |
外部认证 |
生成应用密码 |
取随机数 |
取数据 |
取处理选项 |
内部认证 |
改P I N / 解锁 |
读记录 |
选择 |
验证
| |
SW1 |
SW2 | |||||||||||||
‘62’ |
‘83’ |
|
|
|
|
|
|
|
|
|
|
|
X |
|
‘63’ |
‘00’ |
|
|
|
X |
|
|
|
|
|
|
|
|
|
‘63’ |
‘Cx’ |
|
|
|
|
|
|
|
|
|
|
|
|
X |
‘69’ |
‘83’ |
|
|
|
|
|
|
|
|
|
|
|
|
X |
‘69’ |
‘84’ |
|
|
|
|
|
|
|
|
|
|
|
|
X |
‘69’ |
‘85’ |
|
|
|
X |
X |
|
|
X |
|
|
|
|
|
‘6A’ |
‘81’ |
|
|
|
|
|
|
X |
|
|
|
|
X |
|
‘6A’ |
‘82’ |
|
|
|
|
|
|
|
|
|
|
|
X |
|
‘6A’ |
‘83’ |
|
|
|
|
|
|
|
|
|
|
X |
|
|
‘6A’ |
‘88’ |
|
|
|
|
|
|
X |
|
|
|
|
|
|
表 I-5 状态字节分布
本表中使用以下约定:
X= 允许的应答码,对应于该应答码,需要产生某个特定的动作或该应答码对于一个与EMV兼容的应用具有特别的意义。该动作的意义将在第6章中解释。
2.3.6 保留数据(RFU)的编码除非有其他规定,本规范中的各个表中标记为保留(RFU)或'x'的数据单元必须设置为0。
为了便于增加新功能和迁移,IC卡和终端不要对标记为RFU的数据进行验证。
逻辑通道逻辑通道用来建立并维持卡片上的一个应用与终端上的一个应用之间的联系。
一张卡片可以支持超过一条逻辑通道,但是本规范仅仅支持基本的逻辑通道。这限制了并发应用的数目不能大于1。
命令
本节描述以下命令-响应APDU对:
l 应用锁定(发行后命令)
l 应用解锁 (发行后命令)
l 锁卡(发行后命令)
l 外部认证
l 生成应用密文
l 取随机数
l 取数据
l 取处理选项
l 内部认证
l PIN改变/解锁(发行后命令)
l 读记录
l 验证
发行后命令只能通过脚本处理(见第II部分 6.10节)或安全报文(见本规范第2册)的形式传递。
2.5.1 应用锁定(APPLICATION BLOCK)命令-响应APDU 2.5.1.1 定义和范围应用锁定命令是一个发行后命令,该命令使当前被选择的应用无效。
在成功的应用锁定命令之后:
l 对选择命令,无效的应用应该返回状态字节“选择文件无效”(SW1 SW2='6283')。
l 对生成应用密码命令,一个无效的应用应该返回AAC代替AC作为应答。
2.5.1.2 命令报文应用锁定命令报文根据表I- 6来编码:
编码 |
值 |
CLA |
‘8C’或‘84’;根据本规范第二册定义的安全报文编码规则编码 |
INS |
‘1E’ |
P1 |
‘00’;其它值保留 |
P2 |
‘00’;其它值保留 |
LC |
数据域的字节数 |
DATA |
报文鉴别码(MAC)数据成员;根据本规范第二册定义的安全报文编码规则编码 |
Le |
不存在 |
表 I-6 应用锁定命令报文
2.5.1.3 命令报文的数据域命令报文的数据域中包含了根据本规范的第2册定义的安全报文格式编码的MAC数据。
2.5.1.4 响应报文的数据域响应报文没有数据域。
2.5.1.5 响应报文返回的处理状态不论应用是否有效,'9000'编码总表示命令成功执行。
2.5.2 应用解锁(APPLICATION UNBLOCK)命令-响应APDU 2.5.2.1 定义和范围应用解锁命令是一个发行后命令,用来恢复当前被选择的应用。
当应用解锁命令成功之行后,此前通过应用锁定附加在该应用上的限制被解除。
2.5.2.2 命令报文应用解锁命令报文通过表I-7编码。
编码 |
值 |
CLA |
‘8C’或‘84’;根据本规范第二册定义的安全报文编码规则编码 |
INS |
‘18’ |
P1 |
‘00’;其它值保留 |
P2 |
‘00’;其它值保留 |
Lc |
数据域字节数 |
DATA |
报文鉴别码(MAC)数据成员;根据本规范第二册定义的安全报文编码规则编码 |
Le |
不存在 |
表 I-7 应用解锁命令报文
2.5.2.3 命令报文的数据域命令报文的数据域中包含了根据本规范的第2册定义的安全报文格式编码的MAC数据。
2.5.2.4 响应报文的数据域响应报文中没有数据域。
2.5.2.5 响应报文返回的处理状态不论应用是否有效,'9000'编码表示命令成功执行。
2.5.3 锁卡(CARD BLOCK)命令-响应APDU 2.5.3.1 定义和范围锁卡命令是一个发行后命令,用来永久地停止IC卡中所有的应用。
锁卡命令停止 IC卡中所有的应用,包括那些被隐式选中的应用。
当一个锁卡命令成功后,所有随后的选择命令都将收到状态字节为'功能不支持'(SW1 SW2='6A81')的反馈,并且不执行任何其它动作。
2.5.3.2 命令报文
锁卡命令报文根据表I-8编码。
编码 |
值 |
CLA |
‘8C’或‘84’;根据本规范第二册定义的安全报文编码规则编码 |
INS |
‘16’ |
P1 |
‘00’;其它值保留 |
P2 |
‘00’;其它值保留 |
Lc |
数据字节数 |
DATA |
报文鉴别码(MAC)数据成员;根据本规范第二册定义的安全报文编码规则编码 |
Le |
不存在 |
表 I-8 锁卡命令报文
2.5.3.3 命令报文的数据域命令报文的数据域中包含了根据本规范的第二册定义的安全报文格式编码的MAC数据。
2.5.3.4 响应报文的数据域响应报文没有数据域。
2.5.3.5 响应报文返回的处理状态不论卡是否已经被锁,'9000'编码都表示命令成功执行.
2.5.4 外部认证(EXTERNAL AUTHENTICATE)命令-响应APDU 2.5.4.1 定义和范围外部认证命令要求IC卡中的应用认证一个密文。
IC卡的应答应该包括该命令的处理状态。
2.5.4.2 命令报文外部认证命令报文根据表I- 9编码:
编码 |
值 |
CLA |
‘00’ |
INS |
‘82’ |
P1 |
‘00’ |
P2 |
‘00’ |
Lc |
8-16 |
DATA |
发卡行鉴定数据 |
Le |
不存在 |
表 I-9 外部认证命令报文
在'外部认证'命令中的引用算法(P1)值为‘00’,表示该域无信息。对算法的引用或者在使用本命令前就已经完成,或者在本命令的数据域中定义。
2.5.4.3 命令报文的数据域本命令报文的数据域包含标签为'91'的值域,编码如下:
l 前8个字节为必选的密文。
l 附加的1-8个可选字节是专有数据。
2.5.4.4 响应报文的数据域响应报文没有数据域。
2.5.4.5 响应报文返回的处理状态'9000'编码表示命令成功执行。
2.5.5 生成应用密文(GENERATE AC)命令-响应APDU 2.5.5.1 定义和范围生成应用密文命令传送交易相关数据到IC卡,IC卡计算并且返回一个密文。这个可以是一个由本规范定义的应用密文( AC ),或者是一个专有密文。在这两种情况中,密文都将是如表格I-10指定的一种类型。(更多的细节参见第二部分)。
类型 |
意义 |
应用鉴定密文(AAC) |
拒绝交易 |
应用授权参考(AAR) |
卡片请求授权参考 |
授权请求密文(ARQC) |
请求联机授权 |
交易证书(TC) |
批准交易 |
表 I-10 生成应用密码类型
由IC卡返回的密文可能由于IC卡的内部处理过程而与命令报文中要求的密码不一样(如第II部分所述)。
2.5.5.2 命令报文生成应用密码的命令报文根据表I- 11编码:
编码 |
值 |
CLA |
‘80’ |
INS |
‘AE’ |
P1 |
引用控制参数(见表I-12) |
P2 |
‘00’ |
Lc |
可变 |
DATA |
交易相关数据 |
Le |
‘00’ |
表I-11 生成应用密码命令报文
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
意义 |
0 |
0 |
|
|
|
|
|
|
AAC |
0 |
1 |
|
|
|
|
|
|
TC |
1 |
0 |
|
|
|
|
|
|
ARQC |
1 |
1 |
|
|
|
|
|
|
保留RFU |
|
|
0 |
|
|
|
|
|
未明确请求复合动态数据认证/应用密文生成 |
|
|
1 |
|
|
|
|
|
请求复合动态数据认证/应用密文生成 |
|
|
|
x |
x |
x |
x |
x |
保留 |
表I-12 生成应用密码引用控制参数
生成应用密码命令中的引用控制参数根据表I-12编码:
2.5.5.3 命令报文的数据域命令报文的数据域根据1.4节中的数据对象列表规则编码。
2.5.5.4 响应报文的数据域响应报文的数据域包含一个BER-TLV编码的数据对象。这个数据对象必须按照以下两种格式之一编码。
格式1:
响应报文中的数据对象是一个标签为'80'的基本数据对象。数据域由如表I-13所示的数据对象连接而成,各数据对象之间没有分隔符(标签和长度)。
值 |
存在性 |
密文信息数据 |
必备 |
应用交易序号(ATC) |
必备 |
应用密文(AC) |
必备 |
发卡行应用数据 |
可选 |
表 I-13 产生密码响应报文数据域格式1
格式2:
响应报文的数据对象是一个标签为'77'的结构数据对象。数据域中可以包含多个BER-TLV编码对象,但是必须包括密文信息数据、应用交易序号和由IC卡计算出的密文(可以是应用密文或专有密文)。对于响应报文中可能包含的专有数据对象的应用和解释,不在本规范的范围之内。
如果响应报文是如本规范第二册6.6节定义封装在一个包内的,对复合动态数据认证/应用密文生成命令的应答,则采用格式2。该应答数据单元格式参见第二册6.6节的表16。
以上两种格式中,在生成应用密文命令的响应报文中包括的密文数据按照表I-14的方式编码:
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
意义 |
0 |
0 |
|
|
|
|
|
|
AAC |
0 |
1 |
|
|
|
|
|
|
TC |
1 |
0 |
|
|
|
|
|
|
ARQC |
1 |
1 |
|
|
|
|
|
|
AAR |
|
|
x |
x |
|
|
|
|
支付系统密码 |
|
|
|
|
0 |
|
|
|
未请求通知 |
|
|
|
|
1 |
|
|
|
请求通知 |
|
|
|
|
|
x |
x |
x |
原因/通知/授权参考码 |
|
|
|
|
|
0 |
0 |
0 |
无信息 |
|
|
|
|
|
0 |
0 |
1 |
不允许服务 |
|
|
|
|
|
0 |
1 |
0 |
PIN重试超限 |
|
|
|
|
|
0 |
1 |
1 |
发卡行鉴定失败 |
|
|
|
|
|
x |
x |
x |
其它值保留 |
表 I-14 密码信息数据编码
2.5.5.5 响应报文返回的处理状态.'9000'编码表示命令成功执行.
2.5.6 取随机数(GET CHALLENGE)命令-响应APDU 2.5.6.1 定义和范围取随机数命令从IC卡得到一个随机数,用于与安全有关的处理。
该随机数只对下一条发出的命令有效。
2.5.6.2 命令报文取随机数命令报文根据表I- 15编码:
编码 |
值 |
CLA |
‘00’ |
INS |
‘84’ |
P1 |
‘00’ |
P2 |
‘00’ |
Lc |
不存在 |
DATA |
不存在 |
Le |
‘00’ |
表I-15 取随机数命令报文
2.5.6.3 命令报文的数据域命令报文没有数据域。
2.5.6.4 响应报文的数据域响应报文的数据域包含由 IC卡产生的8个字节的随机数。
2.5.6.5 响应报文返回的处理状态'9000'编码表示命令成功执行。
2.5.7 取数据(GET DATA)命令-响应APDU 2.5.7.1 定义和范围在本规范中取数据命令用来从当前应用中取得一个没有封装在记录中的基本数据对象。取数据命令只能用来获取基本数据对象ATC(标签为'9F36')、上次联机ATC寄存器(标签为'9F13')或密码重试计数器(标签为'9F17')。 这些数据对象在附件A的表A-1中有定义,由IC卡中的应用解释。
2.5.7.2 命令报文
编码 |
值 |
CLA |
‘80’ |
INS |
‘CA’ |
P1 P2 |
‘9F36’,‘9F13’或‘9F17’ |
Lc |
不存在 |
DATA |
不存在 |
Le |
‘00’ |
表I-16 取数据命令报文
取数据命令报文根据表I- 16编码 :
2.5.7.3 命令报文的数据域命令报文没有数据域。
2.5.7.4 响应报文的数据域响应报文的数据域中包含有如命令报文的P1 P2所述的基本数据对象。(即包括它的标签和它的长度)。
2.5.7.5 响应报文返回的处理状态'9000'编码表示命令成功执行。
2.5.8 取处理选项(GET PROCESS OPTIONS)命令-响应APDU 2.5.8.1 定义和范围取处理选项命令用来启动IC卡内的交易。
IC卡的响应报文中包含应用交互特征( AIP )和应用文件定位器( AFL )。
2.5.8.2 命令报文取处理选项命令报文根据表I- 17编码 :
编码 |
值 |
CLA |
‘80’ |
INS |
‘A8’ |
P1 |
’00’;其他值都作为保留(RFU) |
P2 |
‘00’; 其他值都作为保留(RFU) |
Lc |
变长 |
DATA |
处理选项数据对象列表(PDOL)相关数据 |
Le |
‘00’ |
表I- 17 取处理选项命令报文
2.5.8.3 命令报文的数据域命令报文的数据域根据IC卡提供的处理选择数据对象列表(PDOL)编码。PDOL按照1.4节定义的标签标记,用标签’83’指明。 当IC卡没有提供数据对象列表时,这个模板的长度域设置为0。否则,这个模板的数据长度域的值等于传输给IC卡的数据对象的值域的总长度。
2.5.8.4 响应报文的数据域响应报文的数据域包含一个BER-TLV编码数据对象。
这个数据对象按照按照以下两种格式之一编码。
格式1:
响应报文中的数据对象是一个标签为'80'的基本数据对象。数据域由如表I-18所示的应用交互特征(AIP)和应用文件定位器(AFL)的值域连接而成,各数据对象之间没有分隔符(标签和长度)。
‘80’ |
长度 |
应用交互特征 |
AFL |
表I-18 取处理选项响应报文数据域格式1
格式2:
应答信息中的数据对象是一个标签为'77'的结构数据对象。数据域中可以包含多个BER-TLV编码对象,但是必须包括应用交互特征和应用文件定位器。对于应答信息中可能包含的专有数据对象的应用和解释,不属于本规范的范围。
应用交互特征按照本册第II部分的规则编码。它定义了可以被IC卡中的应用支持的功能。
AFL包括一个不含有分隔符的由文件与记录组成的列表。这个表可以被当前选中的应用根据本书的第II部分中描述的IC卡应用规范读出。
2.5.8.5 响应报文返回的处理状态'9000'编码表示命令成功执行.
2.5.9 内部认证(INTERNAL AUTHENTICATE)命令-响应APDU 2.5.9.1 定义和范围内部认证命令引发卡片使用从IFD收到的随机数、数据和卡片中储存的私钥来计算出‘签名动态应用数据’的过程。
2.5.9.2 命令报文内部认证消息根据表格I- 19编码 :
编码 |
值 |
CLA |
‘00’ |
INS |
‘88 |
P1 |
‘00’ |
P2 |
‘00’ |
Lc |
认证相关数据长度 |
DATA |
认证相关数据 |
Le |
‘00’ |
表I-19 内部认证命令报文编码
在内部认证命令中的算法引用(P1)域值为‘00’,这表示该值无意义。 对算法的引用应该或者在使用本命令前就已经完成,或者在本命令的数据域中定义。
2.5.9.3 命令报文的数据域命令报文的数据域包括该应用专有的与认证有关的数据。它是根据本规范第二册中定义的动态数据认证数据对象列表(DDOL)规则来编码的。
2.5.9.4 响应报文的数据域响应报文的数据域包括一个BER-TLV编码数据对象。这个数据对象的编码必须为以下两种格式之一。
格式1:
响应报文中的数据对象是一个标签为'80'的基本数据对象。数据域中包括签名动态应用数据。签名动态应用数据按照本规范第2册的规则定义。
格式2:
响应报文中的数据对象是一个标签为'77'的结构数据对象。数据域中可以包含多个BER-TLV编码对象,其中必须包括签名动态应用数据。对响应报文中可能包含的专有数据对象的应用和解释,不在本规范范围之内。
2.5.9.5 响应报文返回的处理状态'9000'编码表示命令成功执行。
2.5.10 PIN 更改/解锁(PIN CHANGE/UNBLOCK)命令-响应APDU 2.5.10.1 定义和范围PIN 更改/解锁命令是一个发行后命令。它的目的是让发卡行解锁PIN或同时既更改PIN也解锁PIN。
当PIN更改/解锁命令成功后,卡片将执行下列功能:
l PIN重试记数器的值将复位到PIN重试上限值。
l 如果有请求,参考PIN值将被设置为新的PIN值。
为了保密,如果本命令包含有PIN数据,则该数据应该加密。
注:参考PIN是存储在卡中与应用相关的PIN,它用来验证在验证命令中传来的PIN数据。
2.5.10.2 命令报文PIN 更改/解锁命令报文根据表I-20来编码。
P2 :如果 P2 等于‘00’,参考PIN解锁,且PIN重试计数器被复位到PIN重试上限值。因为PIN更改/解锁命令中不包含新的PIN值,所以PIN不会更新。
编码 |
值 |
CLA |
‘8C’或‘84’;根据本规范第二册定义的安全报文编码规则编码 |
INS |
‘24’ |
P1 |
‘00’ |
P2 |
‘00’、‘01’或‘02’ |
Lc |
数据字节数 |
DATA |
加密PIN数据成员(如果存在)和MAC数据;根据本规范第二册定义的安全报文编码规则编码 |
Le |
不存在 |
表I-20 PIN改变/解锁命令报文
P2等于‘01’或‘02’的值保留给支付系统使用。
能引起PIN解锁/改变的任何其它的P2的值不在本规范内讨论。留给各支付系统自行决定。
2.5.10.3 命令报文的数据域本命令报文的数据域包括PIN数据,后面可以加上按照本规范第二册定义的安全报文格式编码的MAC数据。
2.5.10.4 响应报文的数据域响应报文没有数据域。
2.5.10.5 响应报文返回的处理状态‘9000’编码表示命令成功执行。
2.5.11 读记录(READ RECORD)命令-响应APDU 2.5.11.1 定义和范围读记录命令从一个线性文件中读一条文件记录。
从 IC卡返回的应答中将包含这条被读出的记录。
2.5.11.2 命令报文命令报文根据表I- 21编码:
编码 |
值 |
CLA |
’00’ |
INS |
‘B2’ |
P1 |
记录数 |
P2 |
引用控制参数 |
Lc |
不存在 |
数据 |
不存在 |
Le |
’00’ |
表I-21 读记录命令报文
表I-22 定义了命令报文的引用控制参数。
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
意义 |
x |
x |
x |
x |
x |
|
|
|
SFI |
|
|
|
|
|
1 |
0 |
0 |
P1为纪录号 |
表I-22 读记录命令引用控制参数
2.5.11.3 命令报文的数据域
命令报文中没有数据域。
2.5.11.4 响应报文的数据域任何成功的读记录命令的响应报文的数据域都包含读出的记录值。对于在1-10范围内的SFI,这个记录是一个按照附件B定义的BER-TLV结构数据对象。它按照表I-23编码。
‘70’ |
长度 |
记录模板 |
表I-23 读记录响应报文数据域
除了6.3节所指明的部分外,对于不在1-10范围内的SFI的读记录命令响应报文,不在本规范的描述范围内。
2.5.11.5 响应报文返回的处理状态‘9000’编码表示命令成功执行。
2.5.12 验证(VERIFY)命令-响应APDU 2.5.12.1 定义和范围验证命令引发IC卡将命令报文数据域内的交易PIN数据和与该应用相关的参考PIN数据进行比较验证。验证方式由IC卡中的应用自行决定。如本册第II部分所述,当从CVM列表中选择的持卡人验证方式(CVM)是脱机PIN时,使用验证命令。
2.5.12.2 命令报文验证命令报文根据表I- 24编码的:
编码 |
值 |
CLA |
‘00’ |
INS |
‘20 |
P1 |
‘00’ |
P2 |
参考数据的限制(见表I-25) |
Lc |
var. |
DATA |
交易PIN数据 |
Le |
不存在 |
表I-24 验证命令报文
表I-25定义了参考数据(P2)的意义.
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
意义 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
IOS/IEC 7816-4定义[1] |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
明文PIN,格式如下 |
1 |
0 |
0 |
0 |
0 |
x |
x |
x |
本规范保留 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
密文PIN,格式在第二册定义 |
1 |
0 |
0 |
0 |
1 |
0 |
x |
x |
本规范保留 |
1 |
0 |
0 |
0 |
1 |
1 |
x |
x |
支付系统保留 |
1 |
0 |
0 |
1 |
x |
x |
x |
x |
发卡行保留 |
表I-25 验证命令参考数据定义(P2)
对于IC卡内的验证命令的处理在本册的第II部分中与CVM规则一起介绍。
明文脱机PIN 数据块按如下格式组织。
C |
N |
P |
P |
P |
P |
P/F |
P/F |
P/F |
P/F |
P/F |
P/F |
P/F |
P/F |
F |
F |
其中
|
名称 |
值 |
C |
控制域 |
值为0010的四位二进制数(hex. 2) |
N |
PIN长度 |
值在0100到1100之间的4位二进制数(hex. ‘4’到 ‘C’) |
P |
PIN数字 |
值在0000到1001之间的4位二进制数(hex. ‘0’到 ‘9’) |
P/F |
PIN/填充位 |
由PIN长度决定 |
F |
填充位 |
值为1111的四位二进制数(hex. ‘F’) |
P2=‘00’表示没有使用特别的限定符。IC卡中处理验证命令的应用应该知道怎样明白无误的找到PIN数据。
2.5.12.3 命令报文的数据域命令报文的数据域中包含标签‘99’的值域。
2.5.12.4 响应报文的数据域响应报文中没有数据域。
2.5.12.5 响应报文中的处理状态‘9000’编码表示命令成功执行。
如果对当前选择的应用, 通过验证命令对交易PIN数据和参考PIN数据进行的比较失败了,IC卡会返回SW2=‘Cx’, ‘x’代表还可以重新验证的次数;如果IC卡返回了‘C0’,意味着不能再验证了,CVM会被锁死。 随后,在这个应用中进行的所有验证命令都会失败,并返回SW1 SW2=‘6983’。
[1] 本规范未采用P2= ‘00’。