我有一个应用程序,RESET Privilege是重置后默认选择的应用程序。
我的应用程序有一个日志记录机制,可以确切地说明对卡的请求是什么。根据当前状态,我有几个动态响应。我还用卡片间谍检查了这种行为。
所有APDU正在被正确转发到我的应用程序,包括那些不属于它的SELECT并且与卡上的任何其他应用程序都不匹配。
然而,当接收SELECT DF下一次出现时(A4 04 02),这不会发生。相反,卡片返回以下SW:6A85-条件不满意。
现在..我理解卡可能正在做什么,这是检查当前是否选择了具有相同AID的应用程序,并尝试选择具有相同ID的下一个应用程序。 (情况并非如此。卡上没有冲突的AID。)
我的问题是:如果没有安装匹配的应用程序,卡OS是否应该转发此APDU?对于已经选择了应用程序的选择,这是假设的行为。
另一个问题:有没有办法解决/规避这个问题,或者您认为这可能是操作系统错误?或者根本不是这样的情况?
示例:
Card Reset
-> 00 A4 04 00 07 AIDx7..
<- My Applet 90 00
-> 00 A4 04 02 07 AIDx7...
<- Card 6A 85
Moves on to other selects
My applet is still selected.
我正在使用恩智浦JCOP3卡。
提前致谢。
答案 0 :(得分:3)
引用GlobalPlatform Card Specification Version 2.3,第68页:
6.4.2.1.2基本逻辑信道的显式选择
....有些段落跳过....
运行时行为
以下要求适用于显式应用程序选择中的OPEN(SELECT [按名称]) 基本逻辑信道上的处理(如果卡生命周期状态为,则此行为不适用 终止):
....几个案例被跳过....
如果根本找不到完全匹配或部分匹配,则基本逻辑通道上当前选定的应用程序 应保留所选应用程序和
如果SELECT [by name]命令设置了[first or only occurrence]参数,则SELECT 命令被分派到应用程序。
如果SELECT [by name]命令设置了[next occurrence]参数,则OPEN应该 将适当的错误返回给卡外实体。
与您描述的行为完全匹配(需要说明您的JCOP可能受某些早期版本的GlobalPlatform卡规范约束)。
关于第二个问题:
我敢打赌,没有一种简单的方法可以使用您的特定卡来修复/规避这一点。
还有其他卡的工作方式不同 - 使用哪种卡取决于您的使用情况。