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