allow get_assertion with disabled UP

This commit is contained in:
Conor Patrick
2019-09-16 16:25:58 +08:00
parent f072561899
commit c61f15a090
6 changed files with 40 additions and 17 deletions

View File

@@ -45,7 +45,7 @@ uint32_t __last_update = 0;
extern PCD_HandleTypeDef hpcd;
static int _NFC_status = 0;
static bool isLowFreq = 0;
static bool _RequestComeFromNFC = false;
static bool _up_disabled = false;
// #define IS_BUTTON_PRESSED() (0 == (LL_GPIO_ReadInputPort(SOLO_BUTTON_PORT) & SOLO_BUTTON_PIN))
static int is_physical_button_pressed()
@@ -92,8 +92,8 @@ static void edge_detect_touch_button()
}
void request_from_nfc(bool request_active) {
_RequestComeFromNFC = request_active;
void device_disable_up(bool disable) {
_up_disabled = disable;
}
// Timer6 overflow handler. happens every ~90ms.
@@ -582,11 +582,17 @@ static int wait_for_button_release(uint32_t wait)
int ctap_user_presence_test(uint32_t up_delay)
{
int ret;
if (device_is_nfc() == NFC_IS_ACTIVE || _RequestComeFromNFC)
if (device_is_nfc() == NFC_IS_ACTIVE)
{
return 1;
}
if (_up_disabled)
{
return 2;
}
#if SKIP_BUTTON_CHECK_WITH_DELAY
int i=500;
while(i--)

View File

@@ -731,10 +731,10 @@ void apdu_process(uint8_t buf0, uint8_t *apduptr, APDU_STRUCT *apdu)
printf1(TAG_NFC, "FIDO2 CTAP message. %d\r\n", timestamp());
// WTX_on(WTX_TIME_DEFAULT);
request_from_nfc(true);
device_disable_up(true);
ctap_response_init(&ctap_resp);
status = ctap_request(apdu->data, apdu->lc, &ctap_resp);
request_from_nfc(false);
device_disable_up(false);
// if (!WTX_off())
// return;