如何从卡中获取java卡版本?
有什么办法可以从卡中获取JC的版本。
或者我应该尝试安装特定于每个 JC 版本选项的小程序。
最佳答案
确定“白色”智能卡支持的 JavaCard API 版本的唯一完全证明方法是为每个 JavaCard 版本构建单独的 CAP 文件。
我建议你让每个 CAP 只包含一个简单的扩展类 javacard.framework.Applet
.您可能希望能够实际安装您的简单小程序并实际与其交换 APDU,以确保它确实有效;据我所知,即使并非所有导入都已解析,Java Card 虚拟机实现也可以上传 CAP 文件,但如果您尝试实际使用 API,则应该会失败。
生成 CAP 文件后,您可以通过解析生成的 CAP 文件中的 COMPONENT_Import 组件来验证它是否确实链接到预期的 JavaCard API 包。 JavaCard 虚拟机规范中描述了 CAP 文件格式,您需要的字段是导入的 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)
考虑到以上信息,我要指出来自 Michael Roland 的答案有点误导。调用 JCSystem.getVersion()
无助于确定是否支持 Java Card 版本;如果您已经到了可以实际调用 API 的地步,那么您已经确定支持该版本。
关于version - 如何在卡上获取 JavaCard 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25031338/