APDU命令是否可以在Java Card Applet内部执行



我们知道Applet.process((方法正在调用"介于"APDU请求及其APDU响应之间,即它可以读取一些不合时宜的APDU并发送一些传出作为响应。

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

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

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

简单的答案是否定的,您无法为另一个小程序发送 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

不,它不能。

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

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

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

  • 在javacard环境中,小程序是自主构建块。
  • 如果您打算在同一小程序中调用,应该有更方便的可能性。
  • 如果针对不同的小程序:向后隐含的切换根本不符合当前所选小程序的 APDU 概念。

最新更新