我们知道 Applet.process() 方法在 APDU 请求及其 APDU 响应之间调用,即它可以读取一些传入的 APDU 并发送一些传出的作为响应。
但是,Applet 可以发送自己的 APDU 命令并获得响应吗?即:
public void process(APDU apdu)
{
...
APDU resp = SomeAPI.someMethod("00A40101FF...");
...
}
最佳答案
But, can Applet send its own APDU command and get the response?
简单的答案是否,您无法为另一个小程序发送APDU,因为您无权访问命令调度程序。但有一种方法可以做到这一点,请阅读下文。
public void process(APDU apdu) { ... APDU resp = SomeAPI.someMethod("00A40101FF..."); ... }
在java卡小程序(直到最新版本3.0.5u)中,这样的事情是不可能的,因为在这里您存储了APDU对象的引用,而临时JCRE入口点对象及其引用不能被存储。
现在,实现您想要的功能。使用可共享的接口(interface)对象。显然,您需要在这里修改目标小程序(您要调用的)。通过可共享对象调用小程序将为您执行上下文切换,之后您可以返回到您的小程序。
引用http://www.oracle.com/technetwork/java/javacard/specs-jsp-136430.html
关于smartcard - APDU 命令可以在 Java 卡小程序*内部*执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49889334/