2011-11-10 61 views
0

我正在嘗試使用JavaCard的applet - 這是非常簡單的SCWS serverlet(基本上來自金雅拓Dev Suite的模板)。我想要它在卡上存儲一些數據 - 如何做到這一點?我只找到一些有關線性文件和循環文件的理論材料。如何在javacard上存儲數據?

//編輯

我設法找到了這樣的事情:

private byte createfile() 
    { 
     try{ 
      AdminFileView uiccAdminFileView = AdminFileViewBuilder.getTheUICCAdminFileView(JCSystem.CLEAR_ON_RESET); 
      if(uiccAdminFileView == null){ 
       return 'a'; 
      } 
      uiccAdminFileView.select((short)0x7F60); 
      EditHandler editHandler = (EditHandler) HandlerBuilder.buildTLVHandler(HandlerBuilder.EDIT_HANDLER, 
        (short) 50); 
      editHandler.clear(); 
      editHandler.appendArray(CreateEF, (short) 0,(short) CreateEF.length); 
      uiccAdminFileView.createFile(editHandler); 
      data[0] = (byte) 0x12; 
      data[1] = (byte) 0x34; 
      data[2] = (byte) 0x56; 
      uiccAdminFileView.select((short)0xEE00); 
      uiccAdminFileView.updateBinary((short) 0, data, (short)0, (short)3); 
     } catch(UICCException e){ 

      return (byte)e.getReason(); 
     } 
     return 'b'; 
    } 

但在這一點上,返回「一」每一次 - 因爲據我所知,它是與訪問小程序的權利。

+0

試圖在這裏得到支持,而在這裏:http://developer.gemalto.com/nc/forums.html – dim

+0

1.您是否使用UICC卡或不? 2.您是否設置了正確的applet特定安裝參數? – David

+0

你還活躍於SO嗎?我可以有你的電子郵件地址嗎? – Abraham

回答

0

對於「真正的」智能卡,您可以通過標準的稱爲APDU命令來創建/編輯/刪除數據。爲此,必須在卡上安裝操作系統,以便處理APDU以創建/更新/讀取文件等。如果卡完全處於未處理狀態(即它內部沒有任何內容),則必須使用卡的API或閱讀規範並自己做所有事情(很可能你會處理程序集)。我不知道你的卡是什麼,所以我不能給出具體的指示,請閱讀你的手冊。

+0

目前我正在從Gemalto軟件包開發模擬器。它模擬3G移動網絡中的整個鏈路,USIM卡被標記爲「具有標準SCWS的NFC」,它通常在手機模擬器中工作,所以我認爲它不完全清楚。我會檢查我是否可以找到更多關於它的信息。 – DzikiMarian

0

一旦Java Card中存在基於ISO 7816-4文件的API,但很久以前就已經沉沒了。現在你只需要自己編程就可以了。您至少需要符合ISO 7816-4(2005)標準,才能使基於文件的卡遠程兼容。

當您必須通過安全的消息通道發送超過32K的偏移量的文件數據並同時關注文件選擇和訪問權限時,纔會開始真正的「樂趣」。對於任何人閱讀這個老問題的答案:祝你好運 - 並知道它可以完成。

+0

_真正的「樂趣」從你開始...._爲什麼?對不起,我不明白你的答案。請你再解釋一下嗎? – Abraham

+0

現在我們沒有JavaCards上的ISO 7816 API嗎? – Abraham

+1

ISO 7816包含很多東西,但如果你的意思是文件系統API,那麼不需要。這就是爲什麼這樣做是有趣的。 –