APDU= ApplicationProtocol data unit, 是智能卡与智能卡读卡器之间传送的信息单元, (给智能卡发送的命令)指令(ISO 7816-4规范有定义) CLA INS P1 P2 Lc Data Le
其中CLA为指令类别;INS为指令码;P1、P2为参数;Lc为Data的长度;Le为希望响应时回答的数据字节数,0表最大可能长度。
00A4040000:发送一个空的选择命令,获取卡和主安全域的信息。00A40400是select选择对应的CLA,INS,P1和P2,后面2位是发送的文件名的长度。此命令使用文件名或应用标示符来选择IC卡内DF(专用文件)或EF(基本文件)。
80此命令创建卡片文件系统,80CA9F7F00:获取CPLC信息。8050XXXXX: 双向认证并建立会话密钥。
非接触CPU卡应该支持以下与应用无关的常用指令命令:
编号 | 指令 | 指令类别 | 指令码 | 功能描述 |
| APPLICATION UNBLOCK | 84 | 18 | 应用解锁 |
| APPLICATION BLOCK | 84 | 1E | 应用锁定 |
| CARD BLOCK | 84 | 16 | 卡片锁定 |
| EXTERNAL AUTHENTICATE | 00 | 82 | 外部认证 |
| GET CHALLENGE | 00 | 84 | 取随机数 |
| INTERNAL AUTHENTICATE | 00 | 88 | 内部认证 |
| PIN UNBLOCK | 84 | 24 | 个人密码解锁 |
| READ BINARY | 00 | B0 | 读二进制文件内容 |
| READ RECORD | 00 | B2 | 读记录文件指定内容 |
| SELECT | 00 | A4 | 选择文件 |
| UPDATE BINARY | 00/04 | D6 | 写二进制文件 |
| UPDATE RECORD | 00/04 | DC | 写记录文件 |
| VERIFY | 00 | 20 | 验证口令 |
编号 | 指令 | 指令类别 | 指令码 | 功能描述 |
| CHANGE/PIN RELOAD | 80 | 5E | 重装/修改个人密码 |
| CREDIT FOR LOAD | 80 | 52 | 圈存 |
| DEBIT FOR PURCHASE/ | 80 | 54 | 消费/取现/圈提 |
| GET BALANCE | 80 | 5C | 读余额 |
| GET TRANSCATION PROVE | 80 | 5A | 取交易认证 |
| INITIALIZE FOR XXX | 80 | 50 | 初始化XXX交易 |
| UNBLOCK | 80 | 2C | 解锁被锁住的口令 |
| UPDATE OVERDRAW LIMIT | 80 | 58 | 修改透支限额 |
应用层发出的命令报文和卡片回送到应用层的响应报文统称为应用协议数据单元(APDU)。响应是和命令相对应的,通常被称为APDU命令-响应对。在一个APDU命令-响应对中,命令报文或响应报文都可能包含数据。
1:C-APDU 格式
C-APDU由一个4字节长的必备头后跟一个变长的条件体组成。
C-APDU中发送的数据长度用Lc(命令数据域的长度)表示。
R-APDU中期望返回的数据字节数用Le(期望数据长度)表示。
当Le存在且值为0时,表示要求可能的最大字节数(≤256)。
在应用选择中所给出的读记录(READ RECORD)命令、选择(SELECT)命令Le应该等于“00”。
图1:APDU命令结构
2:C-APDU命令内容
命令均由终端应用层(TAL)发出,它用5个字节组成的命令头通过TTL向IC卡发送指令。命令头由5个连续字节CLA、INS、P1、P2和P3组成:
CLA:命令类别;INS:指令代码;P1 和 P2:附加参数;P3:根据不同的 INS, 指明发送给 IC 卡的命令中数据的字节长度或期待 IC 卡响应的最大数据长度。
图2:APDU命令内容
3:R-APDU格式
当使用T=1协议时,对于所有Le=’00’的命令,状态字SW1 SW2=“90 00”或“61 La”均表示命令的成功执行。
但由于可读性的需要,这两种状态字只用了“90 00”作为参考。
R-APDU格式由一个变长的条件体和后随两字节长的必备尾组成,见图3。
图3:APDU响应结构
R-APDU中接收到的数据字节数用Lr(响应数据域长度)表示。Lr不通过传输层返回,应用层在需要时可以依靠响应报文数据域对象结构计算出Lr。
响应结尾的2个字节代码是命令的处理状态,它们通过传输层回送。
表1:响应 APDU 内容
4:命令报文和响应报文
A:读记录命令
表2:读记录命令报文
表3:读记录命令引用控制参数(2)
B:选择命令
选择命令通过文件名或AID来选择IC卡中的PSE或ADF。成功执行该命令设定PSE或ADF的路径。
后续命令作用于SFI选定的PSE或ADF相联系的AEF。从IC卡返回的响应报文包含回送FCI。
表4:SELECT 命令报文
表5:SELECT命令引用控制参数
表6:SELECT命令的可选参数
响应报文数据域
响应报文中数据域应包括所选择的PSE或ADF的FCI。在选择命令的响应报文回送的FCI模板中,除了“BF0C”模板中包含的数据元之外,不应有附加数据元。
表7定义了成功选择PSE后回送的FCI。
表7:选择 PSE的响应报文(FCI)
表8:选择 ADF 的响应报文(FCI)
当一个DF成功选中后,终端重复发出选择(SELECT)命令,且P2设置为选择下一个文件的选项及使用相同的部分DF名时,
卡片应该选中与部分DF名称匹配的不同的DF文件(如果这样的DF存在)。在没有应用层命令干扰的情况下重复发出相同的选择(SELECT)命令,
卡片应该可以找到所有满足条件的DF文件,且每个文件不会被找到两次。当所有满足条件的DF都被选择后,再发出同样的选择(SELECT)
命令,应该得到没有文件被选择的结果,卡片应该响应SW1SW2=“6A82”(文件未找到)。