如何在卡上获取JavaCard版本

hun*_*rra 4 version javacard

如何从卡中获取Java卡版本?有什么方法可以从卡中获取JC版本。还是应该尝试为每个JC版本选项安装特定的小程序。

Shu*_*key 6

确定“白色”智能卡支持的JavaCard API版本的唯一完整方法是为每个JavaCard版本构建一个单独的CAP文件。

我建议您使每个CAP只包含一个简单的类,以扩展 javacard.framework.Applet。您可能希望能够实际安装您的简单小程序并与其实际交换APDU,只是为了确保它确实有效。据我所知,即使未解决所有导入问题,也允许Java Card虚拟机实现上载CAP文件,但是如果您尝试实际使用API​​,则该操作将会失败。

生成CAP文件后,您可以通过解析生成的CAP文件中的COMPONENT_Import组件来验证它是否确实链接到了预期的JavaCard API包。CAP文件格式在JavaCard虚拟机规范中进行了描述,并且您想要的字段是导入的JavaCard软件包的package_info。

我已经列出了AID-package_version_major.package_version_minor(package_name)信息。该列表可能不完整。

Java卡2.1.1:A0000000620201-1.1(javacardx.crypto)

Java卡2.1.1:A0000000620101-1.0(javacard.framework)

Java卡2.1.1:A0000000620001-1.0(java.lang)

Java卡2.1.1:A0000000620102-1.1(javacard.security)

Java卡2.2.1:A0000000620201-1.2(javacardx.crypto)

Java卡2.2.1:A0000000620101-1.2(javacard.framework)

Java卡2.2.1:A0000000620002-1.0(java.io)

Java卡2.2.1:A0000000620001-1.0(java.lang)

Java卡2.2.1:A0000000620003-1.0(java.rmi)

Java卡2.2.1:A0000000620102-1.2(javacard.security)

Java卡2.2.1:A000000062010101-1.0(javacard.framework.service)

Java卡2.2.2:A0000000620209-1.0(javacardx.apdu)

Java卡2.2.2:A0000000620202-1.2(javacardx.biometry)

Java卡2.2.2:A0000000620201-1.3(javacardx.crypto)

Java卡2.2.2:A0000000620203-1.0(javacardx.external)

Java卡2.2.2:A0000000620101-1.3(javacard.framework)

Java卡2.2.2:A0000000620002-1.0(java.io)

Java卡2.2.2:A0000000620001-1.0(java.lang)

Java卡2.2.2:A000000062020802-1.0(javacardx.framework.math)

Java卡2.2.2:A0000000620003-1.0(java.rmi)

Java卡2.2.2:A0000000620102-1.3(javacard.security)

Java卡2.2.2:A000000062010101-1.0(javacard.framework.service)

Java卡2.2.2:A000000062020803-1.0(javacardx.framework.tlv)

Java卡2.2.2:A000000062020801-1.0(javacardx.framework.util)

Java卡3.0.1:A0000000620209-1.0(javacardx.apdu)

Java卡3.0.1:A0000000620202-1.2(javacardx.biometry)

Java卡3.0.1:A0000000620201-1.4(javacardx.crypto)

Java卡3.0.1:A0000000620203-1.0(javacardx.external)

Java卡3.0.1:A0000000620101-1.4(javacard.framework)

Java卡3.0.1:A00000006202080101-1.0(javacardx.framework.util.intx)

Java卡3.0.1:A0000000620002-1.0(java.io)

Java卡3.0.1:A0000000620001-1.0(java.lang)

Java卡3.0.1:A000000062020802-1.0(javacardx.framework.math)

Java卡3.0.1:A0000000620003-1.0(java.rmi)

Java卡3.0.1:A0000000620102-1.4(javacard.security)

Java卡3.0.1:A000000062010101-1.0(javacard.framework.service)

Java卡3.0.1:A000000062020803-1.0(javacardx.framework.tlv)

Java卡3.0.1:A000000062020801-1.0(javacardx.framework.util)

Java卡3.0.4:A0000000620209-1.0(javacardx.apdu)

Java卡3.0.4:A0000000620202-1.2(javacardx.biometry)

Java卡3.0.4:A0000000620201-1.4(javacardx.crypto)

Java卡3.0.4:A0000000620203-1.0(javacardx.external)

Java卡3.0.4:A0000000620101-1.5(javacard.framework)

Java卡3.0.4:A00000006202080101-1.0(javacardx.framework.util.intx)

Java卡3.0.4:A0000000620002-1.0(java.io)

Java卡3.0.4:A0000000620001-1.0(java.lang)

Java卡3.0.4:A000000062020802-1.0(javacardx.framework.math)

Java卡3.0.4:A0000000620003-1.0(java.rmi)

Java卡3.0.4:A0000000620102-1.5(javacard.security)

Java卡3.0.4:A000000062010101-1.0(javacard.framework.service)

Java卡3.0.4:A000000062020804-1.0(javacardx.framework.string)

Java卡3.0.4:A000000062020803-1.0(javacardx.framework.tlv)

Java卡3.0.4:A000000062020801-1.0(javacardx.framework.util)

考虑到以上信息,我可以指出迈克尔·罗兰德的回答有些误导。调用JCSystem.getVersion()无助于确定是否支持Java Card版本。如果您可以实际调用该API,那么您已经确定该版本受支持。