下面引用的文章是一篇名为《如何编写Java卡小程序:开发人员指南》的文章的一部分,作者是陈志群。
我在这里看到了
一旦选择了一个小应用程序,JCRE就会将所有后续的APDU命令(包括SELECT命令)转发给小应用程序的进程()方法。在进程()方法中,小应用程序解释每个APDU命令,并执行命令指定的任务。对于每个命令APDU,小应用程序通过发回响应APDU来响应CAD,该响应APDU将处理命令APDU的结果通知CAD。javacard.framework.Applet类中的进程()方法是一种抽象方法:Applet类的子类必须重写此方法才能实现小应用程序的功能。”
更新:
下面这段话也是一篇名为编写JavaCard小程序的Oracle文章的一部分(此处):
检查标题
process方法检查APDU头的前两个字节,即CLA字节和INS字节。如果CLA字节的值为0,INS字节的值为0xA4,则表示这是SELECT APDU命令的头。在这种情况下,process方法将控制权返回给JCRE:
// check SELECT APDU command
if ((buffer[ISO7816.OFFSET_CLA] == 0) &&
(buffer[ISO7816.OFFSET_INS] == (byte) (0xA4)) )
return;
如果JCRE将SELECT App2 APDU命令发送给App1的process()方法,那么在收到来自它的返回后会发生什么?!
如果JCRE在接收到SELECT App2 APDU命令后立即调用app1的DISELECT(),然后调用App2的SELECT(),那么它在从App2 SELECT()方法接收到true后会做什么?它会等待下一个命令吗?
问题1:根据以上段落(特别是粗体部分),我得出结论,我可以编写一个小程序,当它选择时,不可能选择另一个小程序(直到卡从CAD中移除)。为此,我们只需要在其process()
方法中编写一个代码,以便在收到select APDU
命令时选择自身。是这样吗?
问题2:有没有办法在不发送另一个选择命令或从CAD中删除卡片的情况下取消选择小程序?
问题3:是否可以在另一个活动小程序的后台以保持活动的方式编写小程序?(有点像计算机中的钥匙记录器)我自己认为这是不可能的,因为java卡与多线程不兼容。是这样吗?
感谢任何帮助。
问题0:如果收到按名称选择,JCRE将检查APDU partialEquals()中指定的AID是否有JCRE注册的AID。如果JCRE没有注册此类帮助,则按名称选择APDU将发送到当前选定的小程序。如果JCRE注册了此类辅助,则无论当前选择的小程序是什么,当前选择的小程序都将被取消选择(调用deselect()),并选择具有匹配辅助的小程序(调用select()并将selectingApplet()=True传递给process())。
Q0(更新):如果收到未选择当前小程序的按名称选择,则:
desSelect
方法进程
方法Q1:不会。系统在将所有SELECT转发给Applet进程
方法之前,仍然会按NAME APDU处理所有SELECT。因此,在将SELECT发送到当前选择的小应用程序之前,可以选择另一个Applet,而新选择的Applet将接收APDU。
请注意,如果在当前小程序的帮助下收到按名称选择,系统甚至会重新选择当前小程序(因此,取消选择时清除的所有内存和对象都将被清除,并且将调用选择
和取消选择
方法)。
请注意,后来的API(Chen的书仍然适用,但有点过时)添加了一种方法来检查APDU是否用于选择当前的小程序。这也有助于检查它是如何选择的,这主要是在默认情况下,即在收到任何APDU之前,也选择了小程序时很有用。
Q2:不,目前没有。这是棘手的功能,将有防火墙和安全的影响。所以这不会是一个小的更新Java卡标准。它出现了相当多的论坛虽然。你可能会访问其他小程序通过防火墙当然。
问题3:确实没有背景任务。添加多线程将彻底破坏Java Card Classic Edition的API,因此它永远不会被添加。要共享信息,两个小程序必须明确设计为共享信息,防火墙规则将生效。
我目前正在尝试用cubey地形制作一个基本游戏,类似于Minecraft classic。我的第一个问题: 如何在VBO中存储多维数据集列表,然后在更改该数据时重新生成该列表?我当前呈现的立方体如下所示: 我知道我需要使用和来修改VBO,但是如何存储多维数据集并在需要时删除它们?我应该使用ArrayList吗?另外,有人告诉我,我渲染立方体的方式是错误的,因为每个人都说我只渲染一个具有新坐标的立方
如果我想为spring quartz使用cron触发器,quartz是使用java系统时间还是操作系统时间执行作业? 我计划有一个属性文件来保存我所有的cron触发器。如果有人去更改cron触发器以执行一个任务,那么quartz会自动接收文件中的更改吗?或者,如果这不是默认行为,我有没有办法告诉quartz如何执行此操作。 我最近一直在读spring批处理管理控制台。听起来像是一个很好的重新安排作
做作业的时候,算法的实现洪流填满了。我正在为这个指南编写一个程序:http://en.wikipedia.org/wiki/flood_fill。我有一些问题: 指定函数中的参数替换任何字符的颜色是否正常,我不知道这些坐标最初是什么颜色? 算法正确吗?例如,我在维基百科中编写了它,但我的程序的结果如下: 我的代码:
> 我在多个地方读到,由于U2F没有用户的概念,所以它可以用作登录的因素之一(在MFA中),但对于无密码来说并不理想,而webauthn有用户的概念,这可以帮助使用无密码。我的问题是webauthn为允许这样做而增加的额外内容是什么?是的,我们在创建凭据时传递用户信息,但最终返回的是一个凭据id(它似乎非常类似于keyhandle)并用于关联用户(在服务器上)。据我所知,webauthn def的
上图是一个 wordpress 主题的文件部分结构 一直弄不懂 front-page.php, home.php 这两个文件到底有什么区别? 都是代表首页吗? home.php 和 single.php 又有什么区别? 如果查看单篇文章会进入 single.php, 那 home.php 为什么会被叫做文章页? 文件有点混淆, 求大佬指点指点..
本文向大家介绍关于shell的几个不为人知却十分有用的命令分享,包括了关于shell的几个不为人知却十分有用的命令分享的使用技巧和注意事项,需要的朋友参考一下 最近一直在使用Linux操作系统,也熟知一些简单的命令,那么下面我将介绍几个不为人知却十分有用的命令: 1.mtr命令,查看mtr运行的主机和某个网站的直接网络连接,如下 mtr google.com 显示一下内容 2.nl命令,给所查看的