SmartCard ATR更改未反映在代码中

时间:2014-07-15 09:21:32

标签: java c++ smartcard

我正在使用带有C ++(Windows API)和Java的SmartCard API。

删除操作系统后,我遇到了获取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 Code也是如此。我想显示新的ATR,但无法更新ATR。

任何人都可以帮助我吗? 感谢。

1 个答案:

答案 0 :(得分:1)

通过删除操作系统,您远离任何标准使用智能卡,任何解释都是可能的。读卡器,智能卡读卡器驱动程序,资源管理器或任何其他人可以依赖这样的事实,即如果没有插入新的智能卡,旧的ATR仍然有效并且只是提供先前数据的缓存副本。 (请注意,除了来自ATR的历史字节之外的所有字符都与卡和读卡器之间的通信相关联,并且没有理由进行更改)。在现实生活中,允许擦除操作系统等任何事情都是非常危险的。

我怀疑,您附加了ATR的含义,最好放在用户数据对象中。