По сути, это вопрос о версии двоичного формата , но в свете команд ISO 7816-4 (см. 5.4), используемых в Эмуляция хост-карты контекст.
По сути, у нас есть приложение, которое связывается с другими экземплярами через HCE. Поскольку обновления устройств / приложений не синхронизированы, существует несколько версий приложения одновременно; в котором функции были добавлены или удалены.
Каков наилучший способ создания совместимой в прямом и обратном направлении набора команд? В терминах Java каждая версия приложения будет иметь несколько реализаций одного и того же интерфейса, и цель состоит в том, чтобы оба приложения были подключены к одной и той же реализации. В двух словах, это также можно рассматривать как грубое согласование возможностей.
Формат APDU ISO 7816-4 уже охватывает большую часть низкоуровневого аспекта Тип Длина Значение (TLV) двоичного транспорта.
Я до сих пор придумал
- инициатор отправляет
Select Application (AID)
команду - цель отвечает, отвечает ОК со списком поддерживаемых идентификаторов протокола
- инициатор сравнивает со своим списком, затем
- выдает команду
select version
или, альтернативно, - выдает команду
no supported version
, если списки не имеют общего значения
- target сравнивает выбранную версию со списком поддерживаемых протоколов,
- , если совпадение найдено, отвечает OK, возможно добавляя метаданные, если применимо.
- , если не сопоставлено , отвечает с ошибкой
Тогда версионные команды могут быть безопасно обменены; оба клиента знают, какую реализацию использовать.
Вопросы
- переизобретаю ли я колесо?
- в свете формата ADPU ISO 7816, это слишком оборонительно, возможно ли сделать то же самое, используя меньше команд?
- что может быть полезной
no supported version
полезной нагрузкой, например, поддерживаемых версий и / или инструкций по обновлению? - есть некоторые идентификаторы команд, от которых я должен держаться подальше ( например, Android документы, похоже, намекают на то, что для одного сеанса NF C может быть выбрано более одного приложения HCE? этот подход?
- есть ли какие-либо устройства, которые «чувствительны» к возврату больше, чем OK в ответе на выбор приложения?