2014-03-31 117 views
5

我想了解發送APDU命令響應對的通信。 任何人都可以用簡單的方式解釋T = 0是如何工作的嗎?ISO 7816-3 T = 0如何工作?

APDU和TPDU之間有什麼區別?

例如,命令頭是CLA,INS,P1,P2和P3 = 0x20 32字節的數據。卡片如何知道命令的第5個字節是Lc還是Le? 卡片如何知道不會期望任何命令數據,以及它如何知道讀者是否期待響應中的數據?

另一件事,過程字節何時參與場景?它是程序字節嗎?或者,程序字節?卡是否必須發送過程字節?

+0

除非你試圖實現這個協議,這是[so]的主題。網上有很多資源可以幫助你。 Google是你的朋友。 –

+0

你應該一次提出一個問題。 – vikky

+0

儘管原則上第一條評論是正確的,但我確實發現需要使用此協議的知識才能針對智能卡進行開發。我真的不知道有任何其他地方可以問這個問題。沒有(也可能不會)與智能卡相關的SE站點。 –

回答

5

APDU是應用協議數據單元,TPDU是傳輸協議數據單元。如果已經爲T = 0 定義了APDU命令響應對,則它既具有命令數據又具有響應數據(情況4S),則將生成單獨的TPDU以發送和接收數據(GET RESPONSE)。參見ISO/IEC 7816-3(2006)第12.2.1章。

該卡知道P3(字節5)的含義,因爲它是服務器。每一個命令都應該以P3的唯一含義來實現。 ISO/IEC 7816在這方面不符合OSI協議棧 - 層不嚴格分離。這是ISO7816的主要問題之一。

過程字節是T = 0傳輸協議的一部分。它是在應用協議中定義的而不是,雖然它可能映射到狀態字的第一部分SW1。只發送給接口設備(IFD)要做什麼。有關更多信息,請參見ISO/IEC 7816-3(2006)的第10.3.3章。第10章定義了T = 0,T = 1不包含過程字節。

1

APDU是針對物理層的應用層TPDU。 如果您發送「00 84 00 00 08」到卡,卡可以用「xx xx xx xx xx xx xx xx 90 00」進行響應。 p3後面沒有數據,所以p3代表le。否則,p3代表lc。 但是,我認爲沒有必要區分le和lc。