PBOC APDU命令解析【轉】


應用層發出的命令報文和卡片回送到應用層的響應報文統稱為應用協議數據單元(APDU)。響應是
和命令相對應的,通常被稱為APDU命令-響應對。在一個APDU命令-響應對中,命令報文或響應報文都可

能包含數據。

 

 

1:C-APDU 格式


  C-APDU由一個4字節長的必備頭后跟一個變長的條件體組成。
  C-APDU中發送的數據長度用Lc(命令數據域的長度)表示。
       R-APDU中期望返回的數據字節數用Le(期望數據長度)表示。
  當Le存在且值為0時,表示要求可能的最大字節數(≤256)。
  在應用選擇中所給出的讀記錄(READ RECORD)命令、選擇(SELECT)命令Le應該等於“00”。

 

圖1:APDU命令結構

 

 

2:C-APDU命令內容

  命令均由終端應用層(TAL)發出,它用5個字節組成的命令頭通過TTL向IC卡發送指令。命令頭由5個連續字節CLA、INS、P1、P2和P3組成:
CLA:命令類別;INS:指令代碼;P1 和 P2:附加參數;P3:根據不同的 INS, 指明發送給 IC 卡的命令中數據的字節長度或期待 IC 卡響應的最大數據長度。

 

圖2:APDU命令內容   

 

3:R-APDU格式


當使用T=1協議時,對於所有Le=’00’的命令,狀態字SW1 SW2=“90 00”或“61 La”均表示命令的成功執行。
但由於可讀性的需要,這兩種狀態字只用了“90 00”作為參考。


R-APDU格式由一個變長的條件體和后隨兩字節長的必備尾組成,見圖3。

 

圖3:APDU響應結構

 

R-APDU中接收到的數據字節數用Lr(響應數據域長度)表示。Lr不通過傳輸層返回,應用層在需要時可以依靠響應報文數據域對象結構計算出Lr。
響應結尾的2個字節代碼是命令的處理狀態,它們通過傳輸層回送。

 

表1:響應 APDU 內容

 

4:命令報文和響應報文

 

A:讀記錄命令

表2:讀記錄命令報文

 

表3:讀記錄命令引用控制參數(2)

 

 

B:選擇命令


選擇命令通過文件名或AID來選擇IC卡中的PSE或ADF。成功執行該命令設定PSE或ADF的路徑。
后續命令作用於SFI選定的PSE或ADF相聯系的AEF。從IC卡返回的響應報文包含回送FCI。

表4:SELECT 命令報文

 

表5:SELECT命令引用控制參數

 

表6:SELECT命令的可選參數

 

 

 響應報文數據域


 響應報文中數據域應包括所選擇的PSE或ADF的FCI。在選擇命令的響應報文回送的FCI模板中,除了“BF0C”模板中包含的數據元之外,不應有附加數據元。
 表7定義了成功選擇PSE后回送的FCI。

 

表7:選擇 PSE的響應報文(FCI)

 

 

表8:選擇 ADF 的響應報文(FCI)

 

 

當一個DF成功選中后,終端重復發出選擇(SELECT)命令,且P2設置為選擇下一個文件的選項及使用相同的部分DF名時,
卡片應該選中與部分DF名稱匹配的不同的DF文件(如果這樣的DF存在)。在沒有應用層命令干擾的情況下重復發出相同的選擇(SELECT)命令,
卡片應該可以找到所有滿足條件的DF文件,且每個文件不會被找到兩次。當所有滿足條件的DF都被選擇后,再發出同樣的選擇(SELECT)
命令,應該得到沒有文件被選擇的結果,卡片應該響應SW1SW2=“6A82”(文件未找到)。

 

參考文檔

PBOC3.0規范

 

起草時間

2015-10-22


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM