Совместно используемый интерфейс Javacard: lookupAID возвращает AID, но getAppletShareableInterface возвращает ноль
редактировать 2: нашел ошибку. Я попытался инициализировать объект Shareable в конструкторе. В это время клиентМетод регистра еще не вызван, поэтому JCRE неу него есть помощь. Пока мой серверs getShareableInterfaceObject (AID clientaid, параметр байта) не делаетне требует клиентаs AID, чтобы быть! = ноль, вероятно, делает JCRE, так как он вызывает этот метод для моего клиента. Теперь я инициализирую свой Shareable объект при обработке моего первого APDU, и теперь он работает.
И, между прочим, спасибо owlstead за помощь в форматировании моего поста. Определенно облегчил чтение! Я
Я новичок в разработке карт Java, и я могуне получить мой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 возвращает ноль, как если бы серверный апплет не сделалне существует.