Javacard通过Java代码获取已安装applet的applet AID

时间:2015-10-09 04:29:38

标签: java javacard

我有一个javacard,它安装了2个applet。现在我想从两者中选择一个。目前我的工作方式是,我提供applet的cap文件,我从中得到它的AID。但我发现这种方法并不令人满意。所以

  1. 是否有一种方法可以在没有封面文件的情况下获取安装在Java卡中的小程序的AID?
  2. 有没有办法选择没有AID的applet?我的意思是,有一种方法可以在重置后自动选择小程序吗?
  3. 对此有任何其他想法或见解吗?

2 个答案:

答案 0 :(得分:6)

对于您提出的问题,

  1. 是。 PyApduTool可以让您达到目标。这个工具可以帮助您获得所有的包裹'或者即使你没有封面文件,也可以在Java卡中使用applet' AID。 只需按下"刷新"按钮。您需要的东西出现在右侧文本字段中。
  2. enter image description here

    1. 您可以将applet设置为"默认选择​​"安装时。 通过这种方式,您可以默认选择小程序,而无需知道其AID。
    2. enter image description here

      1. 为方便起见,了解applet-AID应该更好。 只能选择一个小程序。

答案 1 :(得分:4)

安迪的答案很好,但我觉得它错过了问题的一个重要部分:

  

Javacard通过Java代码获取已安装applet 的applet AID

如果问题涉及从一个Java卡小程序本身的代码中找到installedf小程序,则可能适用此答案:
首先,可以通过JCSystem.getAID()获取applet本身的AID 其次,无法从已安装的小程序中“检测”其他小程序 虽然如果你知道其他applet的AID,你可以使用JCSystemGPSystem获取有关它的有用信息。

因此,除了JavaCard代码之外,卡管理器还能够列出已安装的小程序及其所有权限等。您可以使用您选择的工具。如果您正在使用JCOP,我推荐JCOP Shell。如果你使用免费软件,我推荐来自Martin Paljak的Global Platform Pro

除了选择AID和默认选择之外,没有直接的方法来选择applet。通过使用JavaCard中的SharedObjectInterface机制,可以通过间接方式将控制流更改为不同的applet。