APDU格式详解

2014-11-26 15:37:21
admin
16692
最后编辑:admin 于 2014-12-11 15:27:27
简介:APDU apdu apdu格式 apdu指令 CLA INS LC CDATA

APDU定义了主机和JAVA卡之间交互的数据格式,绝大部分卡片遵循此数据格式,当然为了保密或其它原因是可以自定义新的数据格式。APDU分为发送命令(C-APDU)和返回命令(R-APDU)。


一、C-APDU元素说明:

发送命令(C-APDU)的格式如下,包含一个必须头部段和一个可选数据段:

1、CLA(1字节):用于命令类别的标示,传输安全控制,传输信道说明等。

比特值

0XXXXXXX
为ISO规定的指令类别,0x00,0x04(线路保护)等
1XXXXXXX
为私有自定义指令类别,0x80,0x84(线路保护)等

2、INS(1字节):用于指明CLA字段中标示的指令类中的一个特定指令。

ISO的INS值
命令描述
0E
Erase Binary 
20
Verify 
70
Manage Channel 
82
External Authenticate 
84
Get Challenge 
88
Internal Authenticate 
A4
Select File 
B0
Read Binary 
B2
Read Record(s) 
C0
Get Response 
C2
Envelope 
CA
Get Data 
D0
Write Binary 
D2
Write Record 
D6
Update Binary 
DA
Put Data 
DC
Update Record 
E2
Append Record                                                              

3、P1(1字节):指令参数1,如没有填0x00。
4、P2(1字节):指令参数2,如没有填0x00。
5、LC(1字节):这个可选的字段是命令的数据字段的字节数。
6、LE(1字节):这个可选的字段指定在期望响应的数据字段中的极限字节数。
7、四种C-APDU结构如下:


二、R-APDU元素说明:

返回命令(R-APDU)的格式如下,包含一个可选数据段和一个必须状态值:

数据字段(可变长度,由APDU命令中的LE确定):这个可选择的字段包含卡片返回的数据。
SW1(1字节):这个必要的字段是状态字1。
SW2(1字节):这个必要的字段是状态字2。
SW1-SW2成功一般为9000,其他值为某种状态、警告或者错误!


常用SW1-SW2值:
9000: 执行成功
6100: 数据被截断
6283: 应用无效
6300: 认证失败
6400: 原因不明
6700: 长度不对
6982: 需要PIN验证
6983: 文件无效
6984: 数据无效
6985: 条件不满足
6986: 不允许该命令
6982: 安全条件不满足
6987: 安全消息丢失
6988: 安全消息不正确
6999: 应用选择失败
6A80: 数据错误
6A81: 功能不支持
6A82: 文件找不到
6A83: 记录找不到
6A84: 没有足够的空间
6A86: 不正确的参数(P1,P2)
6A88: 引用数据没找到
6B00: 错误的参数 (P1,P2)
6C00: 长度错误 (Le)
6D00: INS不支持
6E00: CLA 不支持
6F00: 未知错误


    发表评论
    评论通过审核之后才会显示。