Как получить доступ к считывателю смарт-карт Omnikey 3121
Я хочу использовать Java, чтобы получить доступ к смарт-карте с помощью Omnikey Reader. Я нашел пару решений, таких как смарткардио, но это не помогло. В основном я связался с ридером, но он использует APDU, когда он мне не нужен. У меня есть идея открыть поток для моего считывателя через USB и передать поток двоичные команды на устройство, а затем получить ответ таким же образом, но технически, как я могу написать это на Java?
Я также нашел библиотеки, такие как usb4java, но и плохое мнение об этом. Может быть, кто-то имел опыт работы с этим устройством и мог бы дать мне несколько советов?
В интернете не так много уроков по программированию смарт-карт. Я пытался также использовать pyApduTool или HID Omnikey Sync API V2.0., Но это только для теста. Я должен написать простые запросы, чтобы получить информацию с карты.
0 ответов
Есть два основных способа решения вашей проблемы:
не используйте интерфейс ПК /SC, используемый
java.smartcardio
но используйте собственные проприетарные библиотеки от производителя устройства считывания карт, например, с использованием оболочки (на основе JNI, но есть альтернативы лучшего / более высокого уровня);продолжайте использовать APDU, но используйте байт CLA, установленный в
FF
hex, открывая связь с читателем.FF
Зарезервировано, но, как правило, оно предназначено для доступа к устройству чтения карт, например, для доступа к картам памяти без уровня ISO/IEC 7816-4, которые поддерживаются производителем устройства чтения.из двух (только для полноты): многие устройства считывания карт были созданы с использованием чипа USB-последовательный интерфейс, что означает, что вы можете напрямую подключаться к (виртуальному) последовательному интерфейсу; Само собой разумеется, вы должны будете знать, какие команды отправлять и программировать все самостоятельно, если этот интерфейс вообще присутствует (Omnikey 3121 является относительно новым, поэтому я был бы удивлен).
Оба варианта основаны на определенных функциях кард-ридера, поэтому вы сможете найти информацию для читателя, чтобы узнать, что это возможно. Насколько мне известно, нет способа запросить, какие функции предоставляются. Не ожидайте слишком многого от стандартизации для такого рода функциональности.
Вы проверили документацию вашего кард-ридера?