rename everything namend "etoken" to "cardos" :)
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2823 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
823bbffbe6
commit
aa2d502ece
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* card-etoken.c: Support for Siemens CardOS based cards and tokens
|
* card-cardos.c: Support for Siemens CardOS based cards and tokens
|
||||||
* (for example Aladdin eToken PRO, Eutron CryptoIdentity IT-SEC)
|
* (for example Aladdin eToken PRO, Eutron CryptoIdentity IT-SEC)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2005 Nils Larsch <nils@larsch.net>
|
* Copyright (c) 2005 Nils Larsch <nils@larsch.net>
|
||||||
|
@ -32,47 +32,47 @@
|
||||||
/* comment by okir: one of the examples in the developer guide
|
/* comment by okir: one of the examples in the developer guide
|
||||||
* also talks about copying data in chunks of 128.
|
* also talks about copying data in chunks of 128.
|
||||||
* Either coincidence, or a known problem. */
|
* Either coincidence, or a known problem. */
|
||||||
#define ETOKEN_MAX_PAYLOAD 120
|
#define CARDOS_MAX_PAYLOAD 120
|
||||||
|
|
||||||
static const struct sc_card_operations *iso_ops = NULL;
|
static const struct sc_card_operations *iso_ops = NULL;
|
||||||
|
|
||||||
struct sc_card_operations etoken_ops;
|
struct sc_card_operations cardos_ops;
|
||||||
static struct sc_card_driver etoken_drv = {
|
static struct sc_card_driver cardos_drv = {
|
||||||
"Siemens CardOS",
|
"Siemens CardOS",
|
||||||
"etoken",
|
"cardos",
|
||||||
&etoken_ops,
|
&cardos_ops,
|
||||||
NULL, 0, NULL
|
NULL, 0, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sc_atr_table etoken_atrs[] = {
|
static struct sc_atr_table cardos_atrs[] = {
|
||||||
/* 4.0 */
|
/* 4.0 */
|
||||||
{ "3b:e2:00:ff:c1:10:31:fe:55:c8:02:9c", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
{ "3b:e2:00:ff:c1:10:31:fe:55:c8:02:9c", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL },
|
||||||
/* 4.01 */
|
/* 4.01 */
|
||||||
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:03:15", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:03:15", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL },
|
||||||
/* 4.01a */
|
/* 4.01a */
|
||||||
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:04:12", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
{ "3b:f2:98:00:ff:c1:10:31:fe:55:c8:04:12", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL },
|
||||||
/* M4.2 */
|
/* M4.2 */
|
||||||
{ "3b:f2:18:00:ff:c1:0a:31:fe:55:c8:06:8a", NULL, NULL, SC_CARD_TYPE_CARDOS_M4_2, 0, NULL },
|
{ "3b:f2:18:00:ff:c1:0a:31:fe:55:c8:06:8a", NULL, NULL, SC_CARD_TYPE_CARDOS_M4_2, 0, NULL },
|
||||||
/* Italian eID card, postecert */
|
/* Italian eID card, postecert */
|
||||||
{ "3b:e9:00:ff:c1:10:31:fe:55:00:64:05:00:c8:02:31:80:00:47", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
{ "3b:e9:00:ff:c1:10:31:fe:55:00:64:05:00:c8:02:31:80:00:47", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL },
|
||||||
/* Italian eID card, infocamere */
|
/* Italian eID card, infocamere */
|
||||||
{ "3b:fb:98:00:ff:c1:10:31:fe:55:00:64:05:20:47:03:31:80:00:90:00:f3", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
{ "3b:fb:98:00:ff:c1:10:31:fe:55:00:64:05:20:47:03:31:80:00:90:00:f3", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL },
|
||||||
/* Another Italian InfocamereCard */
|
/* Another Italian InfocamereCard */
|
||||||
{ "3b:fc:98:00:ff:c1:10:31:fe:55:c8:03:49:6e:66:6f:63:61:6d:65:72:65:28", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL },
|
{ "3b:fc:98:00:ff:c1:10:31:fe:55:c8:03:49:6e:66:6f:63:61:6d:65:72:65:28", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL },
|
||||||
{ "3b:f4:98:00:ff:c1:10:31:fe:55:4d:34:63:76:b4", NULL, NULL, SC_CARD_TYPE_ETOKEN_GENERIC, 0, NULL},
|
{ "3b:f4:98:00:ff:c1:10:31:fe:55:4d:34:63:76:b4", NULL, NULL, SC_CARD_TYPE_CARDOS_GENERIC, 0, NULL},
|
||||||
{ NULL, NULL, NULL, 0, 0, NULL }
|
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int etoken_finish(sc_card_t *card)
|
static int cardos_finish(sc_card_t *card)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int etoken_match_card(sc_card_t *card)
|
static int cardos_match_card(sc_card_t *card)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = _sc_match_atr(card, etoken_atrs, &card->type);
|
i = _sc_match_atr(card, cardos_atrs, &card->type);
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -114,7 +114,7 @@ static int cardos_have_2048bit_package(sc_card_t *card)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int etoken_init(sc_card_t *card)
|
static int cardos_init(sc_card_t *card)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ static int etoken_init(sc_card_t *card)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct sc_card_error etoken_errors[] = {
|
static const struct sc_card_error cardos_errors[] = {
|
||||||
/* some error inside the card */
|
/* some error inside the card */
|
||||||
/* i.e. nothing you can do */
|
/* i.e. nothing you can do */
|
||||||
{ 0x6581, SC_ERROR_MEMORY_FAILURE, "EEPROM error; command aborted"},
|
{ 0x6581, SC_ERROR_MEMORY_FAILURE, "EEPROM error; command aborted"},
|
||||||
|
@ -211,17 +211,17 @@ static const struct sc_card_error etoken_errors[] = {
|
||||||
{ 0x9850, SC_NO_ERROR, "over/underflow useing in/decrease"}
|
{ 0x9850, SC_NO_ERROR, "over/underflow useing in/decrease"}
|
||||||
};
|
};
|
||||||
|
|
||||||
static int etoken_check_sw(sc_card_t *card, unsigned int sw1, unsigned int sw2)
|
static int cardos_check_sw(sc_card_t *card, unsigned int sw1, unsigned int sw2)
|
||||||
{
|
{
|
||||||
const int err_count = sizeof(etoken_errors)/sizeof(etoken_errors[0]);
|
const int err_count = sizeof(cardos_errors)/sizeof(cardos_errors[0]);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < err_count; i++) {
|
for (i = 0; i < err_count; i++) {
|
||||||
if (etoken_errors[i].SWs == ((sw1 << 8) | sw2)) {
|
if (cardos_errors[i].SWs == ((sw1 << 8) | sw2)) {
|
||||||
if ( etoken_errors[i].errorstr )
|
if ( cardos_errors[i].errorstr )
|
||||||
sc_error(card->ctx, "%s\n",
|
sc_error(card->ctx, "%s\n",
|
||||||
etoken_errors[i].errorstr);
|
cardos_errors[i].errorstr);
|
||||||
return etoken_errors[i].errorno;
|
return cardos_errors[i].errorno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +229,7 @@ static int etoken_check_sw(sc_card_t *card, unsigned int sw1, unsigned int sw2)
|
||||||
return SC_ERROR_CARD_CMD_FAILED;
|
return SC_ERROR_CARD_CMD_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int etoken_list_files(sc_card_t *card, u8 *buf, size_t buflen)
|
static int cardos_list_files(sc_card_t *card, u8 *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
u8 rbuf[256], offset = 0;
|
u8 rbuf[256], offset = 0;
|
||||||
|
@ -386,7 +386,7 @@ static void parse_sec_attr(sc_file_t *file, const u8 *buf, size_t len)
|
||||||
add_acl_entry(file, idx[i], (u8)((i < len) ? buf[i] : 0xFF));
|
add_acl_entry(file, idx[i], (u8)((i < len) ? buf[i] : 0xFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int etoken_select_file(sc_card_t *card,
|
static int cardos_select_file(sc_card_t *card,
|
||||||
const sc_path_t *in_path,
|
const sc_path_t *in_path,
|
||||||
sc_file_t **file)
|
sc_file_t **file)
|
||||||
{
|
{
|
||||||
|
@ -605,7 +605,7 @@ static int cardos_create_file(sc_card_t *card, sc_file_t *file)
|
||||||
|
|
||||||
SC_FUNC_CALLED(card->ctx, 1);
|
SC_FUNC_CALLED(card->ctx, 1);
|
||||||
|
|
||||||
if (card->type == SC_CARD_TYPE_ETOKEN_GENERIC) {
|
if (card->type == SC_CARD_TYPE_CARDOS_GENERIC) {
|
||||||
r = cardos_set_file_attributes(card, file);
|
r = cardos_set_file_attributes(card, file);
|
||||||
if (r != SC_SUCCESS)
|
if (r != SC_SUCCESS)
|
||||||
return r;
|
return r;
|
||||||
|
@ -638,7 +638,7 @@ static int cardos_create_file(sc_card_t *card, sc_file_t *file)
|
||||||
* Restore the indicated SE
|
* Restore the indicated SE
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
etoken_restore_security_env(sc_card_t *card, int se_num)
|
cardos_restore_security_env(sc_card_t *card, int se_num)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
int r;
|
int r;
|
||||||
|
@ -667,7 +667,7 @@ etoken_restore_security_env(sc_card_t *card, int se_num)
|
||||||
* XXX Need to find out how the Aladdin drivers do it.
|
* XXX Need to find out how the Aladdin drivers do it.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
etoken_set_security_env(sc_card_t *card,
|
cardos_set_security_env(sc_card_t *card,
|
||||||
const sc_security_env_t *env,
|
const sc_security_env_t *env,
|
||||||
int se_num)
|
int se_num)
|
||||||
{
|
{
|
||||||
|
@ -745,7 +745,7 @@ do_compute_signature(sc_card_t *card, const u8 *data, size_t datalen,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_compute_signature(sc_card_t *card, const u8 *data, size_t datalen,
|
cardos_compute_signature(sc_card_t *card, const u8 *data, size_t datalen,
|
||||||
u8 *out, size_t outlen)
|
u8 *out, size_t outlen)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
@ -800,7 +800,7 @@ etoken_compute_signature(sc_card_t *card, const u8 *data, size_t datalen,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_lifecycle_get(sc_card_t *card, int *mode)
|
cardos_lifecycle_get(sc_card_t *card, int *mode)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||||
|
@ -844,7 +844,7 @@ etoken_lifecycle_get(sc_card_t *card, int *mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_lifecycle_set(sc_card_t *card, int *mode)
|
cardos_lifecycle_set(sc_card_t *card, int *mode)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
int r;
|
int r;
|
||||||
|
@ -856,7 +856,7 @@ etoken_lifecycle_set(sc_card_t *card, int *mode)
|
||||||
|
|
||||||
target = *mode;
|
target = *mode;
|
||||||
|
|
||||||
r = etoken_lifecycle_get(card, ¤t);
|
r = cardos_lifecycle_get(card, ¤t);
|
||||||
|
|
||||||
if (r != SC_SUCCESS)
|
if (r != SC_SUCCESS)
|
||||||
return r;
|
return r;
|
||||||
|
@ -880,8 +880,8 @@ etoken_lifecycle_set(sc_card_t *card, int *mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_put_data_oci(sc_card_t *card,
|
cardos_put_data_oci(sc_card_t *card,
|
||||||
struct sc_cardctl_etoken_obj_info *args)
|
struct sc_cardctl_cardos_obj_info *args)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
int r;
|
int r;
|
||||||
|
@ -908,8 +908,8 @@ etoken_put_data_oci(sc_card_t *card,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_put_data_seci(sc_card_t *card,
|
cardos_put_data_seci(sc_card_t *card,
|
||||||
struct sc_cardctl_etoken_obj_info *args)
|
struct sc_cardctl_cardos_obj_info *args)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
int r;
|
int r;
|
||||||
|
@ -934,8 +934,8 @@ etoken_put_data_seci(sc_card_t *card,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_generate_key(sc_card_t *card,
|
cardos_generate_key(sc_card_t *card,
|
||||||
struct sc_cardctl_etoken_genkey_info *args)
|
struct sc_cardctl_cardos_genkey_info *args)
|
||||||
{
|
{
|
||||||
sc_apdu_t apdu;
|
sc_apdu_t apdu;
|
||||||
u8 data[8];
|
u8 data[8];
|
||||||
|
@ -995,26 +995,26 @@ static int cardos_get_serialnr(sc_card_t *card, sc_serial_number_t *serial)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
etoken_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr)
|
cardos_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr)
|
||||||
{
|
{
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case SC_CARDCTL_ETOKEN_PUT_DATA_FCI:
|
case SC_CARDCTL_CARDOS_PUT_DATA_FCI:
|
||||||
break;
|
break;
|
||||||
case SC_CARDCTL_ETOKEN_PUT_DATA_OCI:
|
case SC_CARDCTL_CARDOS_PUT_DATA_OCI:
|
||||||
return etoken_put_data_oci(card,
|
return cardos_put_data_oci(card,
|
||||||
(struct sc_cardctl_etoken_obj_info *) ptr);
|
(struct sc_cardctl_cardos_obj_info *) ptr);
|
||||||
break;
|
break;
|
||||||
case SC_CARDCTL_ETOKEN_PUT_DATA_SECI:
|
case SC_CARDCTL_CARDOS_PUT_DATA_SECI:
|
||||||
return etoken_put_data_seci(card,
|
return cardos_put_data_seci(card,
|
||||||
(struct sc_cardctl_etoken_obj_info *) ptr);
|
(struct sc_cardctl_cardos_obj_info *) ptr);
|
||||||
break;
|
break;
|
||||||
case SC_CARDCTL_ETOKEN_GENERATE_KEY:
|
case SC_CARDCTL_CARDOS_GENERATE_KEY:
|
||||||
return etoken_generate_key(card,
|
return cardos_generate_key(card,
|
||||||
(struct sc_cardctl_etoken_genkey_info *) ptr);
|
(struct sc_cardctl_cardos_genkey_info *) ptr);
|
||||||
case SC_CARDCTL_LIFECYCLE_GET:
|
case SC_CARDCTL_LIFECYCLE_GET:
|
||||||
return etoken_lifecycle_get(card, (int *) ptr);
|
return cardos_lifecycle_get(card, (int *) ptr);
|
||||||
case SC_CARDCTL_LIFECYCLE_SET:
|
case SC_CARDCTL_LIFECYCLE_SET:
|
||||||
return etoken_lifecycle_set(card, (int *) ptr);
|
return cardos_lifecycle_set(card, (int *) ptr);
|
||||||
case SC_CARDCTL_GET_SERIALNR:
|
case SC_CARDCTL_GET_SERIALNR:
|
||||||
return cardos_get_serialnr(card, (sc_serial_number_t *)ptr);
|
return cardos_get_serialnr(card, (sc_serial_number_t *)ptr);
|
||||||
}
|
}
|
||||||
|
@ -1027,7 +1027,7 @@ etoken_card_ctl(sc_card_t *card, unsigned long cmd, void *ptr)
|
||||||
* Unfortunately, it doesn't seem to work without this flag :-/
|
* Unfortunately, it doesn't seem to work without this flag :-/
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
etoken_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
cardos_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
||||||
int *tries_left)
|
int *tries_left)
|
||||||
{
|
{
|
||||||
data->flags |= SC_PIN_CMD_NEED_PADDING;
|
data->flags |= SC_PIN_CMD_NEED_PADDING;
|
||||||
|
@ -1072,27 +1072,27 @@ static struct sc_card_driver * sc_get_driver(void)
|
||||||
{
|
{
|
||||||
if (iso_ops == NULL)
|
if (iso_ops == NULL)
|
||||||
iso_ops = sc_get_iso7816_driver()->ops;
|
iso_ops = sc_get_iso7816_driver()->ops;
|
||||||
etoken_ops = *iso_ops;
|
cardos_ops = *iso_ops;
|
||||||
etoken_ops.match_card = etoken_match_card;
|
cardos_ops.match_card = cardos_match_card;
|
||||||
etoken_ops.init = etoken_init;
|
cardos_ops.init = cardos_init;
|
||||||
etoken_ops.finish = etoken_finish;
|
cardos_ops.finish = cardos_finish;
|
||||||
etoken_ops.select_file = etoken_select_file;
|
cardos_ops.select_file = cardos_select_file;
|
||||||
etoken_ops.create_file = cardos_create_file;
|
cardos_ops.create_file = cardos_create_file;
|
||||||
etoken_ops.set_security_env = etoken_set_security_env;
|
cardos_ops.set_security_env = cardos_set_security_env;
|
||||||
etoken_ops.restore_security_env = etoken_restore_security_env;
|
cardos_ops.restore_security_env = cardos_restore_security_env;
|
||||||
etoken_ops.compute_signature = etoken_compute_signature;
|
cardos_ops.compute_signature = cardos_compute_signature;
|
||||||
|
|
||||||
etoken_ops.list_files = etoken_list_files;
|
cardos_ops.list_files = cardos_list_files;
|
||||||
etoken_ops.check_sw = etoken_check_sw;
|
cardos_ops.check_sw = cardos_check_sw;
|
||||||
etoken_ops.card_ctl = etoken_card_ctl;
|
cardos_ops.card_ctl = cardos_card_ctl;
|
||||||
etoken_ops.pin_cmd = etoken_pin_cmd;
|
cardos_ops.pin_cmd = cardos_pin_cmd;
|
||||||
etoken_ops.logout = cardos_logout;
|
cardos_ops.logout = cardos_logout;
|
||||||
|
|
||||||
return &etoken_drv;
|
return &cardos_drv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
struct sc_card_driver * sc_get_etoken_driver(void)
|
struct sc_card_driver * sc_get_cardos_driver(void)
|
||||||
{
|
{
|
||||||
return sc_get_driver();
|
return sc_get_driver();
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,13 +70,14 @@ enum {
|
||||||
SC_CARDCTL_TCOS_SETPERM,
|
SC_CARDCTL_TCOS_SETPERM,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* eToken specific calls
|
* CardOS specific calls
|
||||||
|
* (formerly known as "etoken" driver, thus ETK as prefix)
|
||||||
*/
|
*/
|
||||||
SC_CARDCTL_ETOKEN_BASE = _CTL_PREFIX('E', 'T', 'K'),
|
SC_CARDCTL_CARDOS_BASE = _CTL_PREFIX('E', 'T', 'K'),
|
||||||
SC_CARDCTL_ETOKEN_PUT_DATA_FCI,
|
SC_CARDCTL_CARDOS_PUT_DATA_FCI,
|
||||||
SC_CARDCTL_ETOKEN_PUT_DATA_OCI,
|
SC_CARDCTL_CARDOS_PUT_DATA_OCI,
|
||||||
SC_CARDCTL_ETOKEN_PUT_DATA_SECI,
|
SC_CARDCTL_CARDOS_PUT_DATA_SECI,
|
||||||
SC_CARDCTL_ETOKEN_GENERATE_KEY,
|
SC_CARDCTL_CARDOS_GENERATE_KEY,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Starcos SPK 2.3 specific calls
|
* Starcos SPK 2.3 specific calls
|
||||||
|
@ -197,14 +198,14 @@ struct sc_cardctl_miocos_ac_info {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* eToken PIN info
|
* Siemens CardOS PIN info
|
||||||
*/
|
*/
|
||||||
struct sc_cardctl_etoken_obj_info {
|
struct sc_cardctl_cardos_obj_info {
|
||||||
u8 * data;
|
u8 * data;
|
||||||
size_t len;
|
size_t len;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sc_cardctl_etoken_genkey_info {
|
struct sc_cardctl_cardos_genkey_info {
|
||||||
unsigned int key_id;
|
unsigned int key_id;
|
||||||
unsigned int key_bits;
|
unsigned int key_bits;
|
||||||
unsigned short fid;
|
unsigned short fid;
|
||||||
|
|
|
@ -36,9 +36,9 @@ enum {
|
||||||
/* Cards without registered type, yet */
|
/* Cards without registered type, yet */
|
||||||
SC_CARD_TYPE_TEST_BASE = 500,
|
SC_CARD_TYPE_TEST_BASE = 500,
|
||||||
|
|
||||||
/* etoken driver */
|
/* cardos driver */
|
||||||
SC_CARD_TYPE_ETOKEN_BASE = 1000,
|
SC_CARD_TYPE_CARDOS_BASE = 1000,
|
||||||
SC_CARD_TYPE_ETOKEN_GENERIC,
|
SC_CARD_TYPE_CARDOS_GENERIC,
|
||||||
SC_CARD_TYPE_CARDOS_M4_2,
|
SC_CARD_TYPE_CARDOS_M4_2,
|
||||||
|
|
||||||
/* flex/cyberflex drivers */
|
/* flex/cyberflex drivers */
|
||||||
|
|
|
@ -1038,7 +1038,7 @@ extern struct sc_reader_driver *sc_get_openct_driver(void);
|
||||||
|
|
||||||
extern sc_card_driver_t *sc_get_default_driver(void);
|
extern sc_card_driver_t *sc_get_default_driver(void);
|
||||||
extern sc_card_driver_t *sc_get_emv_driver(void);
|
extern sc_card_driver_t *sc_get_emv_driver(void);
|
||||||
extern sc_card_driver_t *sc_get_etoken_driver(void);
|
extern sc_card_driver_t *sc_get_cardos_driver(void);
|
||||||
extern sc_card_driver_t *sc_get_cryptoflex_driver(void);
|
extern sc_card_driver_t *sc_get_cryptoflex_driver(void);
|
||||||
extern sc_card_driver_t *sc_get_cyberflex_driver(void);
|
extern sc_card_driver_t *sc_get_cyberflex_driver(void);
|
||||||
extern sc_card_driver_t *sc_get_gpk_driver(void);
|
extern sc_card_driver_t *sc_get_gpk_driver(void);
|
||||||
|
|
Loading…
Reference in New Issue