我正在使用Java与C++ (Windows API)和SmartCard。
我在删除操作系统后获取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。
有人能帮我吗?谢谢。
发布于 2014-07-15 20:01:31
通过删除操作系统,您将远离智能卡的任何标准使用,以至于任何解释都是可能的。读取器、智能卡读取器驱动器、资源管理器或任何其他人可以依赖这样一个事实,即在没有插入新智能卡的情况下,旧ATR仍然有效,并且仅提供先前数据的高速缓存副本。(请注意,除了来自ATR的历史字节之外,所有其他字节都与卡和读取器之间的通信相关,因此没有理由进行更改)。在现实生活中,允许操作系统擦除之类的事情发生是相当危险的。
我怀疑,您为ATR赋予了一种含义,这种含义最好放在用户数据对象中。
https://stackoverflow.com/questions/24754401
复制相似问题