Java卡小程序大小

时间:2013-11-20 08:27:27

标签: applet size javacard

JC applet安装使用了多少eeprom? 它是CAP文件的大小,或者我如何找到?  也许我可以使用JCsystem方法获取可用内存,但是在oracle的JC开发工具中是否有某些直接方法,如某些命令? (我没有JCOP)

2 个答案:

答案 0 :(得分:3)

尚未找到直接获取applet大小的方法。以下是我用来获取applet大小的两种方法


标准Javacard

在开发环境中,创建一个使用JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_PERSISTENT)的applet,并在安装(加载)之前和之后发送APDU来调用它以获取类的EEP,并在安装(安装)之前和之后再次调用以获取EEP对于applet实例。

限制是此方法仅支持short,这意味着最大可用内存为0x7FFF(32767)个字节。如果applet大于32767字节,则不能使用此方法,并且需要使用虚拟applet减少可用内存,以便安装(加载)之前的可用内存小于32767字节。


Javacard支持GP 2.2 + ETSI

如果您的卡支持Global Platform 2.2和ETSI,您可以使用GET DATA命令。

GP卡规范2.2第11.3节规定

Tag ‘FF21’: Extended Card Resources Information available for Card Content Management, as defined in ETSI TS 102 226.

在ETSI 102.226第8.2.1.7.2节中:

成功执行命令后,GET DATA响应数据字段应按GlobalPlatform [4]中的定义进行编码。在命令消息的参考控制参数P1和P2中引用的TLV编码数据对象的值是:

Length Description                            Value
  1    Number of installed application tag    '81'
  1    Number of installed application length  X
  X    Number of installed application
  1    Free non volatile memory tag           '82'
  1    Free non volatile memory length         Y
  Y    Free non volatile memory
  1    Free volatile memory tag               '83'
  1    Free volatile memory length             Z
  Z    Free volatile memory

使用与上面标准Javacard相同的步骤,但不是选择applet获取空闲内存并发送命令,而是直接发送GET DATA命令。这意味着更容易一步......此外,此命令的响应不限于short值,这意味着您可以检查大于32767字节的小程序大小

答案 1 :(得分:0)

某些对象的大小取决于Java Card操作系统,因此没有直接链接。不要忘记操作系统可能还需要使用内存来支持您的应用程序。某些操作系统也会对齐数据,使其更加复杂。

因此,除非您的制造商提供过工具,否则很难确定。给定一个或两个字节可能会确定字节代码大小,但我不知道从头到尾有任何特定的工具。

没有工具,JCSystem可能是您最好的选择。