我想在两个小程序之间共享一个接口,作为具有不同程序包AID的客户端和服务器。我看到了链接:[0x6f00 error casting Javacard Shareable Interface
在上面的链接中说:客户端和服务器都必须在同一个包中。 我现在有一个问题。是否可能客户端使用服务器功能,如果他们有不同的包AID? 非常感谢你。
答案 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);
cap
文件。cap
文件。答案 1 :(得分:0)
共享接口不能用于同一程序包中的小程序,因为它适用于具有不同上下文的小程序。
当一个小应用程序(客户端小应用程序)需要从另一个小应用程序(服务器小应用程序)访问方法时,只要两个小应用程序都位于不同的程序包中,则使用共享接口。不同程序包中的小应用程序被防火墙分隔以防止访问小程序数据跨包。
请检查此简单的可共享接口实现,它将清除您对其用例的怀疑。 https://stackoverflow.com/a/57200926/4752262