Adds Gemalto IDPrime v4

This commit is contained in:
Georgi Kirichkov 2021-05-06 17:53:06 +03:00 committed by Frank Morgner
parent 35a8a1d7e1
commit 072c64aaed
3 changed files with 14 additions and 4 deletions

View File

@ -206,9 +206,13 @@ static int idprime_process_index(sc_card_t *card, idprime_private_data_t *priv,
if (card->type == SC_CARD_TYPE_IDPRIME_V2) {
/* The key reference starts from 0x11 and increments by the key id (ASCII) */
new_object.key_reference = 0x11 + key_id;
} else { /* V3 */
/* The key reference starts from 0xF7 and increments by the key id (ASCII) */
new_object.key_reference = 0xF7 + key_id;
} else {
if (card->type == SC_CARD_TYPE_IDPRIME_V3) { /* V3 */
/* The key reference starts from 0xF7 and increments by the key id (ASCII) */
new_object.key_reference = 0xF7 + key_id;
} else { /* V4 */
new_object.key_reference = 0x56 + key_id;
}
}
}
sc_debug(card->ctx, SC_LOG_DEBUG_VERBOSE, "Found certificate with fd=%d, key_ref=%d",
@ -261,6 +265,10 @@ static int idprime_init(sc_card_t *card)
card->type = SC_CARD_TYPE_IDPRIME_V3;
sc_log(card->ctx, "Detected IDPrime applet version 3");
break;
case 0x04:
card->type = SC_CARD_TYPE_IDPRIME_V4;
sc_log(card->ctx, "Detected IDPrime applet version 4");
break;
default:
sc_log(card->ctx, "Unknown OS version received: %d", rbuf[11]);
break;

View File

@ -269,6 +269,7 @@ enum {
SC_CARD_TYPE_IDPRIME_V1,
SC_CARD_TYPE_IDPRIME_V2,
SC_CARD_TYPE_IDPRIME_V3,
SC_CARD_TYPE_IDPRIME_V4,
SC_CARD_TYPE_IDPRIME_GENERIC,
/* eDO cards */

View File

@ -98,7 +98,8 @@ static int sc_pkcs15emu_idprime_init(sc_pkcs15_card_t *p15card)
pin_info.attrs.pin.max_length = 16;
pin_info.tries_left = -1;
if (card->type == SC_CARD_TYPE_IDPRIME_V3) {
if (card->type == SC_CARD_TYPE_IDPRIME_V3 ||
card->type == SC_CARD_TYPE_IDPRIME_V4) {
pin_info.attrs.pin.flags |= SC_PKCS15_PIN_FLAG_NEEDS_PADDING;
pin_info.attrs.pin.stored_length = 16;
pin_info.attrs.pin.pad_char = 0x00;