APDU命令整理.docx
《APDU命令整理.docx》由会员分享,可在线阅读,更多相关《APDU命令整理.docx(28页珍藏版)》请在冰豆网上搜索。
![APDU命令整理.docx](https://file1.bdocx.com/fileroot1/2022-11/16/3b573874-85a0-40ae-bd4d-7f9f4485b60f/3b573874-85a0-40ae-bd4d-7f9f4485b60f1.gif)
APDU命令整理
1.APDU命令集
1.1ISO智能卡通用APDU命令集(详细介绍:
ISO7816标准(中文版).pdf中75~100页)
编号
指令名称
CLA
INS
功能描述
1
READBINARY
00/04
B0
读出带有透明结构的EF内容的一部分
2
WRITEBINARY
D0
将二进制值写入EF
3
UPDATEBINARY
00/04
D6
启动使用在命令APDU中给出的位来更新早已呈现在EF
中的位
4
ERASEBINARY
0E
顺序地从给出的偏移开始将EF的内容的一部分置为其
逻辑擦除的状态
5
READRECORD
00/04
B2
给出了EF的规定记录的内容或EF的一个记录开始部分的
内容
6
WRITERECORD
D2
WRITERECORD命令报文启动下列操作之一:
——写一次记录;
——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“或”运算;
——对早已呈现在卡内的记录数据字节与在命令APDU中给出的记录数据字节进行逻辑“和”运算
7
APPENDRECORD
00/04
E2
启动在线性结构EF的结束端添加记录或者在循环结
构的EF内写记录号1
8
UPDATERECORD
00/04
DC
启动使用命令APDU给出的位来更新特定记录
9
GETDATA
CA
可在当前上下文(例如应用特定环境或当前DF)范围内用于检索一个原始数据对象或者包含在结构化数据对象中所包含的一个或多个数据对象
10
PUTDATA
DA
可在当前上下文(例如应用特定环境或当前DF)范围内用于存储一个原始数据对象或者包含在结构化数据对象中的一个或多个数据对象正确的
存储功能(写一次和/或更新和/或添加)通过数据对象的定义和性质来引出
11
SELECTFILE
00
A4
设置当前文件后续命令可以通过那个逻辑信道隐式地引用该当前文件
12
VERIFY
00/04
20
启动从接口设备送入卡内的验证数据与卡内存储的引用数据(例如口令)进行比较
13
INTERNALAUTHENTICATE
00
88
启动卡使用从接口设备发送来的询问数据和在卡内存储的相关秘密(例如密钥)来计算鉴别数据
当该相关秘密被连接到MF时命令可以用来鉴别整个卡
当该相关秘密被连接到另一个DF时命令可以用来鉴别那个DF
14
EXTERNALAUTHENTICATE
00
82
使用卡计算的结果(是或否)有条件地来更新安全状态而该卡的计算是以该卡先前发出(例如通过GETCHALLENGE命令)的询问在卡内存储的可能的秘密密钥以及接口设备发送的鉴别数据为基础的
15
GETCHALLENGE
00
84
要求发出一个询问(例如随机数)以便用于安全相关的
规程(例EXTERNALAUTHENTICATE命令)
16
MANAGECHANNEL
70
打开和关闭逻辑信道
17
GETRESPONSE
00
C0
用于从卡发送至接口设备用可用的协议不能传送的那一
些的APDU(或APDU的一部分)
18
ENVOLOPE
80
C2
用来发送那些不能由有效协议来发送的APDU或APDU的一部分或任何数据串
表6ISO智能卡APDU命令集
命令格式:
1.READBINARY的命令报文:
CLA
00/04
INS
B0
P1-P2
见表下面说明
Lc字段
空
数据字段
空
Le字段
待读的字节数
说明:
如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位)P1的b5至b1是短EF标识
符并且P2是在从文件开始的数据单元中被读的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被读的第1个字节的
偏移。
如果Le字段仅包含若干“0”则对于短的长度在不超过256的范围内或者对扩充长
度在不超过65536的范围内所有字节(直到文件结束为止)应被读出。
READBINARY的响应报文:
数据字段
读的字节(Le字节)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
2.WRITEBINARY命令报文:
CLA
00/04
INS
D0
P1-P2
见表下面说明
Lc字段
后续数据字段的长度
数据字段
待写的数据单元串
Le字段
空
说明:
如果在P1中b8=1,则P1的b7和b6显域0(RFU若干位)P1的b5至b1是短EF标识
符并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被写的第1个字节的
偏移。
WRITEBINARY的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
3.UPDATABINARY命令报文:
CLA
00/04
INS
D6
P1-P2
见表下面说明
Lc字段
后续数据字段的长度
数据字段
待写的数据单元串
Le字段
空
说明:
如果在P1中b8=1,则P1的b7和b6置为0(RFU若干位),P1的b5至b1是短EF标识
符,并且P2是在从文件开始的数据单元中被更新的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被更新的第1个字节
的偏移。
UPDATEBINARY的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
4.ERASEBINARY命令报文:
CLA
00/04
INS
0E
P1-P2
见表下面说明
Lc字段
空或02
数据字段
见下表说明
Le字段
空
说明:
如果在P1中b8=1,则P1的b7和b6显示0(RFU若干位),P1的b5至b1是短EF标识
符,并且P2是在从文件开始的数据单元中被写的第1个字节的偏移。
如果在P1中b8=0,则P1_P2是在从文件开始的数据单元中被写的第1个字节的
偏移。
如果数据字段呈现,它编码不被擦除的第1个数据单元的偏移,该偏移
应大于在P1—P2中编码的一个偏移,当数据字段为空时,该命令擦除到该文件的结
束端。
ERASEBINARY的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
5.READRECORD命令报文:
CLA
00/04
INS
B2
P1-P2
P1:
记录号或被读的第1个记录的标识符(‘00’表示当前记录);
P2:
引用控制
Lc字段
空
数据字段
空
Le字段
被读字节数
READRECORD的响应报文:
数据字段
Le字节
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
6.WRITERECORD命令报文:
CLA
00/04
INS
D2
P1-P2
P1=‘00’指明当前记录
P1:
所指定的记录号
Lc字段
后续数据字段的长度
数据字段
待写的记录
Le字段
空
WRITERECORD的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
7.APPENDRECORD命令报文:
CLA
00/04
INS
E2
P1-P2
只有P1‘00’是有效的
Lc字段
后续数据字段的长度
数据字段
待添加的记录
Le字段
空
APPENDRECORD的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
8.UPDATERECORD命令报文:
CLA
00/04
INS
DC
P1-P2
P1=‘00’指明当前记录
P1:
所指定的记录号
Lc字段
后续数据字段的长度
数据字段
待更新的记录
Le字段
空
UPDATERECORD的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
9.GETDATA命令报文:
CLA
00/04
INS
CA
P1-P2
见表1-9
Lc字段
空
数据字段
空
Le字段
在响应时期望的字节数
值
含义
‘0000’至‘003F
RFU(保留供将来使用)
‘0040’至‘00FF’
P2中的BER-TLV标签(1个字节)
‘0100’至‘01FF’
应用数据(专有编码)
‘0200’至‘02FF’
P2中的简单TLV标签
‘0300’至‘3FFF’
RFU(保留供将来使用)
‘0400’至‘FFFF’
P1-P2中的BER-TLV标签(2个字节)
表1-9参数P1-P2的编码
GETDATA的响应报文:
数据字段
Le字节
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
10.PUTDATA命令报文:
CLA
00/04
INS
DA
P1-P2
见表1-9
Lc字段
后续数据字段的长度
数据字段
待写的参数和数据
Le字段
空
PUTDATA的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
11.SELECTFILE命令报文:
CLA
00/04
INS
A4
P1-P2
P1:
选择控制;
P2:
选择选项
Lc字段
空或后续数据字段的长度
数据字段
如果存在下列内容则按照P1-P2
——文件标识符
——MF的路径
——当前DF的路径
——DF名称
Le字段
空或在响应时期望的数据最大长度
SELECTFILE的响应报文:
数据字段
信息按照P2(至多Le个字节)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
12.VERIFY命令报文:
CLA
00/04
INS
20
P1-P2
P1:
‘00’(其他值为RFU)
P2:
引用数据的限定符
Lc字段
空或后续数据字段的长度
数据字段
空或验证数据
Le字段
空
VERIFY的响应报文:
数据字段
空
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
13.INTERNALAUTHENTICATE命令报文:
CLA
00/04
INS
88
P1-P2
P1:
在卡内引用的算法
P2:
引用的秘钥
Lc字段
后续数据字段的长度
数据字段
鉴别相关的数据(例如询问)
Le字段
在响应中期望的字节最大数
INTERNALAUTHENTICATE的响应报文:
数据字段
鉴别相关的数据(例如对询问的响应)
SW1-SW2
状态字节:
用来说明指令执行是否出错,由于什么原因出错
14.EXTERNALAUTHENTICATE命令报文:
CLA
00/04
INS
82
P1-P2
P1:
在卡内引用的算法
P2:
引用的秘钥
Lc字段
空或后续数据字段的长度
数据字段
空或鉴别相