Java卡片小程序如何使用Shareable接口?

How to use Shareable interface in Java Card applets?

我为我的 java 卡片编写了两个简单的小程序,名为 App1App2 如下:

App1 :

public class App1 extends Applet {

    private App1() {
    }

    public static void install(byte bArray[], short bOffset, byte bLength)
            throws ISOException {
        new App1().register();
    }

    public void process(APDU arg0) throws ISOException {
    if(selectingApplet()){
        return;
    }
     //I want to call "ThisMethod()" of App2 here


    }

}

App2 :

public class App2 extends Applet {

    private App2() {
    }

    public static void install(byte bArray[], short bOffset, byte bLength)
            throws ISOException {
        new App2().register();
    }

    public void process(APDU arg0) throws ISOException {

    }

    public void ThisMethod(){
        ISOException.throwIt((short)0x9001);
    }

}

正如我在 App1 程序中指出的那样(作为评论)我想在 App1 的 Process 方法中调用 App2 的 ThisMethod 方法。据我所知,我必须实现 Shareable 接口。但我对此有点困惑:

问题:

1- 我应该在两个小程序中都实现这个方法吗?或者我需要在 App1 或 App2 中实现它?

2- 如果 App1 和 App2 在一个包中或在两个单独的包中,它会改变什么吗?

3- 我需要 Shareable 接口来共享数组吗?还是仅仅为了分享方法是强制性的?

  1. 不,您只需创建一个扩展 Shareable 的接口,然后您的 app2 必须实现该接口。

  2. 没关系

  3. 是的,如果你想分享你的数组,你还需要实现Shareable

但是,在您可以使用从其他小程序实例共享的methods/objects 之前,您必须先将您的界面实例存储在App1 中。您可以通过

AID aid = JCSystem.lookupAid({App2 AID byte array}, {offset}, {length});  // provide the instance AID of App2

{yourInterface} app2Instance = ({yourInterface})JCSystem.getAppletShareableInterfaceObject(aid, (byte)0);

然后使用app2Instance访问共享methods/objects