Предположим, что в апплете Java Card есть ошибка: временный массив байтов хранится в EEPROM, а не в RAM. Кроме того, предположим, что этот массив байтов перезаписывается с каждым APDU.
Этот баг рано или поздно должен повредить карту.
Какие симптомы мы можем ожидать? Неверные значения в массиве без каких-либо явных предупреждений или ошибок? Некоторые исключения, возникающие при доступе к этому массиву? Апплет нельзя выбрать? Вся карта полностью не отвечает?
Должна ли карта быть повреждена «раз и навсегда», или эти сбои будут происходить все чаще и чаще?
В моем эксперименте (J2E145) был первый сбой после 5 000 000 APDU и симптомом было то, что карта вообще не отправляла R-APDU и просто умерла. Однако следующий APDU снова был в порядке, затем примерно 1 APDU из 10000 вышел из строя (с увеличением частоты) и, наконец, после 5 100 000 APDU карта перестала обмениваться данными навсегда.
Есть ли какой-либо стандарт, который говорит, что должно произойти в случае повреждения EEPROM? (Искала, но не нашла.)
Я знаю, что вопрос широкий и, вероятно, зависит от конкретного чипа (особенно меня интересуют чипы NXP), но я думаю, что ваши комментарии, ответы и опыт могут помочь многим разработчикам Java Card, которые обнаружили ошибку в своем коде после развертывания.