необязательный компонент Descriptor в cap-файле в JavaCard Spec 2.2.2 и ниже - PullRequest
0 голосов
/ 16 октября 2018

, исследуя спецификацию JCVM при попытке декомпилировать capfile, мне пришёл в голову следующий вопрос:

Компонент дескриптора (6.13) говорит:

Компонент дескриптора обеспечиваетдостаточно информации для анализа и проверки всех элементов файла CAP.Он ссылается и поэтому описывает элементы в компоненте пула констант (раздел 6.7, «Компонент пула констант» на стр. 6-14), компонент класса (раздел 6.8, «Компонент класса» на стр. 6-21), компонент метода (раздел6.9, «Компонент метода» на стр. 6-35) и Компонент статического поля (раздел 6.10, «Компонент статического поля» на стр. 6-41).Ни один компонент в файле CAP не ссылается на компонент дескриптора.

Модель компонентов (6.1) гласит:

Полный файл CAP должен содержать все необходимые компоненты, указанные вэта глава.Три компонента являются необязательными: компонент апплета (раздел 6.5, «Компонент апплета» на стр. 6-12), компонент экспорта (раздел 6.12, «Компонент экспорта» на стр. 6-47) и компонент отладки (раздел 6.14, «Отладочный компонент»).”На стр. 6-57).

Тем не менее в Установке (6.2) говорится:

COMPONENT_Descriptor (необязательно)

И яне наблюдал компонент Descriptor в командах загрузки глобальной платформы для загрузки!Таким образом, возникает вопрос, для чего на самом деле используется дескриптор, и почему апплету не нужно работать на карте?Напротив, спецификация JCVM 3.0.1 и более поздние не перечисляют компонент дескриптора как необязательный.

1 Ответ

0 голосов
/ 17 октября 2018

И я не наблюдал компонент Descriptor в командах загрузки глобальной платформы для загрузки!Таким образом, возникает вопрос, для чего фактически используется дескриптор и почему апплету не нужно работать на карте?

Компонент Descriptor.cap предоставляет информацию для анализа и проверки других элементов.в файле CAP.Таким образом, компонент Descriptor.cap необходим для проверки байтового кода (BCV), которая выполняется вне карты и не имеет значения для операций с картой.Он ссылается и указывает на информацию для различных компонентов файла CAP, но ни один компонент (обязательный) не указывает на компонент дескриптора.Таким образом, нет необходимости загружать этот компонент на карту.Следовательно, вы не видите его в Global Platform [Load] commands.

Как определено в спецификации JCVM ниже спецификации 3.0.5.

Компонент дескриптора предоставляет достаточно информации для анализа и проверки всехэлементы файла CAP.Он ссылается и поэтому описывает элементы в компоненте пула констант (6.8 компонент пула констант), компоненте класса (компонент класса 6.9), компоненте метода (компонент метода 6.10) и компоненте статического поля (6.11 компонент статического поля).Ни один компонент в файле CAP не ссылается на компонент дескриптора.

В отличие от спецификации JCVM 3.0.1 и выше, компонент дескриптора не указывается как необязательный.

Они описывают Descriptor.cap как optional в порядке установки компонента файла CAP в следующей спецификации JCVM 3.0.5 (раздел 6.3).Хотя это и не та же спецификация, но сложно сказать, почему они упускают упоминание об этом в упомянутой вами спецификации.

https://docs.oracle.com/javacard/3.0.5/JCVMS/JCVMS.pdf

...