有没有办法通知Java Card中方法执行的主机开始时间和结束时间?

时间:2015-03-12 18:21:06

标签: javacard

假设Java Card小程序的process方法中有一些方法,重要的是要知道特定的方法何时开始运行[=执行](即调用它时)以及何时开始运行结束。在这种情况下,有没有办法通知主机(读者/用户)方法调用和退出方法?

例如,在以下程序中,了解Method2何时开始执行以及何时结束非常重要:

public void process(APDU apdu) throws ISOException {
    if (selectingApplet()) {
        return;
    }
    Method1(apdu);
    Method2(apdu);
    Method3(apdu);
}

2 个答案:

答案 0 :(得分:2)

JavaCard没有内部时钟(因为智能卡内没有电池)。

要衡量Method2(apdu)的执行时间,您应该:

  1. 在阅读器中测量整个APDU执行时间。
  2. 注释掉Method2并再次测量整个APDU。
  3. 比较结果。
  4. 您可以以类似的方式找出Method2的大致开始时间和结束时间(评论并测量差异)。遗憾的是,JavaCard代码的诊断绝非易事。

答案 1 :(得分:1)

Java Card中没有在线日志。因为它不是安装在您的Windows上的IDEA,以显示服务器日志,如sysout日志。 oncard和offcard应用程序之间唯一的通信方式是APDU。 有两种方式可以让你用它们来达到你想要的任何东西:

1)简单的方法。如果要测试Method2是否撕裂,只需对每种方法使用不同的指令。意味着对方法2使用InsX,如果applet使用InsX接收APDU,则调用Method2。现在您知道Method2何时正在调用,您可以并行测试撕裂。

2)您可以使用逻辑通道并使用多选小程序。在此解决方案中,您可以同时在可选模式下使用两个小程序,您可以使用其他小程序随时向您发送APDU。有关逻辑通道的更多信息,请参阅here