Hi
> It seems to me that the card (or the relevant applet) is programmed to
> return 6A88 instead of 6A82. Just to be sure: what happens if you try
> opensc-explorer and try to cd to any non-existent DF with debug on,
Yes, the error code comes from the card. And just as you expected,
opensc-exploring a non-existent DF will return the same SW.
OpenSC [3F00]> cd 1234
0xb77eb6c0 19:38:45.370 [opensc-explorer] card.c:571:sc_select_file: called;
type=2, path=3f001234
0xb77eb6c0 19:38:45.370 [opensc-explorer] apdu.c:524:sc_transmit_apdu: called
0xb77eb6c0 19:38:45.370 [opensc-explorer] card.c:292:sc_lock: called
0xb77eb6c0 19:38:45.370 [opensc-explorer] reader-pcsc.c:241:pcsc_transmit:
reader 'SCM SCR 331 [CCID Interface] (50400A7F) 00 00'
0xb77eb6c0 19:38:45.370 [opensc-explorer] apdu.c:184:sc_apdu_log:
Outgoing APDU data [ 7 bytes] =====================================
00 A4 08 00 02 12 34 ......4
======================================================================
0xb77eb6c0 19:38:45.370 [opensc-explorer]
reader-pcsc.c:174:pcsc_internal_transmit: called
0xb77eb6c0 19:38:45.407 [opensc-explorer] apdu.c:184:sc_apdu_log:
Incoming APDU data [ 2 bytes] =====================================
6A 88 j.
======================================================================
0xb77eb6c0 19:38:45.408 [opensc-explorer] card.c:330:sc_unlock: called
0xb77eb6c0 19:38:45.408 [opensc-explorer] iso7816.c:103:iso7816_check_sw:
Referenced data not found
0xb77eb6c0 19:38:45.408 [opensc-explorer] iso7816.c:484:iso7816_select_file:
returning with: -1216 (Data object not found)
0xb77eb6c0 19:38:45.408 [opensc-explorer] card.c:597:sc_select_file: returning
with: -1216 (Data object not found)
unable to select DF: Data object not found
> So I guess the best option is to constrain the number of possible
> error codes from sc_enum_apps and better document/define what it
> should do and what happens if it fails. Does the attached patch work
> for you?
The provided patch only works partially. The first error will pass
(-1216 -> -1201) but it will still fail on the second one. Below is
the resulting output from pkcs15-tool.
Do you need to patch card.c instead of dir.c?
...
0xb78528d0 19:49:28.378 [pkcs15-tool] card.c:571:sc_select_file: called;
type=2, path=3f002f00
0xb78528d0 19:49:28.378 [pkcs15-tool] apdu.c:524:sc_transmit_apdu: called
0xb78528d0 19:49:28.378 [pkcs15-tool] card.c:292:sc_lock: called
0xb78528d0 19:49:28.378 [pkcs15-tool] reader-pcsc.c:241:pcsc_transmit: reader
'SCM SCR 331 [CCID Interface] (50400A7F) 00 00'
0xb78528d0 19:49:28.378 [pkcs15-tool] apdu.c:184:sc_apdu_log:
Outgoing APDU data [ 7 bytes] =====================================
00 A4 08 00 02 2F 00 ...../.
======================================================================
0xb78528d0 19:49:28.378 [pkcs15-tool] reader-pcsc.c:174:pcsc_internal_transmit:
called
0xb78528d0 19:49:28.413 [pkcs15-tool] apdu.c:184:sc_apdu_log:
Incoming APDU data [ 2 bytes] =====================================
6A 88 j.
======================================================================
0xb78528d0 19:49:28.413 [pkcs15-tool] card.c:330:sc_unlock: called
0xb78528d0 19:49:28.413 [pkcs15-tool] iso7816.c:103:iso7816_check_sw:
Referenced data not found
0xb78528d0 19:49:28.413 [pkcs15-tool] iso7816.c:484:iso7816_select_file:
returning with: -1216 (Data object not found)
0xb78528d0 19:49:28.413 [pkcs15-tool] card.c:597:sc_select_file: returning
with: -1216 (Data object not found)
0xb78528d0 19:49:28.413 [pkcs15-tool] dir.c:154:sc_enum_apps: Cannot select
EF.DIR file: -1201 (File not found)
0xb78528d0 19:49:28.413 [pkcs15-tool] pkcs15.c:759:sc_pkcs15_bind_internal:
application path '3f005015'
0xb78528d0 19:49:28.413 [pkcs15-tool] card.c:571:sc_select_file: called;
type=2, path=3f005015
0xb78528d0 19:49:28.413 [pkcs15-tool] apdu.c:524:sc_transmit_apdu: called
0xb78528d0 19:49:28.413 [pkcs15-tool] card.c:292:sc_lock: called
0xb78528d0 19:49:28.413 [pkcs15-tool] reader-pcsc.c:241:pcsc_transmit: reader
'SCM SCR 331 [CCID Interface] (50400A7F) 00 00'
0xb78528d0 19:49:28.413 [pkcs15-tool] apdu.c:184:sc_apdu_log:
Outgoing APDU data [ 7 bytes] =====================================
00 A4 08 00 02 50 15 .....P.
======================================================================
0xb78528d0 19:49:28.413 [pkcs15-tool]
reader-pcsc.c:174:pcsc_internal_transmit: called
0xb78528d0 19:49:28.467 [pkcs15-tool] apdu.c:184:sc_apdu_log:
Incoming APDU data [ 2 bytes] =====================================
6A 88 j.
======================================================================
0xb78528d0 19:49:28.467 [pkcs15-tool] card.c:330:sc_unlock: called
0xb78528d0 19:49:28.467 [pkcs15-tool] iso7816.c:103:iso7816_check_sw:
Referenced data not found
0xb78528d0 19:49:28.467 [pkcs15-tool] iso7816.c:479:iso7816_select_file:
returning with: -1216 (Data object not found)
0xb78528d0 19:49:28.467 [pkcs15-tool] card.c:597:sc_select_file: returning
with: -1216 (Data object not found)
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:125:sc_pkcs15_bind_synthetic: called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:166:sc_pkcs15_bind_synthetic: no emulator list in config file,
trying all builtin emulators
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying westcos
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-westcos.c:257:sc_pkcs15emu_westcos_init_ex: sc_pkcs15_init_func_ex
westcos
0xb78528d0 19:49:28.467 [pkcs15-tool] pkcs15-westcos.c:244:westcos_detect_card:
westcos_detect_card (Unsupported card)
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying openpgp
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying infocamere
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying starcert
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying tcos
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying esteid
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying itacns
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-itacns.c:856:sc_pkcs15emu_itacns_init_ex: called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying postecert
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying PIV-II
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-piv.c:1010:sc_pkcs15emu_piv_init_ex: called
0xb78528d0 19:49:28.467 [pkcs15-tool] pkcs15-piv.c:230:piv_detect_card: called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying gemsafeGPK
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-gemsafeGPK.c:512:sc_pkcs15emu_gemsafeGPK_init_ex: Entering
sc_pkcs15emu_gemsafeGPK_init_ex
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-gemsafeGPK.c:166:gemsafe_detect_card: called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying gemsafeV1
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying actalis
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying atrust-acos
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying tccardos
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying entersafe
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-esinit.c:80:sc_pkcs15emu_entersafe_init_ex: called
0xb78528d0 19:49:28.467 [pkcs15-tool] pkcs15-esinit.c:36:entersafe_detect_card:
called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying pteid
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:168:sc_pkcs15_bind_synthetic: trying oberthur
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-oberthur.c:1048:sc_pkcs15emu_oberthur_init_ex: called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-oberthur.c:1035:oberthur_detect_card: called
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-oberthur.c:1037:oberthur_detect_card: returning with: -1413 (Unsupported
card)
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-oberthur.c:1058:sc_pkcs15emu_oberthur_init_ex: returning with: -1413
(Unsupported card)
0xb78528d0 19:49:28.467 [pkcs15-tool]
pkcs15-syn.c:177:sc_pkcs15_bind_synthetic: searching for 'emulate foo { ... }'
blocks
0xb78528d0 19:49:28.467 [pkcs15-tool] card.c:330:sc_unlock: called
0xb78528d0 19:49:28.467 [pkcs15-tool] pkcs15.c:960:sc_pkcs15_bind: returning
with: -1413 (Unsupported card)
PKCS#15 binding failed: Unsupported card
...
- Thomas
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel