我注意到我的智能卡上有一些非常奇怪的行为(NXP J2E145,J3A081,带有Omnikey 5121读卡器的J3C145):在调用JavaCard方法后立即断电
JCSystem.requestObjectDeletion()
可能会损坏卡:在大约10%的这种断电后,ATR命令非常慢(1000毫秒),我对任何其他APDU(小程序选择,卡管理器认证等)都没有响应。
我知道requestObjectDeletion()的行为取决于供应商的具体实现,所以我的问题非常广泛和开放......
垃圾收集是否“通常”在一次交易中处理?
是否有任何“官方”建议不要在可能的断电情况下调用requestObjectDeletion()?
恩智浦有没有类似的卡片经验?
编辑:
我认为这可能是一个实现错误。通常,永远不需要在智能卡上使用垃圾收集。
在任何情况下都应该通过良好的applet设计来避免垃圾收集。这样你就不应该遇到内存问题。小程序通常在其生命周期中只安装一次,并且应该可用于卡的其余生命周期。
垃圾收集通常需要很长时间才能正常使用。也许这就是为什么Java Card或底层系统库的程序员不希望它发生在安全环境之外的原因。