指令格式
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
Case4 | CLA INS P1 P2 Lc Data Le
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
注: Lc = 資料的長度 + MAC 的長度( 4 位元組)。
響應格式
格式1
| Data | SW1 SW2 |
格式2
| SW1 SW2 |
響應各字段含義