2014-09-10 23 views
0

据我们所知,当我们在卡上选择一个小应用程序时,该小应用程序保持选定的小应用程序,直到我们发送另一个SELECT命令。我们发送给卡的每个命令(SELECT命令除外)都直接转到选定的小程序。为不同的SELECT命令返回不同状态字的小应用程序

我想知道,是否可以编写一个在不同SELECT命令中具有不同响应的小程序?我的意思是,我可以写一个AID=010203040506的小程序并选择它。现在,当我发送00 A4 04 00 06 665544332211它返回APP1,当我发送00 A4 04 00 06 112233445566它返回APP2

更新: 对于某些十六进制数据,APP1和APP2只是两个不同的ASCII码!用另一个词来说吧。我想返回HelloWorld00 A4 04 00 06 665544332211 APDU命令并返回ByeBye00 A4 04 00 06 112233445566。我的意思是,当我发送00 A4 04 00 LC AID时,我想阻止OPEN或...选择另一个Applet。我想处理SELECT命令!

+0

发送小程序时应该返回什么00 A4 04 00 06 665544332211?请解释一下APP1和APP2的含义。 – Shuckey 2014-09-11 06:04:58

+0

这个问题似乎还不清楚。你是什​​么意思通过返回APP1/2。一个Applet只能返回字节码。 – 2014-09-11 20:18:03

+0

@Shuckey APP1和APP2只是一些十六进制数据的两种不同的ASCII码!用另一个词来说吧。我想为'00 A4 04 00 06 665544332211' APDU命令返回'HelloWorld',并返回'ByeBye'为'00 A4 04 00 06 112233445566'。我的意思是,当我发送'00 A4 04 00 LC AID'时,我想阻止OPEN或...选择另一个Applet。我想处理SELECT命令! – TheGoodUser 2014-09-12 05:02:06

回答

1

请参阅的第4.6.2章Java Card 3平台运行时环境规范,版本3.0.4,2011年9月。该规范免费提供,开始搜索Main page for Java Card documentation,你会很容易找到它。

这一切都归结到这一点:

如果安装了该卡和小程序AID 010203040506的小程序AID 112233445566安装和选择(在任何逻辑通道),您00A4040006112233445566选择文件APDU(或SELECT在任何其他逻辑通道上的FILE APDU)会导致JRE尝试选择小应用程序112233445566。无法阻止此选择尝试,并且不会将命令传递到010203040506小程序的处理方法。

+0

这意味着,来自离卡实体的APDU命令不会直接转到选定的小程序?在去Applet之前,通过OPEN或别的东西进行检查而不是SELECT命令? – TheGoodUser 2014-09-12 15:00:40

+1

@TheGoodUser每个APDU首先由JRE解析,如果它是SELECT并且安装了小程序,则尝试进行选择。否则,它将按原样转发到当前选定的小程序。如果applet被成功选择,那么这个完全相同的SELECT APDU将按原样转发到新选择的applet。 RTFM :-) – Shuckey 2014-09-15 08:54:31

+0

好的,谢谢。我会读TFM:D – TheGoodUser 2014-09-15 09:45:01

相关问题