Add a catch-all for (possibly) blank JavaCards. This way known blank JavaCards without a supported applet get recognized by opensc-tool -n.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4004 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
f636cc1862
commit
4d56ce2b7b
@ -39,7 +39,8 @@ libopensc_la_SOURCES = \
|
||||
card-oberthur.c card-belpic.c card-atrust-acos.c card-entersafe.c \
|
||||
card-incrypto34.c card-piv.c card-muscle.c card-acos5.c \
|
||||
card-asepcos.c card-akis.c card-gemsafeV1.c card-rutoken.c \
|
||||
card-rtecp.c card-westcos.c card-myeid.c card-ias.c\
|
||||
card-rtecp.c card-westcos.c card-myeid.c card-ias.c \
|
||||
card-javacard.c \
|
||||
\
|
||||
pkcs15-openpgp.c pkcs15-infocamere.c pkcs15-starcert.c \
|
||||
pkcs15-tcos.c pkcs15-esteid.c pkcs15-postecert.c pkcs15-gemsafeGPK.c \
|
||||
|
@ -26,6 +26,7 @@ OBJECTS = \
|
||||
card-incrypto34.obj card-piv.obj card-muscle.obj card-acos5.obj \
|
||||
card-asepcos.obj card-akis.obj card-gemsafeV1.obj card-rutoken.obj \
|
||||
card-rtecp.obj card-westcos.obj card-myeid.obj card-ias.obj \
|
||||
card-javacard.c \
|
||||
\
|
||||
p15emu-westcos.obj \
|
||||
pkcs15-openpgp.obj pkcs15-infocamere.obj pkcs15-starcert.obj \
|
||||
|
74
src/libopensc/card-javacard.c
Normal file
74
src/libopensc/card-javacard.c
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* card-javacard.c: Recognize known blank JavaCards
|
||||
*
|
||||
* Copyright (C) 2010 Martin Paljak <martin@paljak.pri.ee>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
static struct sc_atr_table javacard_atrs[] = {
|
||||
{"3b:db:18:00:80:b1:fe:45:1f:83:00:31:c0:64:c7:fc:10:00:01:90:00:fa", NULL, "Cosmo v7 64K dual/128K", SC_CARD_TYPE_JAVACARD, 0, NULL},
|
||||
{"3b:75:94:00:00:62:02:02:02:01", NULL, "Cyberflex 32K", SC_CARD_TYPE_JAVACARD, 0, NULL},
|
||||
{"3b:95:95:40:ff:ae:01:03:00:00", NULL, "Cyberflex v2 64K", SC_CARD_TYPE_JAVACARD, 0, NULL},
|
||||
{NULL, NULL, NULL, 0, 0, NULL}
|
||||
};
|
||||
|
||||
static struct sc_card_operations javacard_ops;
|
||||
static struct sc_card_driver javacard_drv = {
|
||||
"JavaCard (without supported applet)",
|
||||
"javacard",
|
||||
&javacard_ops,
|
||||
NULL, 0, NULL
|
||||
};
|
||||
|
||||
static int javacard_finish(sc_card_t * card)
|
||||
{
|
||||
return SC_SUCCESS;
|
||||
}
|
||||
|
||||
static int javacard_match_card(sc_card_t * card)
|
||||
{
|
||||
if (_sc_match_atr(card, javacard_atrs, &card->type) < 0)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int javacard_init(sc_card_t * card)
|
||||
{
|
||||
card->drv_data = NULL;
|
||||
|
||||
return SC_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static struct sc_card_driver *sc_get_driver(void)
|
||||
{
|
||||
struct sc_card_driver *iso_drv = sc_get_iso7816_driver();
|
||||
|
||||
javacard_ops = *iso_drv->ops;
|
||||
javacard_ops.match_card = javacard_match_card;
|
||||
javacard_ops.select_file = NULL;
|
||||
javacard_ops.init = javacard_init;
|
||||
javacard_ops.finish = javacard_finish;
|
||||
|
||||
return &javacard_drv;
|
||||
}
|
||||
|
||||
struct sc_card_driver *sc_get_javacard_driver(void)
|
||||
{
|
||||
return sc_get_driver();
|
||||
}
|
@ -160,6 +160,10 @@ enum {
|
||||
/* IAS cards */
|
||||
SC_CARD_TYPE_IAS_BASE = 22000,
|
||||
SC_CARD_TYPE_IAS_PTEID,
|
||||
|
||||
/* Generic JavaCards without supported applet */
|
||||
SC_CARD_TYPE_JAVACARD_BASE = 23000,
|
||||
SC_CARD_TYPE_JAVACARD,
|
||||
};
|
||||
|
||||
extern sc_card_driver_t *sc_get_default_driver(void);
|
||||
@ -191,6 +195,7 @@ extern sc_card_driver_t *sc_get_rtecp_driver(void);
|
||||
extern sc_card_driver_t *sc_get_westcos_driver(void);
|
||||
extern sc_card_driver_t *sc_get_myeid_driver(void);
|
||||
extern sc_card_driver_t *sc_get_ias_driver(void);
|
||||
extern sc_card_driver_t *sc_get_javacard_driver(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -86,6 +86,7 @@ static const struct _sc_driver_entry internal_card_drivers[] = {
|
||||
{ "myeid", (void *(*)(void)) sc_get_myeid_driver },
|
||||
/* emv is not really implemented */
|
||||
{ "emv", (void *(*)(void)) sc_get_emv_driver },
|
||||
{ "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 },
|
||||
|
Loading…
Reference in New Issue
Block a user