2014-09-10 53 views
0

據我們所知,當我們在卡上選擇一個小應用程序時,該小應用程序保持選定的小應用程序,直到我們發送另一個SELECT命令。我們發送給卡的每個命令(SELECT命令除外)都直接轉到選定的小程序。爲不同的SELECT命令返回不同狀態字的小應用程序

我想知道,是否可以編寫一個在不同SELECT命令中具有不同響應的小程序?我的意思是,我可以寫一個AID=010203040506的小程序並選擇它。現在,當我發送00 A4 04 00 06 665544332211它返回APP1,當我發送00 A4 04 00 06 112233445566它返回APP2

更新: 對於某些十六進制數據,APP1和APP2只是兩個不同的ASCII碼!用另一個詞來說吧。我想返回HelloWorld00 A4 04 00 06 665544332211 APDU命令並返回ByeBye00 A4 04 00 06 112233445566。我的意思是,當我發送00 A4 04 00 LC AID時,我想阻止OPEN或...選擇另一個Applet。我想處理SELECT命令!

+0

發送小程序時應該返回什麼00 A4 04 00 06 665544332211?請解釋一下APP1和APP2的含義。 – Shuckey 2014-09-11 06:04:58

+0

這個問題似乎還不清楚。你是什​​麼意思通過返回APP1/2。一個Applet只能返回字節碼。 – 2014-09-11 20:18:03

+0

@Shuckey APP1和APP2只是一些十六進制數據的兩種不同的ASCII碼!用另一個詞來說吧。我想爲'00 A4 04 00 06 665544332211' APDU命令返回'HelloWorld',並返回'ByeBye'爲'00 A4 04 00 06 112233445566'。我的意思是,當我發送'00 A4 04 00 LC AID'時,我想阻止OPEN或...選擇另一個Applet。我想處理SELECT命令! – TheGoodUser 2014-09-12 05:02:06

回答

1

請參閱的第4.6.2章Java Card 3平臺運行時環境規範,版本3.0.4,2011年9月。該規範免費提供,開始搜索Main page for Java Card documentation,你會很容易找到它。

這一切都歸結到這一點:

如果安裝了該卡和小程序AID 010203040506的小程序AID 112233445566安裝和選擇(在任何邏輯通道),您00A4040006112233445566選擇文件APDU(或SELECT在任何其他邏輯通道上的FILE APDU)會導致JRE嘗試選擇小應用程序112233445566。無法阻止此選擇嘗試,並且不會將命令傳遞到010203040506小程序的處理方法。

+0

這意味着,來自離卡實體的APDU命令不會直接轉到選定的小程序?在去Applet之前,通過OPEN或別的東西進行檢查而不是SELECT命令? – TheGoodUser 2014-09-12 15:00:40

+1

@TheGoodUser每個APDU首先由JRE解析,如果它是SELECT並且安裝了小程序,則嘗試進行選擇。否則,它將按原樣轉發到當前選定的小程序。如果applet被成功選擇,那麼這個完全相同的SELECT APDU將按原樣轉發到新選擇的applet。 RTFM :-) – Shuckey 2014-09-15 08:54:31

+0

好的,謝謝。我會讀TFM:D – TheGoodUser 2014-09-15 09:45:01

相關問題