首页 文章

Applet没有收到带有下一次出现的JavaCard SELECT

提问于
浏览
2

我有一个应用程序,RESET Privilege是重置后默认选择的应用程序 .

我的应用程序有一个日志记录机制,可以准确地告诉我对卡的请求是什么 . 根据当前状态,我有几个动态响应 . 我还用卡片 Spy 检查了这种行为 .

所有APDU都正确地转发到我的应用程序,包括那些不属于它的SELECT,并且与卡上的任何其他应用程序都不匹配 .

但是,当接收SELECT DF下一次出现时(A4 04 02),这不会发生 . 相反,卡返回以下SW:6A85-条件不满意 .

现在..我理解卡可能正在做什么,这是检查当前是否选择了具有相同AID的应用程序,并尝试选择具有相同ID的下一个应用程序 . (事实并非如此 . 卡上没有冲突的AID) .

My question is :如果没有安装匹配的应用程序,卡OS是否应该转发此APDU?对于已经选择了应用程序的选择,这是假定的行为 .

Another question :有没有办法解决/规避这个问题,或者您认为这可能是操作系统错误?或者根本不是这样的情况?

例:

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卡 .

提前致谢 .

1 回答

  • 3

    引用GlobalPlatform Card Specification Version 2.3,第68页:

    6.4.2.1.2基本逻辑信道的显式选择

    ....一些段落跳过....

    运行时行为以下要求适用于基本逻辑通道上的显式应用程序选择(SELECT [按名称])过程中的OPEN(如果卡生命周期状态为TERMINATED,则此行为不适用):

    ....几个案例跳过....

    如果根本找不到完全匹配或部分匹配,则基本逻辑通道上当前选定的应用程序将保留为选定的应用程序,如果SELECT [by name]命令设置了[first or only occurrence]参数,则SELECT命令为发送到应用程序 . 如果SELECT [by name]命令设置了[next occurrence]参数,则OPEN将向卡外实体返回相应的错误 .

    这与您描述的行为完全匹配(需要说明您的JCOP可能受某些早期版本的GlobalPlatform卡规范的约束) .


    对于第二个问题:

    • 我的赌注是没有半简单的方法可以使用你的特定卡来修复/规避这个问题 .

    • 还有其他卡的工作方式不同 - 使用哪种卡取决于您的用例 .

    祝好运!

相关问题