* 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:
martin 2005-03-24 16:54:10 +00:00
parent f5b2845340
commit 1139181493
2 changed files with 11 additions and 3 deletions

View File

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

View File

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