5.3.3.3 命令报文数据域
命令报文数据域包括根据《
居民健康卡技术规范》第9.4.2章中的规定进行编码的报文鉴别代码(MAC)数据元。
5.3.3.4 响应报文数据域
响应报文数据域不存在。
5.3.3.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的错误状态码如表5-11所示:
表5-11 CARD BLOCK错误状态
SW1
| SW2
| 含 义
|
‘65’
| ‘81’
| 内存失败
|
‘67’
| ‘00’
| Lc长度错误
|
‘69’
| ‘82’
| 不满足安全状态
|
‘69’
| ‘84’
| 引用数据无效
|
‘69’
| ‘85’
| 使用条件不满足
|
‘69’
| ‘87’
| 安全报文数据项丢失
|
‘69’
| ‘88’
| 安全报文数据项不正确
|
‘6A’
| ‘86’
| 参数P1或/和P2错误
|
‘6A’
| ‘88’
| 未找到引用数据
|
5.3.4 EXTERNAL AUTHENTICATION命令
5.3.4.1 定义和范围
EXTERNAL AUTHENTICATION命令要求IC卡中的应用验证接口设备中保密模块的有效性,以使接口设备获得某种授权。
IC卡的响应包括命令处理状态的回送。
5.3.4.2 命令报文
EXTERNAL AUTHENTICATION命令报文编码见表5-12:
表5-12 EXTERNAL AUTHENTICATION命令报文
代码
| 值
|
CLA
| ‘00’
|
INS
| ‘82’
|
P1
| ‘00’
|
P2
| 密钥标识符(见表5-12表5-13)
|
Lc
| ‘11’
|
Data
| 鉴别用数据
|
Le
| 不存在
|
表5-13定义了命令报文中的密钥标识符:
表5-13密钥标识符的结构
b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
| 含 义
|
0
| 0
| 0
| 0
| 0
| 0
| 0
| 0
| 默认密钥
|
0
|
| 全局参考数据
|
1
| 专用参考数据
|
|
| x
| x
| x
| x
| 密钥号
|
EXTERNAL AUTHENTICATION命令使用的算法参考值(P1)编码为‘00’表示无信息。算法参考值在命令发出之前是已知的。
5.3.4.3 命令报文数据域
命令报文数据域中包含17个字节的数据:
--第1至第8个字节为鉴别数据;
--第9至第16个字节是鉴别所需的原始信息;
--第17个字节表示密钥版本。
其中,鉴别数据根据《
居民健康卡技术规范》第9.7.3章中的规定进行编码。
5.3.4.4 响应报文数据域
响应报文数据域不存在。
5.3.4.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的警告状态码如表5-14所示:
表5-14 EXTERNAL AUTHENTICATION警告状态
SW1
| SW2
| 含 义
|
‘63’
| ‘Cx’
| 鉴别失败,x表示允许继续尝试的次数(‘0’-‘F’)
|
IC卡可能回送的错误状态码如表5-15所示:
表5-15 EXTERNAL AUTHENTICATION错误状态
SW1
| SW2
| 含 义
|
‘67’
| ‘00’
| Lc不正确
|
‘69’
| ‘83’
| 鉴别方法锁定
|
‘69’
| ‘84’
| 引用数据无效
|
‘69’
| ‘85’
| 使用条件不满足
|
‘6A’
| ‘86’
| 参数P1 P2不正确
|
‘6A’
| ‘88’
| 密钥未找到
|
5.3.5 GET CHALLENGE命令
5.3.5.1 定义和范围
GET CHALLENGE命令请求一个用于安全相关过程(例如:安全报文、安全鉴别)的随机数。
随机数在使用后失效,不能被下一个命令再次使用。
5.3.5.2 命令报文
GET CHALLENGE命令报文编码见表5-16:
表5-16 GET CHALLENGE命令报文
代码
| 值
|
CLA
| ‘00’
|
INS
| ‘84’
|
P1
| ‘00’
|
P2
| ‘00’
|
Lc
| 不存在
|
Data
| 不存在
|
Le
| ‘08’
|
5.3.5.3 命令报文数据域
命令报文数据域不存在。
5.3.5.4 响应报文数据域
响应报文数据域包括随机数,长度为8字节。
5.3.5.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的错误状态码如表5-17所示:
表5-17GET CHALLENGE错误状态
SW1
| SW2
| 含 义
|
‘67’
| ‘00’
| Le长度错
|
‘6A’
| ‘81’
| 不支持此功能
|
‘6A’
| ‘86’
| 参数P1 P2不正确
|
5.3.6 INTERNAL AUTHENTICATION命令
5.3.6.1 定义和范围
INTERNAL AUTHENTICATION命令提供了利用接口设备发来的随机数和自身存储的相关密钥进行数据鉴别的功能。
5.3.6.2 命令报文
INTERNAL AUTHENTICATION命令报文编码见表5-18:
表5-18 INTERNAL AUTHENTICATION命令报文
代码
| 值
|
CLA
| ‘00’
|
INS
| ‘88’
|
P1
| ‘00’
|
P2
| ‘00’
|
Lc
| ‘11’
|
Data
| 鉴别用数据
|
Le
| ‘00’
|
INTERNAL AUTHENTICATION命令的参数P1和P2为‘00’表示无信息,它们的值是事先确定的。
5.3.6.3 命令报文数据域
命令报文数据域的内容是卡片或应用专用的鉴别数据,包含17个字节的数据:
――第1至第8个字节是过程密钥计算使用的数据,由终端产生;
――第9至第16个字节是鉴别所需的原始信息;
--第17个字节表示密钥版本。
5.3.6.4 响应报文数据域
响应报文数据域内容是相关的鉴别数据,其值根据《
居民健康卡技术规范》第9.7.3章中的规定进行计算。
5.3.6.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的警告状态码如表5-19所示:
表5-19 INTERNAL AUTHENTICATION警告状态
SW1
| SW2
| 含 义
|
‘62’
| ‘81’
| 回送的数据可能有错
|
IC卡可能回送的错误状态码如表5-20所示:
表5-20 INTERNAL AUTHENTICATION错误状态
SW1
| SW2
| 含 义
|
‘67’
| ‘00’
| Lc不正确
|
‘68’
| ‘82’
| 不支持安全报文
|
‘69’
| ‘85’
| 不满足使用条件
|
‘6A’
| ‘80’
| 数据域参数不正确
|
‘6A’
| ‘86’
| 参数P1 P2不正确
|
‘6A’
| ‘88’
| 密钥未找到
|
5.3.7 READ BINARY命令
5.3.7.1 定义和范围
READ BINARY命令用于读取透明文件的内容(或部分内容)。
5.3.7.2 命令报文
READ BINARY命令报文编码见表5-21
表5-21 READ BINARY命令报文
代码
| 值
|
CLA
| ‘00’
|
INS
| ‘B0’
|
P1
| 见表5-22
|
P2
| 见表5-22
|
Lc
| 不存在
|
Data
| 不存在
|
Le
| ‘00’或要读出的数据的长度
|
表5-22定义了命令报文中的引用控制参数:
表5-22 READ BINARY命令引用控制参数
P1
| P2
| 含 义
|
b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
| b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
|
0
| X
| X
| X
| X
| X
| X
| X
| Y
| Y
| Y
| Y
| Y
| Y
| Y
| Y
| P1´‘0x100’+P2为要读的首字节距离文件首字节的偏移量。
|
5.3.7.3 命令报文数据域
命令报文数据域不存在。
5.3.7.4 响应报文数据域
当Le的值为零时,读出自要读的首字节起的256个字节;如果在读出256个字节前已到达文件最后一个字节,则自要读的首字节起的全部字节将被读出。
5.3.7.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的警告状态码如表5-23所示:
表5-23 READ BINARY警告状态
SW1
| SW2
| 含 义
|
‘62’
| ‘81’
| 部分回送的数据可能有错
|
IC卡可能回送的错误状态码如表5-24所示:
表5-24 READ BINARY错误状态
SW1
| SW2
| 含 义
|
‘69’
| ‘81’
| 命令与文件结构不相容
|
‘69’
| ‘82’
| 不满足安全状态
|
‘69’
| ‘86’
| 不满足命令执行的条件(非当前EF)
|
‘6A’
| ‘81’
| 不支持此功能
|
‘6A’
| ‘82’
| 未找到文件
|
‘6B’
| ‘00’
| 参数错误(偏移地址超出了EF)
|
‘6C’
| ‘xx’
| 长度错误(Le错误;‘xx’为实际长度)
|
5.3.8 READ RECORD命令
5.3.8.1 定义和范围
READ RECORD命令读取记录结构的基本文件中指定的记录。
IC卡的响应由回送记录组成。
5.3.8.2 命令报文
READ RECORD命令报文编码见表5-25:
表5-25 READ RECORD命令报文
代码
| 值
|
CLA
| ‘00’
|
INS
| ‘B2’
|
P1
| 记录号或记录标识符
|
P2
| 引用控制参数(见表5-26)
|
Lc
| 不存在
|
Data
| 不存在
|
Le
| ‘00’ 或记录长度
|
记录号的取值范围为‘01’-‘FE’。
表5-26定义了命令报文中的引用控制参数:
表5-26READ RECORD命令引用控制参数
b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
| 含 义
|
0
| 0
| 0
| 0
| 0
|
| 对当前文件进行操作
|
| 1
| 0
| 0
| 读P1指定的记录
|
0
| 0
| 0
| 读具有P1指定的记录标识符的第一个实例
|
5.3.8.3 命令报文数据域
命令报文数据域不存在。
5.3.8.4 响应报文数据域
所有执行成功的READ RECORD命令的响应报文数据域由读取的记录组成。
5.3.8.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的警告状态码如表5-27所示:
表5-27 READ RECORD警告状态
SW1
| SW2
| 含 义
|
‘62’
| ‘81’
| 回送的数据可能有错
|
IC卡可能回送的错误状态码如表5-28所示:
表5-28 READ RECORD错误状态
SW1
| SW2
| 含 义
|
‘67’
| ‘00’
| 长度错误
|
‘69’
| ‘81’
| 命令与文件结构不相容
|
‘69’
| ‘82’
| 不满足安全状态
|
‘69’
| ‘85’
| 使用条件不满足
|
‘69’
| ‘86’
| 命令不允许使用(无当前基本文件)
|
‘6A’
| ‘81’
| 不支持此功能
|
‘6A’
| ‘82’
| 未找到文件
|
‘6A’
| ‘83’
| 未找到记录
|
‘6A’
| ‘86’
| 参数P1或P2错误
|
5.3.9 SELECT命令
5.3.9.1 定义和范围
SELECT命令通过文件名或AID、文件标识符来选择IC卡中的居民健康卡应用环境、DDF或ADF,通过文件标识符来选择ADF中的AEF。
命令执行成功后,居民健康卡应用环境、DDF或ADF、AEF的路径被设定。
除选择AEF外,从IC卡的响应报文应由回送FCI组成。
5.3.9.2 命令报文
SELECT命令报文编码见表5-29:
表5-29 SELECT命令报文
代码
| 值
|
CLA
| ‘00’
|
INS
| ‘A4’
|
P1
| 引用控制参数(见表5-30)
|
P2
| ‘00’第一个或唯一一个文件实例
‘02’下一个文件实例
|
Lc
| ‘05’-‘10’(使用文件名或AID时)或‘02’(使用文件标识符时)或‘00’
|
Data
| 文件名、AID、文件标识符或不存在
|
Le
| ‘00’
|
表5-30定义了命令报文中的引用控制参数:
表5-30 SELECT命令引用控制参数
b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
| 含 义
|
0
| 0
| 0
| 0
| 0
| 0
| 0
| 0
| 用文件标识符选择MF、DF、EF(数据域=文件标识符或空)
|
0
| 0
| 0
| 0
| 0
| 0
| 1
| 0
| 用文件标识符在当前DF下选择EF(数据域=EF的文件标识符)
|
0
| 0
| 0
| 0
| 0
| 1
| 0
| 0
| 通过文件名选择DF(数据域=DF的文件名)
|
如果P1=‘00’并且数据域为空或等于‘3F00’,该命令将选择主控文件(MF)。
5.3.9.3 命令报文数据域
命令报文数据域应包括内容见表5-30。
5.3.9.4 响应报文数据域
除选择AEF外,响应报文中数据域应包括所选择的居民健康卡应用环境、DDF或ADF的FCI。表5-31到表5-33规定了此定义所用的标志。《
居民健康卡技术规范》不规定FCI中回送的附加标志。
表5-31定义了成功选择居民健康卡应用环境后回送的FCI:
表5-31 SELECT居民健康卡应用环境的响应报文(FCI)
标志
| 值
| 存在方式
|
‘6F’
| FCI模板
| M
|
| ‘84’
| DF名
| M
|
| ‘A5’
| FCI专用模板
| M
|
| | ‘88’
| 目录基本文件的SFI
| O
|
表5-32定义了成功选择DDF后回送的FCI:
表5-32 SELECT DDF的响应报文(FCI)
标志
| 值
| 存在方式
|
‘6F’
| FCI模板
| M
|
| ‘84’
| DF名
| M
|
| ‘A5’
| FCI专用模板
| M
|
| | ‘88’
| 目录基本文件的SFI
| O
|
表5-33定义了成功选择ADF后回送的FCI:
表5-33SELECT ADF的响应报文(FCI)
标志
| 值
| 存在方式
|
‘6F’
| FCI模板
| M
|
| ‘84’
| DF名
| M
|
5.3.9.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的警告状态码如表5-34所示:
表5-34 SELECT警告状态
SW1
| SW2
| 含 义
|
‘62’
| ‘81’
| 返回的数据中的部分可能已被破坏
|
‘62’
| ‘83’
| 选择的文件无效
|
‘62’
| ‘84’
| FCI格式与P2指定的不符
|
IC卡可能回送的错误状态码如表5-35所示:
表5-35 SELECT错误状态
SW1
| SW2
| 含 义
|
‘67’
| ‘00’
| P1 P2与Lc不一致
|
‘6A’
| ‘81’
| 不支持此功能
|
‘6A’
| ‘82’
| 未找到文件
|
‘6A’
| ‘86’
| 参数P1 P2不正确
|
‘93’
| ‘03’
| 应用永久锁定
|
5.3.10 UPDATE BINARY命令
5.3.10.1 定义和范围
UPDATE BINARY命令报文使用命令APDU中给定的数据写入或修改透明结构的基本文件的全部或部分数据。当使用校验方式更新二进制文件时,如果尝试次数超过限制时,临时锁定当前应用。
5.3.10.2 命令报文
UPDATE BINARY命令报文编码见表5-36:
表5-36 UPDATE BINARY命令报文
代码
| 值
|
CLA
| ‘00’或‘04’
|
INS
| ‘D6’
|
P1
| 见表5-37
|
P2
| 见表5-37
|
Lc
| 后续数据域的长度
|
Data
| 写入或修改用的数据
|
Le
| 不存在
|
表5-37定义了命令报文中的引用控制参数:
表5-37 UPDATE BINARY命令引用控制参数
P1
| P2
| 含 义
|
b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
| b8
| b7
| b6
| b5
| b4
| b3
| b2
| b1
|
0
| X
| X
| X
| X
| X
| X
| X
| Y
| Y
| Y
| Y
| Y
| Y
| Y
| Y
| P1´‘0x100’+P2为要读的首字节距离文件首字节的偏移量。
|
5.3.10.3 命令报文数据域
命令报文数据域包括用来写入或更新原有数据的新数据。
5.3.10.4 响应报文数据域
响应报文数据域不存在。
5.3.10.5 响应报文状态码
此命令执行成功的状态码是‘9000’。
IC卡可能回送的错误状态码如表5-38所示:
表5-38 UPDATE BINARY错误状态
SW1
| SW2
| 含 义
|
‘65’
| ‘81’
| 内存失败(修改失败)
|
‘67’
| ‘00’
| 长度错误(Lc域为空)
|
‘69’
| ‘81’
| 命令与文件结构不相容
|
‘69’
| ‘82’
| 不满足安全状态
|
‘69’
| ‘85’
| 使用条件不满足
|
‘69’
| ‘86’
| 不满足命令执行的条件(不是当前的EF)
|
‘69’
| ‘88’
| 安全报文数据项不正确
|
‘6A’
| ‘80’
| 基本文件标识符错误
|
‘6A’
| ‘81’
| 不支持此功能
|
‘6A’
| ‘82’
| 未找到文件
|
‘6B’
| ‘00’
| 参数错误(偏移地址超出了EF)
|
5.3.11 UPDATE RECORD命令
5.3.11.1 定义和范围
UPDATE RECORD命令报文用命令APDU中给定的数据添加记录或更改指定的记录。当使用校验方式更新记录时,如果尝试次数超过限制时,临时锁定当前应用。
UPDATE RECORD命令不能对健康应用的住院信息索引文件记录和门诊信息索引文件记录进行更新操作。
对线性结构文件来说,只能使用指定记录号(P1中指定)方式更新记录。