轉自:http://blog.csdn.net/zuokong/article/details/49335257
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
和命令相對應的,通常被稱為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