From b3501ff6695d5b7166b75cb5fcd43f77a272f25d Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Fri, 2 Oct 2020 09:37:13 +0200 Subject: [PATCH] idprime: Unbreak OS version 2 after key&cert renewal --- src/libopensc/card-idprime.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libopensc/card-idprime.c b/src/libopensc/card-idprime.c index 6ebd7189..cf933140 100644 --- a/src/libopensc/card-idprime.c +++ b/src/libopensc/card-idprime.c @@ -196,8 +196,12 @@ static int idprime_process_index(sc_card_t *card, idprime_private_data_t *priv, && (memcmp(&start[12], "mscp", 5) == 0)) { new_object.fd++; if (card->type == SC_CARD_TYPE_IDPRIME_V2) { - /* The key reference starts from 0x11 */ - new_object.key_reference = 0x10 + new_object.fd; + /* The key reference starts from 0x11 and increments by the key id (ASCII) */ + int key_id = 0; + if (start[8] >= '0' && start[8] <= '9') { + key_id = start[8] - '0'; + } + new_object.key_reference = 0x11 + key_id; } else { /* The key reference is one bigger than the value found here for some reason */ new_object.key_reference = start[8] + 1;