使用 javacard Shareable class 在两个小程序之间共享一个接口,作为具有不同包的客户端和服务器?

Using javacard Shareable class to share an interface between two applet as client and server with different package?

我想在两个小程序之间共享一个接口,作为具有不同包 AID 的客户端和服务器。我看到了link:[0x6f00 error casting Javacard Shareable Interface

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

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

在链接的问题中,接口存在问题:OP 在两个单独的包中声明了两个具有相同名称的接口。这就是投射失败并抛出 6F00 状态的原因。


如何使用Shareable界面:

1.Declare 你的共享接口 public 在你的服务器端包中:

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

2.Use您客户端代码中的接口:

package com.test.mypackage.b;
import com.test.mypackage.a.SharedObject;

...
SharedObject obj = (SharedObject) JCSystem.getAppletShareableInterfaceObject(svrAid, (byte)0);
  1. 在构建客户端小程序时使用服务器小程序
  2. 首先加载您的服务器小程序 cap 文件。
  3. 然后加载您的客户端小程序 cap 文件。

共享接口不能用于同一 package.Since 中的小程序,它适用于具有不同上下文的小程序。

当一个小程序(客户端小程序)需要从另一个小程序(服务器小程序)访问方法时使用可共享接口,前提是这两个小程序位于不同的 packages.Applets 不同的包中,由防火墙分隔以防止跨包访问小程序数据。

请检查可共享接口的这个简单实现,它将消除您对其用例的疑虑。