APDU命令

APDU= Application Protocol data unit, 是智能卡与智能卡读卡器之间传送的信息单元

CLA    INS  P1  P2  Lc  Data  Le

其中CLA为指令类别;INS为指令码;P1、P2为参数;Lc为Data的长度;Le为希望响应时回答的数据字节数,0表最大可能长度。
一 命令分类:
COS命令由具体应用分为4种命令报文结构如下:
① 情形1

CLA INS P1 P2  00

② 情形2

CLA INS P1 P2 Le

③ 情形3

CLA INS P1 P2 Lc Data

④ 情形4

CLA INS P1 P2 Lc Data Le


二 响应报文
1) 响应结构
响应数据  响应状态码
Data      SW1 SW1

DATA: 返回给用户的数据,即命令的执行结果。
SW1、SW2: 返回命令处理的状态。
三 命令集
1) Read Binary功能:此命令用于读取二进制文件部分或全部的内容。

CLA  00

INS  B0

P1 见参数说明
P2 从文件中读取的第一字节的偏移地址
Le 期望读出数据的长度


2) Update Binary功能:此命令使用给定的数据来更新二进制文件部分或全部的内容。

CLA  00

INS  D6

P1 见参数说明
P2 要修改的第一字节的偏移地址
Lc 后续数据域的长度
Data 修改用的数据


3) Read Record功能:此命令用于读取记录文件中指定记录的内容。

CLA  00

INS  B2

P1 记录号
P2 见参数说明
Le 期望读出数据的长度


4) Update record 功能:此命令使用给定的数据来更新记录文件中指定记录的内容。当所指定的文件非记录文件时,命令将终止。

CLA  00

INS  DC

P1 P1= 00 表示当前记录
P1≠ 00 表示指定的记录号
P2 见参数说明
Lc 后续数据域的长度
Data 更新原有记录的新记录


5) Verify PIN功能:此命令将校验给定的密码的正确性,根据比较的结果修改安全状态,若校验失败次数达到PIN尝试上限,则PIN自动锁定。

CLA  00

INS  20

P1  00

P2

Lc  02 ~ 10

Data 外部输入的个人密码


6) Select File功能:此命令使用文件名或应用标示符来选择IC卡内DF或EF。

CLA  00

INS  A4

P1  00

P2  00

Lc  00 (选择MF文件)/  02

Data 无 / FID


7) Get Challenge功能:此命令请求IC卡返回一个用于安全相关过程的随机数。

CLA  00

INS  84

P1  00

P2  00

Le  04


8) Get Response功能:此命令为T=0协议情形4状态下,用来取卡中返回的数据。

格式:
CLA  00

INS  C0

P1  00

P2  00

Le 响应的期望数据最大长度


9) Internal Authenticate功能:此命令将为外部设备验证卡中的秘密模块的有效性提供数据。

CLA  00

INS  88

P1  00

P2  00 ~ 07 密钥号
Lc  04

Data 外部随机数(4字节)


10) External Authenticate功能:此命令将验证外部设备中的秘密模块的有效性。

CLA  00

INS  82

P1  00

P2  00  ~ 07 密钥号
Lc  0C

Data 发卡方认证数据


11) Change / Unlock PIN功能:修改、解锁、安装卡片个人密码。

CLA  00

INS  5E

P1  00  修改卡片个人密码
 01  解锁卡片个人密码
 02  安(重)装卡片个人密码
P2 密码号
Lc

Data


12) Unlock Key功能:解锁卡片应用密钥。

CLA  00

INS  5C

P1  01  解锁应用密钥
 02  安装卡片应用密钥
P2 密钥号
Lc 无 / 密钥长度
Data 无 / 加密的密钥


13) Create File

功能:此命令创建卡片文件系统。
CLA  00 /  80

INS  F2

P1  00 / FTP 文件类型
P2  00 / FAC 文件访问控制条件
Lc 无 /  07

Data

示例:
1 应用选择
(1)选择MF(主文件)

CLA   INS   P1   P2   Lc   Data

00    A4    00   00 

P1=00选择主文件                   


(2)根据应用标识符选择应用
CLA   INS   P1   P2   Lc   Data

00    A4    04   0C   07   A0 00 00 02 47 10 01

P1=04 选择DF(专用文件),此时数据域为DF的文件名(AID应用标识符)
DF包括EF(基本文件)和其他DF

DF1:EF.COM、EF.DG1........................EF.DG16、EF.Sod


2 使用SELECT命令选择基本文件
例:选择机读取区
CLA   INS   P1   P2   Lc   Data

00    A4    02   0C   02   01 01

3读二进制
CLA   INS   P1   P2   Lc   Data

00    B0    05   00   00                   //读取文件前256Byte

如果P1的最高位b8为1时,b6和b7位必须为0,b5-b1位表示待读取的基本文件的SFI;这时P2表示要读取数据起始位置在文件中的偏移量。
    如果P1的最高位为0时,P1的后7位和P2相连共同组成了一个超过256的整数,表示待读取数据块的起始位置在文件中的偏移量,可以用于超过256Byte文件的读取。

猜你喜欢

转载自blog.csdn.net/fayeyiwang/article/details/53378979