add information about cardos 4.2b - latest cardos update.
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3237 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
f7636ab5db
commit
a7912a2426
|
@ -96,6 +96,9 @@ static int cardos_match_card(sc_card_t *card)
|
|||
} else if (card->atr[11] >= 0x08) {
|
||||
sc_debug(card->ctx, "found cardos v4.3b or higher");
|
||||
card->type = SC_CARD_TYPE_CARDOS_M4_3;
|
||||
} else if (card->atr[11] >= 0x09) {
|
||||
sc_debug(card->ctx, "found cardos v4.2b or higher");
|
||||
card->type = SC_CARD_TYPE_CARDOS_M4_2B;
|
||||
} else {
|
||||
sc_debug(card->ctx, "found cardos m4.2");
|
||||
}
|
||||
|
@ -163,7 +166,8 @@ static int cardos_init(sc_card_t *card)
|
|||
if (r == 1)
|
||||
card->caps |= SC_CARD_CAP_RSA_2048;
|
||||
card->caps |= SC_CARD_CAP_APDU_EXT;
|
||||
} else if (card->type == SC_CARD_TYPE_CARDOS_M4_3) {
|
||||
} else if (card->type == SC_CARD_TYPE_CARDOS_M4_3
|
||||
|| card->type == SC_CARD_TYPE_CARDOS_M4_2B) {
|
||||
card->caps |= SC_CARD_CAP_RSA_2048;
|
||||
card->caps |= SC_CARD_CAP_APDU_EXT;
|
||||
}
|
||||
|
@ -640,7 +644,8 @@ static int cardos_create_file(sc_card_t *card, sc_file_t *file)
|
|||
return r;
|
||||
return iso_ops->create_file(card, file);
|
||||
} else if (card->type == SC_CARD_TYPE_CARDOS_M4_2 ||
|
||||
card->type == SC_CARD_TYPE_CARDOS_M4_3) {
|
||||
card->type == SC_CARD_TYPE_CARDOS_M4_3 ||
|
||||
card->type == SC_CARD_TYPE_CARDOS_M4_2B) {
|
||||
u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||
size_t len = sizeof(sbuf);
|
||||
sc_apdu_t apdu;
|
||||
|
|
|
@ -42,6 +42,7 @@ enum {
|
|||
SC_CARD_TYPE_CARDOS_M4_01,
|
||||
SC_CARD_TYPE_CARDOS_M4_2,
|
||||
SC_CARD_TYPE_CARDOS_M4_3,
|
||||
SC_CARD_TYPE_CARDOS_M4_2B, /* 4.2b is the latest after 4.3b */
|
||||
|
||||
/* flex/cyberflex drivers */
|
||||
SC_CARD_TYPE_FLEX_BASE = 2000,
|
||||
|
|
|
@ -622,7 +622,7 @@ static int cardos_put_key(sc_profile_t *profile, sc_card_t *card,
|
|||
pin_id = 0;
|
||||
|
||||
if (key_info->modulus_length > 1024 && (card->type == SC_CARD_TYPE_CARDOS_M4_2 ||
|
||||
card->type == SC_CARD_TYPE_CARDOS_M4_3)) {
|
||||
card->type == SC_CARD_TYPE_CARDOS_M4_3 ||card->type == SC_CARD_TYPE_CARDOS_M4_2B)) {
|
||||
r = cardos_store_key_component(card, algorithm, key_id, pin_id, 0,
|
||||
key->p.data, key->p.len, 0, 0);
|
||||
if (r != SC_SUCCESS)
|
||||
|
|
|
@ -63,6 +63,15 @@ static int cardos_info(void)
|
|||
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||
int r;
|
||||
|
||||
if (verbose) {
|
||||
printf("Card ATR:\n");
|
||||
hex_dump_asc(stdout, card->atr, card->atr_len, -1);
|
||||
} else {
|
||||
char tmp[SC_MAX_ATR_SIZE*3];
|
||||
sc_bin_to_hex(card->atr, card->atr_len, tmp, sizeof(tmp) - 1, ':');
|
||||
fprintf(stdout,"%s\n",tmp);
|
||||
}
|
||||
|
||||
memset(&apdu, 0, sizeof(apdu));
|
||||
apdu.cla = 0x00;
|
||||
apdu.ins = 0xca;
|
||||
|
@ -141,6 +150,8 @@ static int cardos_info(void)
|
|||
printf(" (that's CardOS M4.3)\n");
|
||||
} else if (apdu.resp[0] == 0xc8 && apdu.resp[1] == 0x08) {
|
||||
printf(" (that's CardOS M4.3b)\n");
|
||||
} else if (apdu.resp[0] == 0xc8 && apdu.resp[1] == 0x09) {
|
||||
printf(" (that's CardOS M4.2b)\n");
|
||||
} else {
|
||||
printf(" (unknown Version)\n");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue