Размер апплета Java-карты

Какую часть eeprom использует установка апплета JC? Это размер файла CAP или как узнать? Может быть, я мог бы использовать метод JCsystem для получения доступной памяти, но есть ли какой-то прямой метод, например, какая-то команда в инструментах разработки JC от oracle? (У меня нет JCOP)

2 ответа

Решение

Прямой метод получения размера апплета еще не найден. Вот два способа, которые я использовал, чтобы получить размер апплета


Стандартный Javacard

В среде разработки создайте апплет, который использует JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_PERSISTENT) и отправьте APDU для вызова до и после установки (загрузки), чтобы получить EEP для класса, и снова вызовите до и после установки (установки), чтобы получить EEP для экземпляра апплета.

Ограничением является то, что этот метод поддерживает только short, что означает максимальную свободную память 0x7FFF (32767) байт. Вы не можете использовать этот метод, если размер вашего апплета превышает 32767 байт, и вам необходимо уменьшить объем свободной памяти с помощью фиктивного апплета, чтобы объем свободной памяти перед установкой (загрузкой) составлял менее 32767 байт.


Javacard с поддержкой GP 2.2 + ETSI

Если ваша карта поддерживает Global Platform 2.2 и ETSI, вы можете использовать команду GET DATA.

В разделе 11.3 спецификации GP-карты указано, что

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]. Значение объекта данных в кодировке TLV, на которое ссылаются в параметрах контрольного управления P1 и P2 командного сообщения, равно:

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 выше, но вместо выбора апплета, чтобы получить свободную память и отправить его команду, мы напрямую отправляем GET DATA вводе команды. Это означает, что на один шаг проще... Кроме того, ответ этой команды не ограничивается short значение, что означает, что вы можете проверить размер апплета, который превышает 32767 байт

Размер некоторых объектов зависит от операционной системы Java Card, поэтому прямой ссылки нет. Не забывайте, что ОС может потребоваться использовать память для поддержки вашего приложения. Некоторые операционные системы также выравнивают данные, делая их более сложными.

Поэтому, если вам не предоставили инструменты от вашего производителя, трудно быть уверенным. Размер байтового кода, вероятно, можно определить, учитывая один или два байта, но я не знаю каких-либо конкретных инструментов для этого из головы.

Без инструментов JCSystem может быть вашим лучшим выбором.

Другие вопросы по тегам