+1, I always wondered why I could got to the default driver anymore...

The quick fix would be to increase SC_MAX_CARD_DRIVERS

A more generic solution, however, could be to change
`struct _sc_ctx_options.cdrv` to grow dynamically. Everywhere where
drivers are referenced a terminating NULL driver could be use to signal
the end of the list (just as it is done in `internal_card_drivers`).
Alternatively a `size_t` could indicate the length of the list.


AFAICS, this limitation is caused by allowing externally loaded card
drivers. Is this interface still supported? Does anyone use externally
loadable drivers?


On Wednesday, October 31 at 08:15PM, Leonardo Brondani Schenkel wrote:
> 
> Hello,
> 
> My cards used to work with OpenSC 0.12.2 but stopped working entirely 
> after an upgrade to 0.13. After some investigation I found out that the 
> default driver is disabled on 0.13 because there are more drivers listed 
> in ctx.c:
> 
> static const struct _sc_driver_entry internal_card_drivers[] = {
> { "cardos",   (void *(*)(void)) sc_get_cardos_driver },
> { "flex",     (void *(*)(void)) sc_get_cryptoflex_driver },
> { "cyberflex",        (void *(*)(void)) sc_get_cyberflex_driver },
> #ifdef ENABLE_OPENSSL
> { "gpk",      (void *(*)(void)) sc_get_gpk_driver },
> #endif
> { "gemsafeV1",        (void *(*)(void)) sc_get_gemsafeV1_driver },
> { "miocos",   (void *(*)(void)) sc_get_miocos_driver },
> { "mcrd",     (void *(*)(void)) sc_get_mcrd_driver },
> { "asepcos",  (void *(*)(void)) sc_get_asepcos_driver },
> { "starcos",  (void *(*)(void)) sc_get_starcos_driver },
> { "tcos",     (void *(*)(void)) sc_get_tcos_driver },
> { "openpgp",  (void *(*)(void)) sc_get_openpgp_driver },
> { "jcop",     (void *(*)(void)) sc_get_jcop_driver },
> #ifdef ENABLE_OPENSSL
> { "oberthur", (void *(*)(void)) sc_get_oberthur_driver },
> { "authentic",        (void *(*)(void)) sc_get_authentic_driver },
> { "iasecc",   (void *(*)(void)) sc_get_iasecc_driver },
> #endif
> { "belpic",   (void *(*)(void)) sc_get_belpic_driver },
> { "ias",      (void *(*)(void)) sc_get_ias_driver },
> { "incrypto34", (void *(*)(void)) sc_get_incrypto34_driver },
> { "acos5",    (void *(*)(void)) sc_get_acos5_driver },
> { "akis",     (void *(*)(void)) sc_get_akis_driver },
> #ifdef ENABLE_OPENSSL
> { "entersafe",(void *(*)(void)) sc_get_entersafe_driver },
> #ifdef ENABLE_SM
> { "epass2003",(void *(*)(void)) sc_get_epass2003_driver },
> #endif
> #endif
> { "rutoken",  (void *(*)(void)) sc_get_rutoken_driver },
> { "rutoken_ecp",(void *(*)(void)) sc_get_rtecp_driver },
> { "westcos",  (void *(*)(void)) sc_get_westcos_driver },
> { "myeid", (void *(*)(void)) sc_get_myeid_driver },
> { "sc-hsm",   (void *(*)(void)) sc_get_sc_hsm_driver },
> 
> /* Here should be placed drivers that need some APDU transactions to
> * recognise its cards. */
> { "setcos",   (void *(*)(void)) sc_get_setcos_driver },
> { "muscle",   (void *(*)(void)) sc_get_muscle_driver },
> { "atrust-acos",(void *(*)(void)) sc_get_atrust_acos_driver },
> { "PIV-II",   (void *(*)(void)) sc_get_piv_driver },
> { "itacns",   (void *(*)(void)) sc_get_itacns_driver },
> /* javacard without supported applet - last before default */
> { "javacard", (void *(*)(void)) sc_get_javacard_driver },
> /* The default driver should be last, as it handles all the
> * unrecognized cards. */
> { "default",  (void *(*)(void)) sc_get_default_driver },
> { NULL, NULL }
> };
> 
> than the limit defined in types.h:
> 
> #define SC_MAX_CARD_DRIVERS           32
> 
> So the binary from the website ignores all drivers that come after 
> "PIV-II". Since my cards use the default driver, 0.13 is completely 
> unusable to me.
> 
> I filed a ticket:
> https://www.opensc-project.org/opensc/ticket/457
> 
> Why is the limit so low? Shouldn't it be bumped to at least 64 or 128?
> _______________________________________________
> opensc-devel mailing list
> opensc-devel@lists.opensc-project.org
> http://www.opensc-project.org/mailman/listinfo/opensc-devel
> 

-- 
Frank Morgner

Virtual Smart Card Architecture http://vsmartcard.sourceforge.net
OpenPACE                        http://openpace.sourceforge.net
IFD Handler for libnfc Devices  http://sourceforge.net/projects/ifdnfc

Attachment: pgp66z6kjmNmy.pgp
Description: PGP signature

_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to