我通过 Eclipse 制作了流行的“Hello World”javacard 代码的 .cap 文件
现在我想通过 GPShell 和 ACR38 智能卡读卡器将其加载到真正的 javacard 中。
问题:我需要任何密钥才能将 .cap 文件加载到卡中吗?我的意思是,我应该在将小程序上传到卡中之前进行身份验证还是没有必要?
我认为认证是强制性的。未经认证就上传.cap是不合理的。但我不知道如何进行身份验证。
问题:这有什么问题吗?
C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
javax.smartcardio.CardException: connect() failed
at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
Caused by: sun.security.smartcardio.PCSCException: SCARD_E_SHARING_VIOLATION
at sun.security.smartcardio.PCSC.SCardConnect(Native Method)
at sun.security.smartcardio.CardImpl.<init>(Unknown Source)
... 2 more
Found card in terminal: ACS CCID USB Reader 0
java.lang.NullPointerException
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
Found card in terminal: ACS CCID USB Reader 0
ATR: 3B 7F 94 00 00 80 31 80 65 B0 85 02 02 ED 12 0F FF 82 90 00
DEBUG: Command APDU: 00 A4 04 00 07 A0 00 00 01 51 00 00
DEBUG: Response APDU: 6A 82
Failed to select Security Domain GP211 A0 00 00 01 51 00 00 , SW: 6A 82
DEBUG: Command APDU: 00 A4 04 00 08 A0 00 00 00 18 43 4D 00
DEBUG: Response APDU: 6F 65 84 08 A0 00 00 00 18 43 4D 00 A5 59 73 4A 06 07 2A 8
6 48 86 FC 6B 01 60 0C 06 0A 2A 86 48 86 FC 6B 02 02 01 01 63 09 06 07 2A 86 48
86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B 04 01 05 65 0B 06 09 2B 85 10 86 48 64
02 01 03 66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02 9F 6E 06 12 91 20 11 02 02 9
F 65 01 FF 90 00
Successfully selected Security Domain GemaltoXpressPro A0 00 00 00 18 43 4D 00
DEBUG: Command APDU: 80 50 00 00 08 17 2A 53 4F AC DF 8D 16
DEBUG: Response APDU: 69 82
javax.smartcardio.CardException: Wrong initialize update, SW: 69 82
at net.sourceforge.gpj.cardservices.GlobalPlatformService.openSecureChan
nel(Unknown Source)
at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
tnx
响应码6A 82
是用来Security_Status_Not_Satisfied
.
关于选择Security Domain
,该状态字可能由于以下两个原因之一而出现:
任一卡Life Cycle State (CLCS)
卡的数量是LOCKED
or TERMINATED
,因此不允许选择安全域,因为如果 CLCS 为LOCKED
那么只能选择具有卡锁权限的安全域和/或应用程序,并且如果 CLCS 为TERMINATED
那么如果安全域具有最终应用程序权限,则仅应处理 GET DATA 命令,所有其他命令应被禁用并应返回错误。如果 CLCS 为LOCKED
然后尝试选择具有卡锁定权限的安全域和/或应用程序,并尝试将卡生命周期状态 (CLCS) 移至SECURED
using SETSTATUS
命令的帮助下SCP session
,否则如果 CLCS 是TERMINATED
那么 CLCS 就无法切换回 SECURED,因为此状态是不可逆的。
OR the Security Domain
,您尝试选择的本身位于LOCKED
状态,在这种情况下,安全域可能会被 OPEN 阻止进一步选择,并且返回错误状态字。
@CLCS - 卡生命周期状态。
很高兴能帮助你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)