изменение SmartCard ATR не отражено в коде

Я работаю с SmartCard API с C ++ (Windows API) и Java также.

У меня проблема с получением ATR после удаления ОС.
Мое приложение сделано для удаления ОС со SmartCard. При удалении ОС ATR карты меняется, но это не отражается в моем коде. После удаления ОС я по-прежнему получаю тот же ATR, но при перезапуске приложения отображается правильный ATR.

Фрагменты моего кода.

CardConnect();
getATR(); //get correct ATR
eraseOS(deleteOScmd,size); //Erasing OS

CardConnect(); //again connecting
getATR();      // againg try to get ATR but shows same as first call.

То же самое происходит и с Java-кодом. Я хочу показать новый ATR, но не могу получить обновленный ATR.

Кто-нибудь может мне помочь?
Благодарю.

0

Решение

Удаляя ОС, вы настолько далеко от стандартного использования смарт-карт, что любое объяснение возможно. Считыватель, драйвер устройства чтения смарт-карт, менеджер ресурсов или кто-либо еще может полагаться на тот факт, что в случае, если новая смарт-карта не была вставлена, старый ATR все еще действует и просто предоставляет кэшированную копию предыдущих данных. (Обратите внимание, что все, кроме исторических байтов из ATR, связаны с обменом данными между картой и считывателем, и нет никаких причин для изменения). В реальной жизни довольно опасно допускать что-либо подобное стиранию ОС.

Я подозреваю, что вы добавляете значение к ATR, которое лучше поместить в объект пользовательских данных.

1

Другие решения


По вопросам рекламы [email protected]