天天看點

APDU指令與響應格式

指令格式

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 |

響應各字段含義