APDU指令小記

2021-09-07 04:27:47 字數 4492 閱讀 3442

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 出錯狀態標誌位沒...