2,815
个编辑
更改
无编辑摘要
表5- 1命令执行成功后的状态变化
<table> <tr><td>
命令
</td>
<td>
空闲
</td>
<td>
安全
</td>
</tr>
<tr><td>
SELECT(选择当前应用)
</td>
<td>
空闲
</td>
<td>
安全
</td>
</tr>
<tr><td>
SELECT(选择其它应用)
</td>
<td>
空闲
</td>
<td>
空闲
</td>
</tr>
<tr><td>
EXTERNAL AUTHENTICATION
</td>
<td>
安全
</td>
<td>
安全
</td>
</tr>
<tr><td>
SELECT(选择文件或记录)
</td>
<td>
空闲
</td>
<td>
安全
</td>
</tr>
<tr><td>
READ BINARY(一般二进制文件)
</td>
<td>
空闲
</td>
<td>
安全
</td>
</tr>
<tr><td>
READ RECORD(一般记录文件)
</td>
<td>
空闲
</td>
<td>
安全
</td>
</tr>
<tr><td>
READ BINARY(限制二进制文件)
</td>
<td>
N/A
</td>
<td>
安全
</td>
</tr>
<tr><td>
READ RECORD(限制记录文件)
</td>
<td>
N/A
</td>
<td>
安全
</td>
</tr>
<tr><td>
ERASE RECORD
</td>
<td>
N/A
</td>
<td>
安全
</td>
</tr>
<tr><td>
WRITE RECORD
</td>
<td>
N/A
</td>
<td>
安全
</td>
</tr>
</table>
=== 5.1 命令APDU格式===
命令APDU的格式如表5-2所示
表5-3命令APDU的内容
响应APDU格式由一个变长的条件体和后随两字节长的必备尾组成,见表5-4:
表5-4 响应APDU的结构
<table> <tr><td>
Data
</td>
<td>
SW1
</td>
<td>
SW2
</td>
</tr>
<tr><td>
?——条件体——?
</td>
</tr>
</table>
响应APDU的内容见表5- 5:
表5- 5 响应APDU的内容
5.3.1 APPLICATION BLOCK命令
表5-12 EXTERNAL AUTHENTICATION命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘00’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘82’
</td>
</tr>
<tr><td>
P1
</td>
<td>
‘00’
</td>
</tr>
<tr><td>
P2
</td>
<td>
密钥标识符(见表5-12表5-13)
</td>
</tr>
<tr><td>
Lc
</td>
<td>
‘11’
</td>
</tr>
<tr><td>
Data
</td>
<td>
鉴别用数据
</td>
</tr>
<tr><td>
Le
</td>
<td>
不存在
</td>
</tr>
</table>
表5-13定义了命令报文中的密钥标识符:
表5-21 READ BINARY命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘00’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘B0’
</td>
</tr>
<tr><td>
P1
</td>
<td>
见表5-22
</td>
</tr>
<tr><td>
P2
</td>
<td>
见表5-22
</td>
</tr>
<tr><td>
Lc
</td>
<td>
不存在
</td>
</tr>
<tr><td>
Data
</td>
<td>
不存在
</td>
</tr>
<tr><td>
Le
</td>
<td>
‘00’或要读出的数据的长度
</td>
</tr>
</table>
表5-22定义了命令报文中的引用控制参数:
表5-25 READ RECORD命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘00’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘B2’
</td>
</tr>
<tr><td>
P1
</td>
<td>
记录号或记录标识符
</td>
</tr>
<tr><td>
P2
</td>
<td>
引用控制参数(见表5-26)
</td>
</tr>
<tr><td>
Lc
</td>
<td>
不存在
</td>
</tr>
<tr><td>
Data
</td>
<td>
不存在
</td>
</tr>
<tr><td>
Le
</td>
<td>
‘00’ 或记录长度
</td>
</tr>
</table>
记录号的取值范围为‘01’-‘FE’。
表5-29 SELECT命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘00’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘A4’
</td>
</tr>
<tr><td>
P1
</td>
<td>
引用控制参数(见表5-30)
</td>
</tr>
<tr><td>
P2
</td>
<td>
‘00’第一个或唯一一个文件实例
‘02’下一个文件实例
</td>
</tr>
<tr><td>
Lc
</td>
<td>
‘05’-‘10’(使用文件名或AID时)或‘02’(使用文件标识符时)或‘00’
</td>
</tr>
<tr><td>
Data
</td>
<td>
文件名、AID、文件标识符或不存在
</td>
</tr>
<tr><td>
Le
</td>
<td>
‘00’
</td>
</tr>
</table>
表5-30定义了命令报文中的引用控制参数:
表5-35 SELECT错误状态
<table> <tr><td>
SW1
</td>
<td>
SW2
</td>
<td>
含 义
</td>
</tr>
<tr><td>
‘67’
</td>
<td>
‘00’
</td>
<td>
P1 P2与Lc不一致
</td>
</tr>
<tr><td>
‘6A’
</td>
<td>
‘81’
</td>
<td>
不支持此功能
</td>
</tr>
<tr><td>
‘6A’
</td>
<td>
‘82’
</td>
<td>
未找到文件
</td>
</tr>
<tr><td>
‘6A’
</td>
<td>
‘86’
</td>
<td>
参数P1 P2不正确
</td>
</tr>
<tr><td>
‘93’
</td>
<td>
‘03’
</td>
<td>
应用永久锁定
</td>
</tr>
</table>
5.3.10 UPDATE BINARY命令
表5-39UPDATE RECORD命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘00’或‘04’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘[[DC]]’
</td>
</tr>
<tr><td>
P1
</td>
<td>
指定的记录号(‘01’~‘FE’)
</td>
</tr>
<tr><td>
P2
</td>
<td>
见表5-40
</td>
</tr>
<tr><td>
Lc
</td>
<td>
后续数据域的长度
</td>
</tr>
<tr><td>
Data
</td>
<td>
添加的或更新原有记录的新记录
</td>
</tr>
<tr><td>
Le
</td>
<td>
不存在
</td>
</tr>
</table>
表5-40定义了命令报文中的引用控制参数:
表5-41 UPDATE RECORD错误状态
5.4.1 ERASE RECORD命令
表5-42 ERASE RECORD命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘84’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘0C’
</td>
</tr>
<tr><td>
P1
</td>
<td>
指定的记录号
</td>
</tr>
<tr><td>
P2
</td>
<td>
见表5-43
</td>
</tr>
<tr><td>
Lc
</td>
<td>
‘04’
</td>
</tr>
<tr><td>
Data
</td>
<td>
报文鉴别代码(MAC)数据元;根据《居民健康卡技术规范》第9.4.2章中的规定进行编码。
</td>
</tr>
<tr><td>
Le
</td>
<td>
不存在
</td>
</tr>
</table>
表5-43定义了命令报文中的引用控制参数:
表5-45WRITE RECORD命令报文
<table> <tr><td>
代码
</td>
<td>
值
</td>
</tr>
<tr><td>
CLA
</td>
<td>
‘84’
</td>
</tr>
<tr><td>
INS
</td>
<td>
‘D2’
</td>
</tr>
<tr><td>
P1
</td>
<td>
指定的记录号
</td>
</tr>
<tr><td>
P2
</td>
<td>
见表5-46
</td>
</tr>
<tr><td>
Lc
</td>
<td>
‘04’
</td>
</tr>
<tr><td>
Data
</td>
<td>
报文鉴别代码(MAC)数据元;根据《居民健康卡技术规范》第9.4.2章中的规定进行编码。
</td>
</tr>
<tr><td>
Le
</td>
<td>
不存在
</td>
</tr>
</table>
表5-46定义了命令报文中的引用控制参数:
表5-47WRITE RECORD错误状态