diff --git a/src/hsm/cmd_extras.c b/src/hsm/cmd_extras.c index eaea88e..5e1748a 100644 --- a/src/hsm/cmd_extras.c +++ b/src/hsm/cmd_extras.c @@ -36,6 +36,10 @@ int cmd_extras() { return SW_SECURITY_STATUS_NOT_SATISFIED(); } #endif + //check button (if enabled) + if (wait_button_pressed() == true) { + return SW_SECURE_MESSAGE_EXEC_ERROR(); + } if (P1(apdu) == 0xA) { //datetime operations if (P2(apdu) != 0x0) { return SW_INCORRECT_P1P2(); diff --git a/src/hsm/cmd_list_keys.c b/src/hsm/cmd_list_keys.c index a7c9fce..566fd93 100644 --- a/src/hsm/cmd_list_keys.c +++ b/src/hsm/cmd_list_keys.c @@ -60,5 +60,11 @@ int cmd_list_keys() { res_APDU[res_APDU_size++] = f->fid & 0xff; } } +#if !defined(ENABLE_EMULATION) + if ((apdu.rlen + 2 + 10) % 64 == 0) { // FIX for strange behaviour with PSCS and multiple of 64 + res_APDU[res_APDU_size++] = 0; + res_APDU[res_APDU_size++] = 0; + } +#endif return SW_OK(); }