Javacard 全局平台锁定卡()始终返回false

Javacard 全局平台锁定卡()始终返回false,javacard,Javacard,我制作了一个测试小程序,并用card lock priv安装了它 Jcop插件正在返回- Card Manager AID : A000000151000000 Card Manager state : INITIALIZED Application: SELECTABLE (---L----) A0A1A2A3A4A5A6 i、 应用程序具有卡锁定权限 我锁定卡的小程序代码如下所示:- boolean check = GPSystem.lockCard();

我制作了一个测试小程序,并用card lock priv安装了它

Jcop插件正在返回-

Card Manager AID   :  A000000151000000
Card Manager state :  INITIALIZED

    Application:  SELECTABLE (---L----) A0A1A2A3A4A5A6 
i、 应用程序具有卡锁定权限

我锁定卡的小程序代码如下所示:-

boolean check = GPSystem.lockCard();
                if(check == true)
                    ISOException.throwIt((short)0x6308);
                else
                    ISOException.throwIt((short)0x6309);
                break;
这总是返回0x6309,我把这段代码放在Select file INS中

??>  /send 00a40000023f00
 => 00 A4 00 00 02 3F 00                               .....?.
 (55766 usec)
 <= 63 09                                              c.
Status: 0x6309
??>/send 00a40000023f00
=>00 A4 00 00 02 3F 00。。。。。?。
(55766USEC)
/选择A00000151000000
=>00 A4 04 00 08 A0 00 00 01 51 00 00 00 00…Q。。。。
(73117 usec)
/发送80f0400f07a0a1a2a3a4a5a6
=>80 F0 40 0F 07 A0 A1 A2 A3 A4 A5 A6。。。。。。。。。
(18060 usec)
/选择A00000151000000
=>00 A4 04 00 08 A0 00 00 01 51 00 00 00 00…Q。。。。
(73117 usec)
/发送80f0400f07a0a1a2a3a4a5a6
=>80 F0 40 0F 07 A0 A1 A2 A3 A4 A5 A6。。。。。。。。。
(18060 usec)
/选择A00000151000000
=>00 A4 04 00 08 A0 00 00 01 51 00 00 00 00…Q。。。。
(67801USEC)
初始化更新255
=>80 50 00 00 08 D1 DB C6 FD 59 68 54 C5 00.P.…YhT。。
(176650 usec)
ext auth plain
=>84 82 00 00 10 CC D9 3C 88 3A E1 B6 A9 C1 B9 E8。。。。。。。80 F0 40 0F 07 A0 A1 A2 A3 A4 A5 A6。。。。。。。。。
(33521 usec)

您可能需要将卡的生命周期状态从已初始化更改为安全。然后您就可以成功锁定您的卡

在v2.2.1规范上现有GP v2.1.1实现映射指南的第7.1.7部分lockCard()中,它显示“如果当前卡生命周期状态不安全,则返回false。”


它意味着使用类似-GPSystem.setCardContentState(GPSystem.CARD\u安全)的代码从Process()开始;然后调用lock函数就足够解决我的目的了。你应该使用SET STATUS命令来改变卡的生命周期状态。请参考GlobalPlatform卡规范2.2.1“11.10设置状态命令11.10.1定义和范围”中的设置状态命令说明。设置状态命令应用于修改卡的生命周期状态或应用程序的生命周期状态。您的意思是在选择小程序之前,需要启动设置状态命令,如\u应用程序的-80 F0 40 0F Lc AID\u,并从进程()中实现锁定卡()。你的意思是?卡片状态和应用程序状态都是一样的吗?是的,你说得对!但对于第二个问题,卡状态与应用程序状态不同。此处引用了GlobalPlatform卡规范2.2.1“5.1卡生命周期发卡机构安全域继承卡生命周期状态”中的状态。请发送命令>>80 F0 80 0F 00将卡生命周期状态更改为安全状态。
Card Manager AID   :  A000000151000000
Card Manager state :  INITIALIZED

    Application:  SELECTABLE (---L----) A0A1A2A3A4A5A6  
??>  /select a000000151000000 
 => 00 A4 04 00 08 A0 00 00 01 51 00 00 00 00          .........Q....
 (73117 usec)
 <= 6F 10 84 08 A0 00 00 01 51 00 00 00 A5 04 9F 65    o.......Q......e
    01 FF 90 00                                        ....
Status: No Error
??>  /send 80f0400f07a0a1a2a3a4a5a6
 => 80 F0 40 0F 07 A0 A1 A2 A3 A4 A5 A6                ..@.........
 (18060 usec)
 <= 69 85                                              i.
Status: Conditions of use not satisfied
Card Manager AID   :  A000000151000000
Card Manager state :  INITIALIZED

    Application:  SELECTABLE (---L----) A0A1A2A3A4A5A6  
??>  /select a000000151000000 
 => 00 A4 04 00 08 A0 00 00 01 51 00 00 00 00          .........Q....
 (73117 usec)
 <= 6F 10 84 08 A0 00 00 01 51 00 00 00 A5 04 9F 65    o.......Q......e
    01 FF 90 00                                        ....
Status: No Error
??>  /send 80f0400f07a0a1a2a3a4a5a6
 => 80 F0 40 0F 07 A0 A1 A2 A3 A4 A5 A6                ..@.........
 (18060 usec)
 <= 69 85                                              i.
Status: Conditions of use not satisfied
??>  /select a000000151000000 
 => 00 A4 04 00 08 A0 00 00 01 51 00 00 00 00          .........Q....
 (67801 usec)
 <= 6F 10 84 08 A0 00 00 01 51 00 00 00 A5 04 9F 65    o.......Q......e
    01 FF 90 00                                        ....
Status: No Error
??>  init-update 255
 => 80 50 00 00 08 D1 DB C6 FD 59 68 54 C5 00          .P.......YhT..
 (176650 usec)
 <= 00 00 50 04 00 03 8B 5B 12 CE 01 02 00 04 E9 7A    ..P....[.......z
    E0 17 6D 62 E0 56 89 DE 7E 59 88 81 90 00          ..mb.V..~Y....
Status: No Error
??>  ext-auth plain
 => 84 82 00 00 10 CC D9 3C 88 3A E1 B6 A9 C1 B9 E8    .......<.:......
    2A 6B 90 FE 50                                     *k..P
 (148237 usec)
 <= 90 00                                              ..
Status: No Error
??>  /send 80f0400f07a0a1a2a3a4a5a6
 => 80 F0 40 0F 07 A0 A1 A2 A3 A4 A5 A6                ..@.........
 (33521 usec)
 <= 69 85                                              i.
Status: Conditions of use not satisfied