2011-12-08 9 views
6

Piszę aplikację kart inteligentnych i po udanej selekcji aplikacji z nią pomocy, gdy dojdzie do wysyłania Get opcje przetwarzaniaStrange Nieprawidłowy CLA (6E 00) na Java SmartCard IO

uzyskać 6E 00 jako odpowiedź - Nieprawidłowe polecenie CLA. Jest to część kodu, który wysyła komendę i otrzymujemy odpowiedź:

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; 
} 

Używam tego samego polecenia czytać kartę przy użyciu biblioteki Jaccal i wszystko działa perfekcyjnie, ale to tylko, że jaccal nie jest odpowiedni dla mojego aplikacja ze względu na użycie zewnętrznego pliku DLL. Nie wiem, dlaczego daje mi to taką odpowiedź.

Odpowiedz

-1

Zasadniczo ten błąd wynika z tego, że polecenie, które przekazujesz, nie jest identyczne.wystarczy (0x80) pierwsze pole jest poprawne lub błędne. Na karcie system operacyjny sprawdza pole pięści z oczekiwaną wartością, jeśli nie pasuje do wysłanego CLA Not Found Exception oznacza kod błędu 6E 00. musisz podać więcej szczegółów na temat tego, co robisz - jaka karta, wersja, zgodność z GP, lista istniejących kart, których technologii używasz. W jakim języku pracujesz. (.net lub java) , więc że mogę ci pomóc.

6

Szereg bloga/wpisów na forum omówić ten problem:

W moich kart sprawa VISA wydają się być "wyrozumiały", ale MasterCard nie są (6E 00). Uwaga, w przeciwieństwie do porady, uaktualnienie do Java 7 nie naprawiło tego dla mnie. Prawdopodobnie przyglądasz się rozwiązaniu sun.security.smartcardio.t0GetResponse i odpowiedziom na obsługę.

zrobiłem następujące czynności, aby uzyskać to działa:

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

Odpowiedzi należy obchodzić się uzyskać odpowiedzi (patrz EMV 4.3 Book 1, rozdział 9.3.1.3). Ten link jest także przydatne:

+1

To jest prawidłowa odpowiedź. Proszę oznaczyć to jako takie. – Brad

+0

Java 8 nadal wymaga tej poprawki. –

Powiązane problemy