Странная недопустимая команда CLA (6E 00) на Java SmartCard IO

Я пишу приложение смарт-карты и после успешного выбора приложения с его AID, когда он доходит до отправки Get Processing Options

В ответ получаю 6E 00 - Неверная команда CLA. Это часть кода, который отправляет команду и получает ответ:

ResponseAPDU rapdu = sendCommand(new byte[]{(byte)0x80, (byte)0xA8, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0x83, (byte)0x00, (byte)0x00});

private ResponseAPDU sendCommand(byte[] apdu) throws CardException{
    CommandAPDU capdu = new CommandAPDU(apdu);         
    ResponseAPDU rpd = channel.transmit(capdu);

    return rpd;
}

Я использую ту же команду для чтения карты с помощью библиотеки Jaccal, и она работает отлично, но просто jaccal не подходит для моего приложения из-за использования внешнего файла dll. Я не знаю, почему он дает мне такой ответ.


person Olantobi    schedule 08.12.2011    source источник


Ответы (2)


Этот вопрос обсуждается в ряде записей в блогах/форумах:

В моем случае карты VISA кажутся «прощающими», а карты MasterCard — нет (6E 00). Обратите внимание, вопреки совету, обновление до Java 7 не помогло мне. Вы, вероятно, смотрите на решение sun.security.smartcardio.t0GetResponse и обрабатываете ответы.

Я сделал следующее, чтобы заставить его работать:

System.setProperty("sun.security.smartcardio.t0GetResponse", "false");

Обрабатывайте ответы с помощью GET RESPONSE (см. EMV 4.3 Книга 1, раздел 9.3.1.3). Эта ссылка также полезна:

person Corin Fletcher    schedule 18.04.2012
comment
Java 8 по-прежнему требует этого исправления. - person Jonathan Rosenne; 29.03.2017

В основном эта ошибка возникает из-за того, что команда, которую вы передаете, не соответствует. Просто проверьте (0x80), первое поле правильное или неправильное. В карточке ОС карты проверьте первое поле с ожидаемым значением, если оно не соответствует, отправьте CLA Not Found Exception означает код ошибки 6E 00. вам нужно будет предоставить более подробную информацию о том, что вы делаете - какая карта, версия, соответствие GP, список существующих карт, какую технологию вы используете. На каком языке вы делаете свою работу. (.net или java), чтобы я могу помочь тебе.

person Sachin D    schedule 21.02.2012