Hi,
I have a NEO with firmware version 3.0.2
I've been playing around with the NEO (Manager) Applet (A000000527 200101), but somehow I'm not able to select this applet via the contacted interface, only via contactless (I think i was able to select this applet via contacted back in january, but I'm not sure)
I can however select other applets via the contacted interface (OATH applet, GP applet, OpenPGP applet, etc), but not the NEO Applet.
The select command (00 a4 04 00 08 a0 00 00 05 27 20 01 01) returns "69 99" (Applet selection failed).
According to the JavaCard API docs, this may happen if the Applet.select() method returns false:
http://www.win.tue.nl/pinpasjc/docs/apis/jc222/javacard/framework/Applet.html#select()ykpersonalize also fails:
Code:
>ykpersonalize.exe -m81 -y
Firmware version 3.0.2 Touch level 1285 Program sequence 1
The USB mode will be set to: 0x81
Commit? (y/n) [n]: yes
Yubikey core error: write error
(I have set a configuration passcode on my NEO, but the -cPASS option returns the same error)
ykinfo works fine:
Code:
>ykinfo.exe -a
serial: [SERIAL]
serial_hex: [SERIAL]
serial_modhex: [SERIAL]
version: 3.0.2
touch_level: 1285
programming_sequence: 1
slot1_status: 1
slot2_status: 0
ykneo-ccid-modeswitch also fails:
Code:
error: SCardConnect failed, rc=8010000c
But the strange thing is, I am able to select the NEO applet via the contactless interface (14443-4A):
Code:
-> 00 a4 04 00 08 a0 00 00 05 27 20 01 01 00
<- 03 00 02 01 05 07 82 0f 00 00
This shows that the NEO is in mode 0x82
However, I'm not able to change the mode via the contactless interface:
Code:
-> 00 01 11 00 04 81 0f 00 00
<- 03 00 02 01 05 07
..but the NEO remains in mode 0x82. (I'm guessing the mode can only be change in contacted mode?)
Have I somehow messed up the NEO applet selection via the contacted interface?
What exactly is the NEO applet doing in the select() method?
Does the NEO Applet have a different code path for contacted vs contactless? (APDU.getProtocol())
Thomas
PS: It would be great if you could open source the NEO applet as well, but I'm guessing this is not easy as it's probably using some proprietary NXP api's...