使用javacard Shareable类在两个applet之间共享一个接口,作为客户机和具有不同包的服务器



我想在两个applet之间共享一个接口,作为具有不同包AID的客户机和服务器。我看到了链接:[0x6f00错误铸造Javacard可共享接口

在上面的链接中说:客户端和服务器必须在同一个包中。我现在有一个问题。如果客户端有不同的package AID,客户端是否可能使用服务器功能?非常感谢。

客户端和服务器不必在同一个包中!它们只需要依赖于包含共享接口的同一个包。

在链接的问题中,有一个关于接口的问题:OP在两个独立的包中声明了两个具有相同名称的接口。这就是为什么强制转换失败并且抛出6F00状态。


如何使用Shareable接口:

1。在服务器端包中声明您的共享接口public:

package com.test.mypackage.a;
public interface SharedObject extends Shareable {
        public void foo();
}

2。在客户端代码中使用接口:

package com.test.mypackage.b;
import com.test.mypackage.a.SharedObject;
...
SharedObject obj = (SharedObject) JCSystem.getAppletShareableInterfaceObject(svrAid, (byte)0);
  • 在构建客户端小程序时,使用服务器小程序作为库。
  • 先加载服务器小程序cap文件。
  • 然后加载您的客户端applet cap文件。
  • 可共享接口不能用于同一包中的applet。因为它适用于不同上下文的applet。

    当一个applet(Client applet)需要访问另一个applet(Server applet)的方法时,如果两个applet位于不同的包中,则使用Shareable接口。不同包中的applet由防火墙分隔,以防止跨包访问applet数据。

    请检查这个简单的可共享接口实现,它将消除你对其用例的疑虑。https://stackoverflow.com/a/57200926/4752262

    最新更新