* fix an return code from ctbcs spec
* make sure pins and puk are correctly associated in esteid emu git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2277 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
f5b2845340
commit
1139181493
|
@ -122,6 +122,7 @@ sc_pkcs15emu_esteid_init (sc_pkcs15_card_t * p15card)
|
|||
|
||||
static const int esteid_pin_min[3] = {4, 5, 8};
|
||||
static const int esteid_pin_ref[3] = {1, 2, 0};
|
||||
static const int esteid_pin_authid[3] = {1, 2, 3};
|
||||
static const int esteid_pin_flags[3] = {0, 0, SC_PKCS15_PIN_FLAG_UNBLOCKING_PIN};
|
||||
|
||||
struct sc_pkcs15_pin_info pin_info;
|
||||
|
@ -137,7 +138,7 @@ sc_pkcs15emu_esteid_init (sc_pkcs15_card_t * p15card)
|
|||
tries_left = buff[5];
|
||||
|
||||
pin_info.auth_id.len = 1;
|
||||
pin_info.auth_id.value[0] = i + 1;
|
||||
pin_info.auth_id.value[0] = esteid_pin_authid[i];
|
||||
pin_info.reference = esteid_pin_ref[i];
|
||||
pin_info.flags = esteid_pin_flags[i];
|
||||
pin_info.type = SC_PKCS15_PIN_TYPE_ASCII_NUMERIC;
|
||||
|
@ -149,7 +150,11 @@ sc_pkcs15emu_esteid_init (sc_pkcs15_card_t * p15card)
|
|||
|
||||
strncpy(pin_obj.label, esteid_pin_names[i], SC_PKCS15_MAX_LABEL_SIZE - 1);
|
||||
pin_obj.flags = esteid_pin_flags[i];
|
||||
|
||||
|
||||
if (i < 2)
|
||||
pin_obj.auth_id.len = 1;
|
||||
pin_obj.auth_id.value[0] = 3;
|
||||
|
||||
r = sc_pkcs15emu_add_pin_obj(p15card, &pin_obj, &pin_info);
|
||||
if (r < 0)
|
||||
return SC_ERROR_INTERNAL;
|
||||
|
|
|
@ -925,12 +925,15 @@ class2_pin_cmd(sc_reader_t *reader, sc_slot_info_t *slot,
|
|||
|
||||
r = SC_SUCCESS;
|
||||
switch (((unsigned int) apdu->sw1 << 8) | apdu->sw2) {
|
||||
case 0x6402: /* Input timed out */
|
||||
case 0x6400: /* Input timed out */
|
||||
r = SC_ERROR_KEYPAD_TIMEOUT;
|
||||
break;
|
||||
case 0x6401: /* Input cancelled */
|
||||
r = SC_ERROR_KEYPAD_CANCELLED;
|
||||
break;
|
||||
case 0x6402: /* PINs don't match */
|
||||
r = SC_ERROR_KEYPAD_PIN_MISMATCH;
|
||||
break;
|
||||
}
|
||||
|
||||
SC_TEST_RET(reader->ctx, r, "PIN command failed");
|
||||
|
|
Loading…
Reference in New Issue