Установка апплета на карту JavaCard

Я пытаюсь установить апплет на карту JavaCard с помощью GlobalPlatformPro, однако продолжаю получать код ошибки 6985 — условия использования не выполнены. Я провел некоторое исследование и обнаружил, что это может означать, что карта заблокирована?

Установка апплета - это первое, что я попытался сделать, когда получил эту ошибку, поэтому я (по крайней мере, намеренно) не заблокировал ее сам.

При перечислении всех апплетов на карте мой апплет есть, но указан как «ЗАГРУЖЕННЫЙ», а не «ВЫБОРНЫЙ», как я считаю, что он должен быть.

Есть ли способ заблокировать карту? Или это другая проблема?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша карта не заблокирована. Если карта заблокирована, вы больше не можете перечислять апплеты. Взаимная аутентификация также не удастся, только «выбор приложения с привилегией конечного приложения». по ГП 2.3.1 возможно.

Если апплет смог загрузиться, но не установиться, т.е. загрузка прошла успешно и пакет находится на карте, но инстанцирование не удалось, то обычно это означает, что в конструкторе или методе install выброшено исключение. Отлаживайте свой код, удаляя код, пока установка не найдет ошибочную строку кода. Также может быть, что на карте уже есть апплет с таким же экземпляром AID.

Спасибо, что вернулись ко мне! Мне удалось установить и запустить тот же апплет на другом типе javacard, поэтому я не думаю, что в коде метода установки есть ошибка. Я попытался создать еще один тестовый апплет с другим AID, который уже есть на карте, и все равно получаю ту же ошибку.

LozCodes 24.03.2022 15:20

@LozCodes Пожалуйста, попробуйте отладить апплет, похоже, ошибка связана с картой. Используйте очень простой апплет, например. апплет Hello World Двоичный код: github.com/sigma/globalplatform/blob/master/gpshell/… Код: github.com/sigma/globalplatform/tree/master/helloworldapplet Это устанавливается?

k_o_ 24.03.2022 19:47

@LozCodes Возможно, вы используете API или версию API, которая не поддерживается картой. Используете ли вы связанные с ETSI API для меню и упреждающих команд? Некоторым картам также не нравятся статические или окончательные классификаторы для некоторых переменных или, возможно, вы выделяете массив, а карте не хватает памяти.

k_o_ 24.03.2022 19:50

Я получаю ту же ошибку при попытке установить этот апплет hello world. Метод установки в моем апплете точно такой же, как и в апплете hello world. При запуске global platform pro -debug это первая команда, которая получает ошибку: A>> T=1 (4+0010) 84F24002 0A 4F00388842F7FE5439BC 00 A<< (0000+2) (65ms) 6A88 статические или окончательные переменные — как узнать, какую версию API я использую?

LozCodes 25.03.2022 15:09

@LozCodes Но пакет апплета hello world установлен, но не создан? Можете ли вы добавить некоторую логику в конструктор или метод install, например. ISOException.throwIt(0x6f00)? Выбрасывается ли это исключение? Если даже это не достигнуто, попробуйте изменить параметры установки: ограничение пространства данных, ограничение энергонезависимого пространства кода, ограничение энергозависимого пространства кода = размер кода, вся используемая постоянная память, использование ОЗУ. По крайней мере, попробуйте установить предел пространства данных на более высокое значение, например. 5000, что намного больше, чем размер апплета, и дает энергонезависимое пространство для кода, ограничивающее размер 1000.

k_o_ 25.03.2022 21:04

Мне удалось найти случайную статическую переменную, которую я не осознавал, что использую, и мне удалось установить ее. Я все еще не мог установить апплет HelloWorld, но думаю, что это может быть связано с тем, что у него тот же AID, что и у другого апплета. Большое спасибо за вашу помощь. Есть ли какая-то конкретная причина, по которой некоторым картам не нравятся статические или окончательные переменные, или это лучше задать в другом вопросе?

LozCodes 29.03.2022 17:35

@LozCodes С этим вопросом, почему статическая переменная вызывает проблемы, необходимо обратиться к поставщику карты. Это ошибка среды выполнения JavaCard. У меня также было это в прошлом, обычно со старыми картами. Я не знаю, проводится ли сертификационный тест перед тем, как Java Card можно будет назвать Java Card, возможно, это также самосертификация, в противном случае я бы не ожидал, что эта проблема будет существовать в продуктивных картах.

k_o_ 29.03.2022 21:43

Я свяжусь с продавцом и спрошу - спасибо за помощь!

LozCodes 31.03.2022 13:37

Другие вопросы по теме