cla:指令類別;ins:指令碼;p1、p2:引數;lc:為data的長度;le:為希望響應時回答的資料位元組數,0表最大可能長度。
必選部分:cla, ins, p1, p2
可選部分:lc, 資料段: le
cla 確定 apdu 的類別,ins 確定要執行的指令,p1 和 p2 是引數。
指令格式
命令apdu
cla ins p1 p2 lc data le
響應apdu
data sw1 sw2
命令 apdu 的四種組成格式:
解釋:
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 位元組)。
通用apdu命令集:
指令名稱
clains
解釋read binary
00/04
b0讀出帶有透明結構的ef內容的一部分
write binary
d0將二進位制值寫入 ef
update binary
00/04
d6啟動使用在命令 apdu 中給出的位來更新早已呈現在ef中的位
erase binary
0e順序地從給出的偏移開始,將 ef 的內容的一部分置為其邏輯擦除的狀態
read record
00/04
b2給出了ef的規定記錄的內容或ef的乙個記錄開始部分的內容
write record
d2write record命令報文啟動下列操作之一:a. 寫一次記錄;b. 對早已呈現在卡內的記錄資料位元組與在命令 apdu 中給出的記錄資料位元組進行邏輯「或」運算;c. 對早已呈現在卡內的記錄資料位元組與在命令 apdu 中給出的記錄資料位元組進行邏輯「和」運算
00/04
e2update record
00/04
dc啟動使用命令 apdu 給出的位來更新特定記錄
get data
ca可在當前上下文(例如應用特定環境或當前 df )範圍內用於檢索乙個原始資料物件,或者包含在結構化資料物件中所包含的乙個或多個資料物件
put data
da可在當前上下文(例如應用特定環境或當前 df )範圍內用於儲存乙個原始資料物件,或者包含在結構化資料物件中的乙個或多個資料物件正確的儲存功能(寫一次和/或更新和/或新增)通過資料物件的定義和性質來引出
select file
00a4
設定當前檔案後續命令可以通過那個邏輯通道隱式地引用該當前檔案
verify
00/04
20啟動從介面裝置送入卡內的驗證資料與卡內儲存的引用資料(例如口令)進行比較
internal authenticate
0088
啟動卡使用從介面裝置傳送來的詢問資料和在卡內儲存的相關秘密(例如金鑰)來計算鑑別資料,當該相關秘密被連線到 mf 時,命令可以用來鑑別整個卡當該相關秘密被連線到另乙個 df 時命令可以用來鑑別那個 df。
external authenticate
0082
使用卡計算的結果(是或否)有條件地來更新安全狀態而該卡的計算是以該卡先前發出(例如通過 getchallenge 命令)的詢問在卡內儲存的可能的秘密金鑰以及介面裝置傳送的鑑別資料為基礎的
get challenge
0084
要求發出乙個詢問(例如隨機數)以便用於安全相關的規程(例external authenticate 命令)
manage channel
70開啟和關閉邏輯通道
get response
00c0
用於從卡傳送至介面裝置用可用的協議不能傳送的那一些的 apdu (或apdu的一部分)
envolope
80c2
用來傳送那些不能由有效協議來傳送的 apdu 或 apdu 的一部分或任何資料串
響應apdu:
常用sw1-sw2值:
sw1sw2
解釋9000
執行成功
6100
資料被截斷
6200
警告,資訊未提供
6281
警告,回送資料可能出錯
6282
警告,檔案長度小於le
6283
應用無效
6284
fci格式與p2指定的不符
6300
認證失敗
63cx
校驗失敗(x-允許重試次數)
6400
原因不明
6581
記憶體失敗
6700
長度不對
6900
不能處理
6901
命令不接受(無效狀態)
6981
命令與檔案結構不相容,當前檔案非所需檔案
6982
要pin驗證
6983
檔案無效,pin被鎖定
6984
資料無效,隨機數無效,引用的資料無效
6985
條件不滿足
6986
不允許該命令
6982
安全條件不滿足
6987
安全訊息丟失
6988
安全訊息不正確
6999
應用選擇失敗
6a80
資料錯誤
6a81
功能不支援
6a82
檔案找不到
6a83
記錄找不到
6a84
沒有足夠的空間
6a86
不正確的引數(p1,p2)
6a88
引用資料沒找到
6b00
錯誤的引數 (p1,p2)
6c00
長度錯誤 (le)
6d00
ins不支援
6e00
cla 不支援
6f00
未知錯誤
9301
資金不足
9302
mac無效
9303
應用被永久鎖定
9401
交易金額不足
9402
交易計數器達到最大值
9403
金鑰索引不支援
9406
所需mac不可用
sw1 與 sw2 狀態碼
正常處理
警告錯誤
執行錯誤
檢測錯誤
61xx或者9000
62xx或者63xx
64xx或者65xx
67xx直到6fxx
參考:
1.apdu常用指令
2.apdu命令格式
3.常用apdu指令錯誤碼
4.apdu命令集
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 出錯狀態標誌位沒...