Javacard - потеря мощности при сборке мусора

106
10

Я заметил очень странное поведение на своих смарт-картах (NXP J2E145, J3A081, J3C145 с считывателем Omnikey 5121): потеря мощности сразу после вызова метода JavaCard


JCSystem.requestObjectDeletion()

может повредить карту: примерно через 10% таких отключений питания команда ATR работает очень медленно (1000 мс), и я не получаю ответа ни на какие другие APDU (выбор апплета, аутентификация менеджера карт и т.д.).


Я знаю, что поведение requestObjectDeletion() зависит от конкретной реализации поставщика, поэтому мой вопрос довольно широк и открыт...


Собирает ли сбор мусора "обычно" в одной транзакции?


Есть ли какая-либо "официальная" рекомендация НЕ называть requestObjectDeletion() в случае возможной потери питания?


Есть ли у вас какой-либо опыт работы с картами NXP?


EDIT:


    JCSystem.isObjectDeletionSupported() == true на всех моих смарт-картах.

    При попытке подключиться к апплетам менеджера карт поврежденной карты оболочка JCOP в Eclipse IDE сообщает об этом:


    ATR: 3BFB9600008131FE454F4450204D41502053414D3E


    ATR:        T = 1

    jcshell: Неизвестные проблемы с терминалом.
    Последняя ошибка терминала: запрос не может быть выполнен из-за ошибки устройства ввода-вывода.


спросил(а) 2021-01-19T20:50:01+03:00 2 месяца, 3 недели назад
1
Решение
97

Ну, я думаю, это может быть ошибка реализации. В общем, сбор мусора обычно никогда не нужен и никогда не используется на смарт-картах. Вы должны избегать его при любых обстоятельствах с помощью хорошего дизайна апплета. Потому что таким образом вы никогда не сталкиваетесь с проблемами памяти, которые вредны для смарт-карты, установленной один раз в жизни, и могут быть использованы для остальной части жизненного цикла. Сбор мусора в любом случае слишком длинен, и, возможно, этот программный программист не ожидал, что это произойдет за пределами безопасной среды.

ответил(а) 2021-01-19T20:50:01+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема