apdu
ifd(介面裝置)與ic卡之間的通訊:
a、首先,ifd傳送5個位元組的命令頭給ic卡,這5個位元組的內容告訴了ic卡要做什麼操作;
b、然後,ic卡回傳乙個過程位元組給ifd,告訴ifd,ic卡是否支援該操作;
c、如果返回的過程位元組告訴ifd——ic卡支援該操作,則接下來就進行資料的傳輸(如果有的話),資料從ifd輸入到ic卡或資料從ic卡輸出到ifd;
d、如果返回的過程位元組告訴ifd——ic卡不支援該操作,則ic卡回傳給ifd兩個狀態位元組sw1 sw2,ifd根據sw1 sw2兩位元組判斷ic卡不支援該操作的原因;
1、概述
每一條命令均由ifd發起,它通過5位元組的命令頭告訴卡裝置做什麼,在卡傳送的過程位元組的控制下,該命令繼續在某乙個方向上傳輸一串資料位元組, 為了區分用於輸入資料的命令(其中處理過程中,資料位元組進入卡)和用於輸出資料的命令(其中處理資料位元組時該資料離開卡),假設卡和介面裝置預先知道資料運送方向。
2、命令頭
命令頭由5個位元組組成,分別為cla,ins,p1,p2和p3。其中cla,ins,p1和p2這些引數的值由iso/iec7816-4部分定義。
cla: 表示指令類別(class)。其中值『ff』被保留用於pps。注意 iso/iec 7816-4 強制『ff』對於cla為無效值。
ins:表示指令**(instruction)。其中值『6x』和『9x』為無效值。注意 iso/iec 7816-4 強制『6x』和『9x』對於ins為無效值。
p1 p2 :表示命令引數。對於不同的指令(ins)p1 p2有不同的含義。
p3:表示資料位元組的長度。對命令期間待傳送的位元組d1~dn的數目n進行編碼。l 在輸出資料的傳送命令中,p3=0表示從卡傳輸256位元組。l 在輸入資料的傳送命令中,p3=0表示不從卡傳輸資料。
3、過程位元組
ifd傳送完5位元組的命令頭後,應該等待卡裝置傳入乙個過程位元組。有三種型別的過程位元組,見下表。
過程位元組不同的值表示不同含義:
——如果值為『60』,表示為乙個null位元組。它要求不進行資料位元組的傳送。ifd應該等待卡裝置傳入下乙個過程位元組。
——如果值為『6x(≠60)』或『9x』,表示為sw1位元組。字要求不進行資料位元組的傳送。ifd(介面裝置)應等待卡裝置傳入乙個sw2位元組。這裡對sw2的值無限制。
注意 iso/iec7816-4 強制『60』為無效的sw1值,以及其它任不同於『9x』和『6x』的值。
——如果值與ins相等,除『6x』和『9x』以外,它是乙個ack位元組。則表示運送所有剩餘位元組(如果存在)di~dn。然後ifd(介面裝置)應等待卡裝置傳入乙個過程位元組。
——如果值與ins⊕ff(異或)相等,除『6x』和『9x』以外,它是乙個ack位元組。則表示運送下乙個資料位元組(如果存在)di。然後ifd(介面裝置)應等待卡裝置傳入乙個過程位元組。
——如果為其它值,則屬無效。
當過程位元組為null和ack時,卡裝置能繼續處理命令;或者當過程位元組為sw1 sw2時,卡裝置結束命令的處理;或者不響應表示不贊成。
4、狀態位元組
狀態位元組sw1 sw2表示命令結束時卡裝置的狀態。它們的值由iso/iec 7816-4 指定。
注 iso/iec7816-4 強制6個狀態位元組值的定義。
『9000』 命令正常結束;
『6e00』 cla不支援;
『6d00』 cla支援,但ins不支援;
『6b00』 cla ins 均支援,但是p1 p2錯誤;
『6700』 cla ins p1 p2均支援,但是p3錯誤;
『6f00』 命令不支援,但是沒有找出精確的診斷;
根據定義,在傳入的sw2位元組的前沿12etu後,命令結束。
APDU常用指令
其中cla為指令類別 ins為指令碼 p1 p2為引數 lc為data的長度 le為希望響應時回答的資料位元組數,0表最大可能長度。00a4040000 傳送乙個空的選擇命令,獲取卡和主安全域的資訊。00a40400是select選擇對應的cla,ins,p1和p2,後面2位是傳送的檔名的長度。此命...
ic 卡獲取帳號apdu指令 APDU命令
cla ins p1 p2 lc data le 其中cla為指令類別 ins為指令碼 p1 p2為引數 lc為data的長度 le為希望響應時回答的資料位元組數,0表最大可能長度。一 命令分類 cos命令由具體應用分為4種命令報文結構如下 情形1 cla ins p1 p2 00 情形2 cla ...
常用APDU指令錯誤碼
狀態碼 性質錯誤解釋 9000 正常成功執行 6200 警告資訊未提供 6281 警告回送資料可能出錯 6282 警告檔案長度小於le 6283 警告選中的檔案無效 6284 警告fci格式與p2指定的不符 6300 警告鑑別失敗 63cx 警告校驗失敗 x 允許重試次數 6400 出錯狀態標誌位沒...