New card driver: EnterSafe card example
struct sc_card_driver * sc_get_entersafe_driver (void )
{
return sc_get_driver ();
}
#ifdef ENABLE_OPENSSL
{ "entersafe" ,(void * (* )(void )) sc_get_entersafe_driver },
extern sc_card_driver_t * sc_get_entersafe_driver (void );
card - oberthur .c card - belpic .c card - atrust - acos .c card - entersafe .c \
card - oberthur .obj card - belpic .obj card - atrust - acos .obj card - entersafe .obj \
/* EnterSafe cards */
SC_CARD_TYPE_ENTERSAFE_BASE = 19000 ,
SC_CARD_TYPE_ENTERSAFE_3K ,
SC_CARD_TYPE_ENTERSAFE_FTCOS_PK_01C ,
static struct sc_atr_table entersafe_atrs [] = {
{
"3b:0f:00:65:46:53:05:19:05:71:df:00:00:00:00:00:00" ,
"ff:ff:ff:ff:ff:ff:ff:00:ff:ff:ff:00:00:00:00:00:00" ,
"ePass3000" , SC_CARD_TYPE_ENTERSAFE_3K , 0 , NULL },
{
"3b:9f:95:81:31:fe:9f:00:65:46:53:05:30:06:71:df:00:00:00:80:6a:82:5e" ,
"FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:00:FF:FF:FF:FF:FF:FF:00:00:00:00" ,
"FTCOS/PK-01C" , SC_CARD_TYPE_ENTERSAFE_FTCOS_PK_01C , 0 , NULL },
{ NULL , NULL , NULL , 0 , 0 , NULL }
};
/* the entersafe part */
static int entersafe_match_card (sc_card_t * card )
{
int i ;
SC_FUNC_CALLED (card -> ctx , SC_LOG_DEBUG_VERBOSE );
i = _sc_match_atr (card , entersafe_atrs , & card -> type );
if (i < 0 )
return 0 ;
return 1 ;
}