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:
aj 2006-01-23 21:43:01 +00:00
parent 823bbffbe6
commit aa2d502ece
4 changed files with 84 additions and 83 deletions

View File

@ -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, &current); r = cardos_lifecycle_get(card, &current);
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();
} }

View File

@ -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;

View File

@ -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 */

View File

@ -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);