APDU命令與響應格式【轉】
本文轉載自:http://map.im/apduintroduce
命令格式
APDU命令由命令頭和命令體組成: CLA | INS | P1 | P2 | Lc | DATA | Le
命令頭: CLA | INS | P1 | P2
命令體: Lc | DATA | Le
命令各字段含義
CLA:命令報文的類別字節
P1: 參數 1
P2:參數 2
Lc:Data的長度(含4字節mac)
Data:在命令的數據字段中發送的字節串
Le:在向命令響應的數據字段中期望的字節最大數
命令可分為四種情況:
Case1 | CLA INS P1 P2
Case2 | CLA INS P1 P2 Le
Case3 | CLA INS P1 P2 Lc Data
Case1
這種情況時,命令中沒有數據送到卡( Lc)中,也沒有數據從卡中返回( Le)。
不含安全報文的命令: CLA | INS | P1 | P2
含安全報文的命令: CLA | INS | P1 | P2 | Lc | MAC
註: Lc = MAC 的長度, 4 字節。
Case2
這種情況時,命令中沒有數據送到卡( Lc)中,有數據從卡中返回( Le)。
不含安全報文的命令: CLA | INS | P1 | P2 | Le
含安全報文的命令: CLA | INS | P1 | P2 | Lc | MAC | Le
註: Lc = MAC 的長度, 4 字節。
Case3
這種情況時,命令中有數據送到卡( Lc)中,沒有數據從卡中返回( Le)。
不含安全報文的命令: CLA | INS | P1 | P2 | Lc | Data
含安全報文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC
註: Lc = 數據的長度 + MAC 的長度( 4 字節)。
Case4
這種情況時,命令中既有數據送到卡( Lc)中,也有數據從卡中返回( Le)。
不含安全報文的命令: CLA | INS | P1 | P2 | Lc | Data | Le
含安全報文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC | Le
響應格式
格式1
| Data | SW1 SW2 |
格式2
| SW1 SW2 |
響應各字段含義
Data:在響應的數據字段中收到的字節串
SW1:狀態字 1
SW2:狀態字 2
APDU命令與響應格式【轉】