【问题标题】:Javacard Shareable Interface: lookupAID returns AID but getAppletShareableInterface returns nullJavacard 可共享接口:lookupAID 返回 AID 但 getAppletShareableInterface 返回 null
【发布时间】:2012-09-12 18:58:43
【问题描述】:

编辑 2:发现错误。我试图在构造函数中初始化 Shareable 对象。那时还没有调用客户端的 register 方法,所以 JCRE 没有它的 AID。虽然我的服务器的 getShareableInterfaceObject(AID clientaid, byte parameter) 方法不需要客户端的 AID 为 != null ,但 JCRE 可能会这样做,因为它为我的客户端调用此方法。我现在在处理我的第一个 APDU 时初始化我的 Shareable 对象,它现在可以工作了。

顺便说一句,感谢 owlstead 帮助格式化我的帖子。绝对让它更容易阅读!


我是 Java Card 开发的新手,我的Shareable 接口无法正常工作。

我有一个接口类声明我的客户端小程序想要使用的功能。我的服务器小程序实现了这个类。我的客户端小程序查找 AID 并尝试通过调用 getAppletShareableInterface() 来获取接口。但这总是返回null

我的服务器小程序的getShareableInterface() 仅包含return this;,所以我猜故障出在其他地方。但我不知道在哪里。

我正在使用 JCWDE 并逐步执行代码,我看到我的服务器小程序调用了注册,因此客户端小程序应该能够找到它。谁能给我一些指示可能出了什么问题?

编辑:

public interface IF extends Shareable {
    public void method();
}

public class Server extends Applet implements IF {
    public getShareableInterfaceObject {
        return this;
    }
}

public class Client extends Applet {

    private Client() {
        AID ServerAID = JCSystem.lookupAID(byteArrayAID, (short)0, (byte)byteArrayAID.length);
        interface = (IF)JCSystem.getAppletShareableInterfaceObject(ServerAID, (byte)0x00);
    }

    public void process(APDU apdu) {
        interface.method();
    }
}

lookupAID 返回正确的 AID,但 getAppletShareableInterfaceObject 返回 null,就好像服务器小程序不存在一样。

【问题讨论】:

  • 如果您展示一些代码以及有关您的运行时环境的一些信息,我们会有所帮助。
  • 很高兴你解决了这个问题,我在 Java Card 上做了很多工作,但在 Shareable 接口上工作得少了一点。
  • 您能否将其发布为答案并接受它?这样问题就不会一直悬而未决。

标签: applet client javacard


【解决方案1】:

发现错误。我试图在构造函数中初始化 Shareable 对象。那时还没有调用客户端的 register 方法,所以 JCRE 没有它的 AID。虽然我的服务器的 getShareableInterfaceObject(AID clientaid, byte parameter) 方法不需要客户端的 AID 为 != null ,但 JCRE 可能会这样做,因为它为我的客户端调用此方法。我现在在处理我的第一个 APDU 时初始化我的 Shareable 对象,它现在可以工作了。

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2021-12-13
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多