非接触IC卡片APDU指令介绍(一)

2018-02-26 11:17:51 诺塔斯智能科技 1724

APDU指令介绍

1.  APDU指令格式

根据7816-4规范,从终端发出的命令和卡片响应的信息必须遵从以下4种格式。

情形1:

命令 :

CLA

INS

P1

P2

00

 

响应 :

SW1

SW2

 

情形2

命令:

CLA

INS

P1

P2

Le

 

响应:

Le字节的DATA

SW1

SW2

 

情形3

命令:

CLA

INS

P1

P2

Lc

DATA


响应 :

SW1

SW2

 

情形4

命令:

CLA

INS

P1

P2

Lc

DATA

Le

 

响应:

Le字节的DATA

SW1

SW2

 

1.1  APDU命令格式

命令由4字节的命令头和命令体组成,见图1

命令头(必备体

命令体(可选体)

CLA

INS

P1

P2

Lc

DATA

Le

1 APDU命令格式

1.1.1  命令头域

命令头定义报文的内容如下表所示:

1 命令头域

代码

长度(byte)

(Hex)

描述

CLA

1

X0

不带安全报文的命令

X4

带安全报文的命令

INS

1

XX

指令代码

P1

1

XX

参数1

P2

1

XX

参数2

1.1.2  命令体

命令体中各项是可选的。

Lc命令数据域中DATA的长度,该长度不可超过255字节。

Data   命令和响应中的数据域。

Le响应数据域中期望数据的长度。

Le=00,表示需要最大字节数, 该长度不可超过255字节。

1.2  APDU响应数据格式

APDU命令的应答由数据和状态字组成,见2

数据

状态字

响应中接收的数据位串

SW1

SW2

2 APDU响应数据格式

1.2.1  返回数据

返回数据域是可选项。

1.2.2  返回状态字(SW1SW2

SW1 SW2是卡片执行命令的返回代码,任何命令的返回信息都至少由一个状态字组成。

1.3  状态字SW1SW2意义

状态字说明了命令处理的情况,即命令是否被正确执行,如果未被正确执行,原因是什么。状态字由2部分组成:

SW1status word1):表示命令处理状态;

SW2status word2):表示命令处理限定。

2 状态字SW1-SW2

SW1

SW2

Description

90

00

正确执行

61

XX

正确执行

XX表示响应数据长度。可用Get Response命令取回响应数据。(仅用于T=0

62

81

回送的数据可能错误

62

83

选择文件无效,文件或密钥校验错误

63

CX

X表示还可再试次数

64

00

状态标志未改变

65

81

EEPROM不成功

67

00

错误的长度

69

00

CLA与线路保护要求不匹配

69

01

无效的状态

69

81

命令与文件结构不相容

69

82

不满足安全状态

69

83

密钥被锁死

69

85

使用条件不满足

69

87

无安全报文

69

88

安全报文数据项不正确

6A

80

数据域参数错误

6A

81

功能不支持或卡中无MF或卡片已锁定

6A

82

文件未找到

6A

83

记录未找到

6A

84

文件无足够空间

6A

86

参数P1 P2错误

6B

00

在达到Le/Lc字节之前文件结束,偏移量错误

6C

XX

Le错误

6E

00

无效的CLA

6F

00

数据无效

93

02

MAC错误

93

03

应用已被锁定

94

01

金额不足

94

03

密钥未找到

94

06

所需的MAC不可用

注意:

SW1的高半字节为‘9’,且低半字节不为‘0’时,其含义依赖于相关应用。

SW1的高半字节为‘6’,且低半字节不为‘0’时,其含义与应用无关。