martinpaljak / GlobalPlatformPro

🌐 🔐 Manage applets and keys on JavaCard-s like a pro (via command line or from your Java project)
https://javacard.pro/globalplatform
GNU Lesser General Public License v3.0
673 stars 210 forks source link

JCOP4 - INSTALL [for install and make selectable] failed: 0xFFD1 #340

Closed base0010 closed 8 months ago

base0010 commented 9 months ago

GlobalPlatformPro v20.01.23-0-g5ad373b does not correctly install and make selectable any applets. Attempts with simple "hello world" CAP files compiled under JavaCard 3.0.4 SDK (JDK 11) and below results in error 0xFFD1.

Full Error:

$: java -jar gp.jar --install xyz.cap 
Warning: no keys given, using default test key 404142434445464748494A4B4C4D4E4F
CAP loaded
INSTALL [for install and make selectable] failed: 0xFFD1

Log output before error:

A>> T=1 (4+0010) 84F21002 0A 4F004F9D57300676F9ED 00
A<< (0140+2) (66ms) E3254F07A00000015153509F700101CE02FFFF8408A000000151535041CC08A000000151000000E32D4F0BD276000085304A434F90009F700101CE020100840CD276000085304A434F900001CC08A000000151000000E3344F0EA0000000871002FF86FFFF89FFFF9F700101CE0201008410A0000000871002FF86FFFF89FFFFFFFFCC08A000000151000000 9000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000001515350
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [CE] FFFF
[TRACE] GPRegistry -      [84] A000000151535041
[TRACE] GPRegistry -      [CC] A000000151000000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] D276000085304A434F9000
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [CE] 0100
[TRACE] GPRegistry -      [84] D276000085304A434F900001
[TRACE] GPRegistry -      [CC] A000000151000000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000871002FF86FFFF89FFFF
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [CE] 0100
[TRACE] GPRegistry -      [84] A0000000871002FF86FFFF89FFFFFFFF
[TRACE] GPRegistry -      [CC] A000000151000000
[TRACE] SCP02Wrapper - MAC input: 84F220020A4F00
A>> T=1 (4+0010) 84F22002 0A 4F00ED74AD04FF33881C 00
A<< (0098+2) (54ms) E31B4F07A00000015153509F700101CE02FFFFCC08A000000151000000E31F4F0BD276000085304A434F90009F700101CE020100CC08A000000151000000E3224F0EA0000000871002FF86FFFF89FFFF9F700101CE020100CC08A000000151000000 9000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000001515350
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [CE] FFFF
[TRACE] GPRegistry -      [CC] A000000151000000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] D276000085304A434F9000
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [CE] 0100
[TRACE] GPRegistry -      [CC] A000000151000000
[TRACE] GPRegistry -  [E3]
[TRACE] GPRegistry -      [4F] A0000000871002FF86FFFF89FFFF
[TRACE] GPRegistry -      [9F70] 01
[TRACE] GPRegistry -      [CE] 0100
[TRACE] GPRegistry -      [CC] A000000151000000
[DEBUG] GPRegistry - Registry already contains PKG: A0000001515350, 1
[DEBUG] GPRegistry - Registry already contains PKG: D276000085304A434F9000, 1
[DEBUG] GPRegistry - Registry already contains PKG: A0000000871002FF86FFFF89FFFF, 1
[TRACE] DMTokenGenerator - No private key for token generation provided
[TRACE] GPSession - LV payload: 
[TRACE] GPSession - [0E] A0000000871002FF86FFFF89FFFF
[TRACE] GPSession - [10] A0000000871002FF86FFFF89FFFFFFFF
[TRACE] GPSession - [10] A0000000871002FF86FFFF89FFFFFFFF
[TRACE] GPSession - [01] 00
[TRACE] GPSession - [02] C900
[TRACE] GPSession - [00] 
[TRACE] SCP02Wrapper - MAC input: 84E60C003F0EA0000000871002FF86FFFF89FFFF10A0000000871002FF86FFFF89FFFFFFFF10A0000000871002FF86FFFF89FFFFFFFF010002C90000
A>> T=1 (4+0063) 84E60C00 3F 0EA0000000871002FF86FFFF89FFFF10A0000000871002FF86FFFF89FFFFFFFF10A0000000871002FF86FFFF89FFFFFFFF010002C90000340073D4205DF80E
A<< (0000+2) (1s598ms) FFD1
INSTALL [for install and make selectable] failed: 0xFFD1

Output of gp.jar -l shows the app has been installed but is not selectable, so it is probably an issue with the way GP handles the ISD. Output of gp.jar -l

ISD: A000000151000000 (OP_READY)
     Parent:  A000000151000000
     From:    A0000001515350
     Privs:   SecurityDomain, CardLock, CardTerminate, CVMManagement, TrustedPath, AuthorizedManagement, TokenVerification, GlobalDelete, GlobalLock, GlobalRegistry, FinalApplication, ReceiptGeneration

PKG: A0000000871002FF86FFFF89FFFF (LOADED)
     Parent:  A000000151000000
     Version: 1.0
     Applet:  A0000000871002FF86FFFF89FFFFFFFF 
martinpaljak commented 9 months ago

Do you have the source code for the applet? What if you install another applet? 0xFFD1 is an unknown error. Which reader are you using?

martinpaljak commented 8 months ago

What was the root cause? Really curious, as never seen such SW.

base0010 commented 8 months ago

Hey I think it just boils down to a weird configuration issue. I received 2 types of JCOP4 both OP_READY from the manufacturer. One 150kB with some odd preinstalled applets the other 180kB with just ISD. The 150kB ones gave this error while 180kB did not. So I'm assuming the 150kB one was just strange or already configured in someway. :man_shrugging: