2

我们知道 Applet.process() 方法在 APDU 请求和它的 APDU 响应之间调用,即它可以读取一些传入的 APDU 并发送一些传出作为响应。

但是,Applet 可以发送自己的 APDU 命令并得到响应吗?IE:

public void process(APDU apdu)
{
...
APDU resp = SomeAPI.someMethod("00A40101FF...");
...
}
4

3 回答 3

2

但是,Applet 可以发送自己的 APDU 命令并得到响应吗?

简单的答案是NO,您不能为另一个小程序发送 APDU,因为您无权访问命令调度程序。但是有一种方法可以做到这一点,请阅读下文。

public void process(APDU apdu)
{
...
APDU resp = SomeAPI.someMethod("00A40101FF...");
...
}

在 java 卡小程序(直到最新版本 3.0.5u)中,这样的事情是不可能的,因为在这里您存储了 APDU 对象的引用,无法存储临时 JCRE 入口点对象及其引用。

现在,来实现你想要的功能。使用可共享的接口对象。显然,您需要在此处修改目标小程序(您要调用的)。通过可共享对象调用小程序将为您进行上下文切换,之后您可以返回到您的小程序。

参考http://www.oracle.com/technetwork/java/javacard/specs-jsp-136430.html

于 2018-04-18T12:13:45.627 回答
2

不,它不能。

您无权访问命令调度程序。

于 2018-04-30T02:19:26.387 回答
1

我假设您不打算通过串行接口与目标 Applet 通信,而是寻找“执行与接收此 APDU 时相同的功能”。

我有一些疑问,是否存在这样的接口并且由于以下原因看不到用例:

  • 在 javacard 环境中,applet 是自治的构建块。
  • 如果您打算在同一个 Applet 中调用,应该有更方便的可能性。
  • 如果以不同的小程序为目标:隐含的向前和向后切换根本不符合当前选定小程序的 APDU 概念。
于 2018-04-18T08:10:07.283 回答