繁体   English   中英

在javacard中调用不同的applet

[英]Call different applet in javacard

我在 java 卡中有 2 个小程序。 第一个小程序用作会员卡。 第二个小程序用于存储交易。

我想使用第二个小程序将add balances/credit transactionpurchase 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 64first 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM