[SIMt插入手机时收到0x6985,Applet卸载不起作用

问题描述 投票:2回答:1

过去一周,我在一个奇怪的情况下苦苦挣扎。我正在尝试删除一个applet,并且我收到0x6985作为删除命令的响应。

场景:

  1. 小卡X存在于Sim卡中。
  2. Sim卡已插入手机。
  3. 一个Android应用程序将从服务器接收命令,并将这些命令通过Telephony Manager发送到Sim Card。
  4. 服务器控制所有命令,并具有用于身份验证和所有AID的所有必需的KEY。
  5. Android应用程序充当将命令引导到Sim卡并将响应发送回服务器的桥梁。

Applet在我的生态系统中如何相互连接?

  • 还有一个小程序,即Y,它保存小程序的引用,即X。[我知道,只有在Y释放X小程序的引用后,删除操作才起作用。
  • 在X applet的uninstall()方法中,我正在通过共享接口调用Y applet,并在那里释放了X applet的引用。

问题场景:

  • 当我发送X小程序的删除命令时,可以通过阅读器在离线模式下使用。它已成功删除。
  • 为了验证Y小程序是否正在从X小程序中调用,我在Y小程序中存在的一个缓冲区中设置了一些数据。 [这确认Y applet接到了电话,并且引用以这种方式成功释放。我通过一些内部设计的命令获得了此缓冲区数据,该命令确认是否发生了。]

SIM卡在手机中的情况

  • 当服务器发送X小程序的删除命令时,作为响应,我得到0x6985。

  • 我调用Y小程序,并检查Y的缓冲区中存在哪些数据,这些数据负责X接收的呼叫的责任。在那里,从未收到来自X的呼叫。

使用读卡器在非移动状态下的情况

  • 使用PCSC阅读器,将删除命令发送到X。AppletX成功删除。

  • Y小程序的缓冲区数据确认已从X小程序接收到呼叫。

[我的观察:我尝试了所有可能的方法来完成此任务,但每次都失败。小程序X和Y的上限文件是相同的,即在移动电话中和通过读卡器使用。我觉得电话管理器存在一些问题,因为我在这里找不到其他人,但我缺乏电话管理器的经验。非常感谢您对此主题的任何帮助。

applet javacard telephonymanager globalplatform
1个回答
0
投票

如果使用不同的卡,可能会在实现上有所不同。通常,只有在没有其他Applet对其引用的情况下,才应删除该Applet。即使if在删除时删除引用是一个有效的选项,我也想知道OS制造商是否总是会正确处理该部分:您仅在选择删除后才调用uninstall,并且您仅在您知道没有更多引用的情况下将其删除-相当不错的捕获22。

问题也可能是使用了Applet X(甚至可能是Y)的实例之一。如果是这种情况,那么删除也将不可用。我不确定您的卡实施是否选择两个上下文;这些不是多核野兽。

最终调试6985很难。 ISO 7816状态字更多地是关于语法而不是语义。他们只会给您最少的信息。 6985等效于“运行时错误”,是的,恐怕您会花费很多时间进行调试。

© www.soinside.com 2019 - 2024. All rights reserved.