2016-04-25 8 views
1

Мы разрабатываем приложение на базе Android HCE. Мы обнаружили, что HCE использует механизм AID для маршрутизации связи в определенные приложения. Это означает, что если я хочу запустить приложение, первой командой должна быть команда SELECT по имени.Android HCE не поддерживает команду выбора MF?

Это очень большое ограничение на транспортный домен. В транспорте многие POS не отправят команду SELECT по имени в качестве первой команды. Вместо этого они отправили команду SELECT MF (00A40000023F00) в качестве первой команды. Таким образом, HCE не может работать в этом случае.

Есть ли какой-либо план добавления функции выбора по умолчанию? Или у нас есть какое-то другое решение для поддержки этого варианта использования?

ответ

1

Android использует механизм маршрутизации на основе AID для отправки сообщений в режиме эмуляции карты в конкретное приложение (приложения HCE или SE-апплеты). Это также то, что NFC Forum разработал в качестве основного средства поддержки нескольких независимых эмуляторов карт на одном устройстве NFC.

маршрутизация на основе АИДА требует первой команды, чтобы быть командой SELECT (с помощью DF имени/AID):

00 A4 0400 <Lc> <AID> [<Le>]

Это необходимо для того, чтобы различать между различными приложениями. В противном случае Android не сможет отправить сообщение в нужную службу HCE.

Однако это также предотвращает эмуляцию всего, что предшествует успешному выбору приложения (например, выбор основного файла с помощью команды SELECT (по имени файла и т. Д.)). Если это было разрешено, Android не будет знать, какое приложение HCE отвечает за обработку этой команды. Следовательно, было бы невозможно разместить несколько приложений HCE, для которых всем требуется мастер-файл на одном устройстве. Поэтому я не ожидаю, что это будет поддержано в ближайшее время.

На других платформах mutli-приложений, которые также имеют такую ​​же проблему. Например, типичные смарт-карты Java Card также не имеют основного файла. На этих платформах проблема обычно преодолевается, позволяя одному выбранному по умолчанию приложению обрабатывать все сообщения до первой команды SELECT (по имени DF/AID). Можно только предположить, будет ли такой механизм появляться в будущей версии Android ... Я бы не рассчитывал на это.

Если вы используете корневые устройства, вы можете использовать инфраструктуру, такую ​​как Xposed, для адаптации системной службы NFC для отправки сообщений на какую-либо службу HCE по умолчанию.

-1

Для транспортировки Visa использует свое приложение qVSDC как офлайн-решение. Он предоставляет специальные открытые ключи для автономной проверки подлинности данных для ограничения этих транзакций при транспортировке. Таким образом, по умолчанию выбирается A0000000031010 для Visa, а не для конкретной AID для транспортировки. Но Visa предоставляет поддержку нескольких AID, что означает, что вы можете разработать 2. приложение для использования при транспортировке. Вы должны персонализировать свое приложение для конкретной команды «Выбрать AID».

+0

Спасибо за ваш ответ. Но логика обработки POS очень трудно изменить, первая команда POS-отправки - 00A40000023F00.So Android HCE не направляет эту команду в мое приложение HCE. –

+0

Возможно, вы можете изменить свой идентификатор приложения на 3F00 (если это разрешено, конечно) –

+0

Команда SELECT AID - 00A404XXXXXX Команда SELECT MF - 00A40000023F00 Поэтому изменить идентификатор приложения на 3F00 не работает. –