首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaCard Spec 2.2.2及以下的cap中的可选描述符组件

JavaCard Spec 2.2.2及以下的cap中的可选描述符组件
EN

Stack Overflow用户
提问于 2018-10-16 11:34:52
回答 1查看 184关注 0票数 3

在研究JCVM规范的同时,试图对capfile进行反编译,我想到了以下问题:

描述符组件(6.13)说:

描述符组件提供了足够的信息来解析和验证CAP文件的所有元素。它引用并因此描述了常数池组件(第6至14页中的第6.7节,“恒定池组件”)、类组件(第6至21页的第6.8节,“类组件”)、方法组件(第6至35页的“方法组件”)和静态字段组件(第6至41页的“静态字段组件”)中的元素。CAP文件中没有组件引用描述符组件。

组件模型(6.1)说:

完整的CAP文件必须包含本章中指定的所有必需组件。三个组件是可选的: Applet组件(第6.5节,第6-12页的“Applet组件”),导出组件(第6-47页的第6.12节,“导出组件”)和Debug组件(第6-57页的第6.14节,“调试组件”)。

然而,它在安装(6.2)中说:

COMPONENT_Descriptor (可选)

而且,我还没有观察到全局平台加载中的描述符组件用于加载命令!因此,问题是描述符实际用于什么,以及为什么applet不需要在卡片上工作?相反,JCVM规范3.0.1和更高版本不将描述符组合列为可选的。

EN

回答 1

Stack Overflow用户

发布于 2018-10-17 11:49:36

而且,我还没有观察到全局平台加载中的描述符组件用于加载命令!因此,问题是描述符实际用于什么,以及为什么applet不需要在卡片上工作?

Descriptor.cap组件提供了用于分析和验证CAP文件中其他元素的信息。因此,字节码验证需要Descriptor.cap组件,它是在卡外完成的,对卡片操作没有重要意义。它引用并指向不同CAP文件组件的信息,但没有组件(强制组件)指向描述符组件。因此,没有必要在卡上加载此组件。因此,您在Global Platform [Load] commands.中看不到它

如下面JCVM规范3.0.5所定义的那样。

描述符组件提供了足够的信息来解析和验证CAP文件的所有元素。它引用并描述了常数池组件(6.8恒定池组件)、类组件(6.9类组件)、方法组件(6.10方法组件)和静态字段组件(6.11静态字段组件)中的元素。CAP文件中没有组件引用描述符组件。

相反,JCVM规范3.0.1和更高版本不将描述符组合列为可选的。

在下面的JCVM规范3.0.5中,他们按照Descriptor.cap文件组件的安装顺序将optional描述为optional(6.3节)。虽然不是相同的规范,但很难说出他们为什么没有在您提到的规范中提到这一点。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52834572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档