使用javacard可共享类在两个applet之间共享一个接口作为客户端和服务器与不同的包?

时间:2016-11-13 08:12:57

标签: applet smartcard javacard

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

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

2 个答案:

答案 0 :(得分:4)

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

在链接的问题中,接口存在问题: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);
  1. 在构建客户端小程序时使用服务器小程序as a library
  2. 首先加载您的服务器小程序cap文件。
  3. 然后加载您的客户端小程序cap文件。

答案 1 :(得分:0)

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

当一个小应用程序(客户端小应用程序)需要从另一个小应用程序(服务器小应用程序)访问方法时,只要两个小应用程序都位于不同的程序包中,则使用共享接口。不同程序包中的小应用程序被防火墙分隔以防止访问小程序数据跨包。

请检查此简单的可共享接口实现,它将清除您对其用例的怀疑。 https://stackoverflow.com/a/57200926/4752262