Как активировать / включить карту ICC с помощью Java через картридер? - PullRequest
0 голосов
/ 06 января 2012

Я пишу приложение для взаимодействия со смарт-картой, в настоящее время использующей Java. У меня есть кардридер серии OMRON V2BF. Приложение запускается в Debian.

Я пытался использовать API ввода-вывода Java Smart Card , чтобы попытаться установить соединение со смарт-картой.

Но я не смог обнаружить / получить терминалы карты, используя

    TerminalFactory factory = TerminalFactory.getDefault();
    List<CardTerminal> terminals = factory.terminals().list();

Я также пытался использовать «Нажать и активировать (холодный сброс) ICC», отправив пакет команд считывателю OMRON, но ответ всегда был «Отрицательный».

Могу ли я знать, какую часть я сделал неправильно? Любой совет будет принята с благодарностью!

1 Ответ

2 голосов
/ 06 января 2012

factory.terminals().list() покажет только PCSC-совместимые устройства по умолчанию. Я не вижу никакой информации о поддержке PCSC для текущего читателя. Пожалуйста, обратитесь к документации или поставщику для этого.

Ваша смарт-карта должна быть совместимой с ISO 7816-4 для работы с javax.smartcardio, карты памяти не будут работать. javax.smartcardio в основном для использования с CommandAPDU и ResponseAPDU, которые являются ISO 7816-4-совместимыми структурами данных для «процессорных» карт.

Возможно, вам не удастся установить связь с ридером через последовательный интерфейс, используя спецификацию интерфейса, предоставленную производителем ридера. Для этого вы можете использовать Java Communications API.

Обратите внимание, что многие производители будут предоставлять образцы кода и библиотек на C / C ++ или даже .NET, в этом случае может быть возможность переключить язык программирования / платформу или создать оболочку JNI вокруг собственного кода.

Если вы пишете для карты процессора (например, для кредитной карты), вы можете даже создать терминал, совместимый с javax.smartcardio, и вставить его в список терминалов.

...