天天看點

JavaCard——APDU的結構分析

APDU的全稱為Application Protocol Data Unit,應用協定資料單元,用于IC智能卡的通訊協定。

JavaCard——APDU的結構分析

指令APDU如上圖所示,包含頭和主體兩個部分。頭部包括CLA、INS、P1、P2。CLA和INS說明了應用的分類和指令,P1、P2作為指令的具體描述。APDU的主體長度是可變的,它可以作為指令的一部分從讀卡器傳送資料到卡片内,Lc說明了作為資料傳送到卡片上的資料的長度,Data Field是作為資料域。Le是期望卡片傳回的指令的長度。

APDU的可以有以下結構:

1. CLA-INS-P1-P2 沒有資料要發送至卡片,沒有資料從卡片上傳回。

2. CLA-INS-P1-P2-Le 沒有資料要發送至卡片,有資料從卡片上傳回。

3. CLA-INS-P1-P2-Lc-Data Field 有資料要發送至卡片,沒有資料從卡片上傳回。

4. CLA-INS-P1-P2-Lc-Data Field-Le 有資料要發送至卡片,有資料從卡片上傳回。

JavaCard——APDU的結構分析

響應APDU如上圖所示,包含主體和尾部兩個部分。主體為Data Field,主體可以為空,也可以包含資料域,資料域的長度由指令APDU的Le決定。尾部包括兩個部分SW1、SW2,此為傳回狀态嗎,一個位元組用來說明錯誤類型,另一個位元組 用來說明具體的指令狀态或錯誤辨別。