[英]Call different applet in javacard
我在 java 卡中有 2 個小程序。 第一個小程序用作會員卡。 第二個小程序用於存儲交易。
我想使用第二個小程序將add balances/credit transaction
和purchase transactions
記錄到eeprom
。
file_name: month
-----------------------------------
datetime | transaction code | amount
-----------------------------------
month:
01 = january
02 = february
ect..
datetime (7 bytes):
dd MM yyyy HH mm ss
transaction code (1 byte):
01 = purchase
02 = add balance
amount (4 bytes):
FF FF FF FF
---------------------------------------
example:
---------------------------------------
1. transaction add balance 100 in 01-02-2022 03:04:05 (dd-MM-yyyy HH:mm:ss)
file_name: 01
------------------------------------------------
datetime | transaction code | amount
------------------------------------------------
01 02 07D2 030405 02 00000064
CLA = 80
INS = E0
P1 = 00
P2 = 00
LC = 0C
DATA = 01 02 07 D2 03 04 05 02 00 00 00 64
我想將 apdu 80 E0 00 00 0C 01 02 07 D2 03 04 05 02 00 00 00 64
從first applet
發送到second applet
程序。 怎么做? 謝謝。
伊赫迪娜。
由於 JC 平台具有旨在提高平台安全性的相當復雜的功能(即防火牆保護、上下文切換),因此您可以做自己想做的事情的能力有限。
注意:應將從另一個小程序調用 API 的能力指定為在小程序之間交換數據的能力。 前者可以通過使用Shareable
接口實現。 后者更復雜。
第一個選項: one CAP file with two applets
要交換數據,您可以將兩個小程序放入一個 CAP 文件中,從而避免繞過 JC 平台安裝的柵欄問題。 允許這樣做的功能稱為擴展 CAP 文件格式。 一個小程序實例可以自由訪問屬於另一個小程序實例的對象,該小程序實例位於同一 Java 卡 CAP 文件中的任何 package 中。 注意:這只能從JC 3.1
開始。
第二個選項: Array View
JC 3.1
中也提供了一個非常好的功能。 數組視圖是現有 arrays 的視圖,它顯示潛在的只讀數組切片。
第三個選項: GlobalArray
在舊平台上實現小程序間通信的唯一方法(比如我的,是3.0.4
版本)。 您可以使用JCSystem.makeGlobalArray
API 輕松創建一個數組並使其成為全局數組。這就是最初在 JC 平台上聲明 APDU object 的方式。
基本上,還有更多的特性需要考慮,包括 RE Privileges、RE Entry Point Objects 等。但是上面給出的應該足夠了。
附注:我曾經在我的 Twitter 帳戶上發布關於 JavaCard 平台的雜項信息,特別是關於Inter-Applet 通信的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.