Разработка смарт-карт в Android

Мы разработали прототипную плату с микроконтроллером, который может связываться с SmartCard (он может читать ATR, выдавать и читать ответы на команды APDU и т. Д.). Теперь я хочу использовать это оборудование с Android-телефоном или планшетом. У нашей платы есть USB-соединение, через которое мы можем читать и писать в MCU через Android.

Конечная цель состоит в том, чтобы иметь функционирующий считыватель смарт-карт на платформе Android с поддержкой PKCS # 11 и предоставить библиотеку конечным пользователям считывателя SmartCard, чтобы они могли общаться со своими картами.

Я прочитал несколько дискуссий по этому вопросу, некоторые из которых заявили, что для этого мне придется создавать пользовательский Android. Я не очень хорошо знаком с архитектурой Android, чтобы понять, почему мне придется перестраивать Android, когда я могу общаться с моим периферийным устройством (кард-ридером) через USB. Мне кажется, что если я предоставил библиотеку, реализующую CCID-подобный интерфейс, пользователи смогут общаться с моим читателем, используя стек Android USB, путем интеграции моей библиотеки в свой целевой файл .apk.

Существуют ли какие-либо проблемы с вышеуказанным планом, о которых мы не знаем? Я обеспокоен тем, что нам не хватает чего-то фундаментального для читателей Android или SmartCard в целом (например: безопасность), которые вызовут проблемы для нас, когда мы начнем реализацию библиотек, описанных выше.

Solutions Collecting From Web of "Разработка смарт-карт в Android"

У меня встроенные периферийные устройства USB в настраиваемом дистрибутиве Gingerbread для моей пользовательской платформы. Единственная причина, по которой вы настроили платформу Android, – это добавить или изменить некоторые драйверы, которые предоставят вам доступ к вашему USB-устройству. Если ваше устройство USB уже использует протокол, поддерживаемый стандартными устройствами Android, просто наслаждайтесь удачей! Ты почти все настроен. Но прежде чем отпраздновать вашу победу, я бы попробовал ее на разных устройствах. На уровне Android и Kernel Google предоставляет очень простой контент с большим количеством исходных кодов драйверов. Разработчик телефона / планшета должен решить, какие драйверы низкого уровня и протокол они будут включать в себя в соответствии с аппаратным обеспечением, которое использует их устройство. Поскольку объем памяти ограничен на телефоне / планшете, общее правило состоит в том, чтобы включить только то, что необходимо. В архитектуре ПК-Linux у вас нет проблемы, так как пространство жесткого диска настолько велико, что вы включаете все существующие драйверы, и вы позволяете системе выбирать и выбирать то, что нужно, в зависимости от того, что она обнаруживает.

Надеюсь, этот простой ответ будет полезен.