Установка апплета Java Card с помощью ACR122

Я новичок в технологии Java Card и только начал читать об этом. Я хочу создать умный апплет для своей карты. Моя цель состоит в том, чтобы он работал с картой, используемой бесконтактно. Я скачал файл jar (GlobalPlatformPro), чтобы установить файл *.cap на карту с помощью NFC Card Reader ACR122. Но, к сожалению, я получил ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: apdu must be at least 2 bytes long
        at javax.smartcardio.ResponseAPDU.check(ResponseAPDU.java:73)
        at javax.smartcardio.ResponseAPDU.<init>(ResponseAPDU.java:67)
        at sun.security.smartcardio.ChannelImpl.transmit(ChannelImpl.java:91)
        at pro.javacard.gp.GlobalPlatform.select(GlobalPlatform.java:203)
        at pro.javacard.gp.GPTool.main(GPTool.java:334)

Мой первый вопрос: можно ли написать апплет с помощью этой читалки? А во-вторых, как бы вы порекомендовали это сделать?


person Krystian    schedule 21.10.2015    source источник
comment
Какую карту вы все-таки используете? Глобальной платформы нет ни на одной карте.   -  person Maarten Bodewes    schedule 23.10.2015
comment
Привет, @vojta Я знаю, что для написания апплета не обязательно иметь кард-ридер. Я хотел сказать, что моя цель - записать файл *.cap на реальную карту. Я только что создал простой проект Java Card. Ошибка была выдана, когда я пытался установить апплет на карту. Я подключил считыватель ACR122 к своему ПК, запустил терминал и выполнил команду: «java -jar gp.jar -install applet.cap». Я использую карты Mifare 1K, которые прилагались к считывателю. Должен ли я купить другую карту?   -  person Krystian    schedule 23.10.2015
comment
@Krystian да, купи другую карту. Mifare 1K — простое хранилище данных, поддержки Java Card нет. Mifare не программируется, он не может запускать какой-либо пользовательский код. Ищите, например, J2A081 от NXP. Или любую SIM-карту Gemalto.   -  person vojta    schedule 23.10.2015
comment
@vojta Не могли бы вы порекомендовать мне какую-нибудь бесконтактную карту?   -  person Krystian    schedule 24.10.2015
comment
@Krystian J3A081, J3E145, оба от NXP...   -  person vojta    schedule 25.10.2015


Ответы (1)


Проблема в том, что вы пытаетесь загрузить апплет на карту, которая не поддерживает ни Global Platform, ни Java Card. Mifare 1K — это простое хранилище данных, оно может хранить некоторые данные, которые вы записываете, используя собственный API. На ней нельзя запускать никакие апплеты, эта карта не "умная".

В сообщении об ошибке говорится, что ответный APDU короче ожидаемого. Ответы Mifare не соответствуют ISO7816, статус ответа состоит только из одного байта, хотя ISO7816 ожидает, что слово состояния будет иметь длину не менее двух байтов.

Ищите другую карту. Он должен поддерживать JCOP, это ключевое слово для поиска.

person vojta    schedule 23.10.2015
comment
Спасибо за вашу поддержку. Мне уже удалось установить свой апплет на виртуальное устройство (поставляется с Java Card SDK). Не могли бы вы предоставить мне ценный учебник по написанию апплета для карты Java? - person Krystian; 24.10.2015
comment
Порекомендуйте вам несколько хороших руководств: 1. ftp.cis .nctu.edu.tw/csie/Documents/Java/javacard/ 2.imcs.dvfu.ru/lib.int/docs/Hardware/Smart%20Card%20Handbook.pdf 3. javacardos.com/javacardforum/viewforum.php?f=31 Надеюсь, это поможет - person grace; 25.10.2015
comment