防止java卡中的文件更新

时间:2015-07-27 06:00:03

标签: applet javacard

我正在研究一个Java卡小程序。在applet中,我能够使用以下代码使用processtoolkit()中的案例识别正在更新的文件。我也能够识别文件ID,但根据我的要求,我想在文件更新之前知道文件ID,如果可能的话,我想阻止这个特定文件的更新。有没有办法在文件更新之前识别文件ID并阻止文件更新?因为在更新文件后触发了以下情况。简而言之,我想阻止文件6F30的文件更新。

public void processToolkit(byte bEvent)
{
 switch((byte)bEvent)
        {
          case EVENT_TRANSPARENT_FILE_UPDATE:
               EnvelopeHandler envHdlr = EnvelopeHandler.getTheHandler();

               ggsLenVar = (short)((short)(envHdlr.findAndCopyValue(TAG_FILE_LIST, fci,  (short) 0)) & (short)0x00FF);

               if(((fci[0x05] == 0x6F) && (fci[0x06] == 0x30)))
               {}
        }
}

2 个答案:

答案 0 :(得分:2)

您无法阻止文件更新,在applet上,只有在通过外部实体更新任何透明文件时才能获得事件。 因为文件更新转到操作系统,并且通过此事件小程序只能通知文件已更新。 您可以做的一件事是在接收到此事件时使用所需内容重新更新文件,或者您可以将更新条件设置为从不。

答案 1 :(得分:1)

是的,您无法通过applet阻止文件更新,但是一种解决方法,您可以在启动时EF 6F30)&可以恢复此EVENT上的值,或者Anurag说可以使用所需的值更新。

将文件访问设置为从不会导致手机行为出现某些故障,因为GSM 11.11说更新条件必须为EVENT_FIRST_COMMAND_AFTER_RESET

祝你好运!