diff --git a/fido2/ctap.c b/fido2/ctap.c index 6d18464..5d01721 100644 --- a/fido2/ctap.c +++ b/fido2/ctap.c @@ -466,12 +466,11 @@ static int ctap_make_auth_data(struct rpId * rp, CborEncoder * map, uint8_t * au count = auth_data_update_count(&authData->head); device_set_status(CTAPHID_STATUS_UPNEEDED); - // if NFC - not need to click a button - int but = 1; - if(!device_is_nfc()) - { - but = ctap_user_presence_test(); - } + + int but; + + but = ctap_user_presence_test(); + if (!but) { @@ -704,7 +703,7 @@ uint8_t ctap_make_credential(CborEncoder * encoder, uint8_t * request, int lengt } if (MC.pinAuthEmpty) { - if (!device_is_nfc() && !ctap_user_presence_test()) + if (!ctap_user_presence_test()) { return CTAP2_ERR_OPERATION_DENIED; } @@ -1143,7 +1142,7 @@ uint8_t ctap_get_assertion(CborEncoder * encoder, uint8_t * request, int length) if (GA.pinAuthEmpty) { - if (!device_is_nfc() && !ctap_user_presence_test()) + if (!ctap_user_presence_test()) { return CTAP2_ERR_OPERATION_DENIED; } diff --git a/targets/stm32l432/build/application.mk b/targets/stm32l432/build/application.mk index c64e9cf..9fe649f 100644 --- a/targets/stm32l432/build/application.mk +++ b/targets/stm32l432/build/application.mk @@ -81,4 +81,4 @@ cbor: cd ../../tinycbor/ && make clean cd ../../tinycbor/ && make CC="$(CC)" AR=$(AR) \ LDFLAGS="$(LDFLAGS_LIB)" \ -CFLAGS="$(CFLAGS)" +CFLAGS="$(CFLAGS) -Os" diff --git a/targets/stm32l432/src/device.c b/targets/stm32l432/src/device.c index c619e80..2d99774 100644 --- a/targets/stm32l432/src/device.c +++ b/targets/stm32l432/src/device.c @@ -111,13 +111,13 @@ void device_init() { hw_init(LOW_FREQUENCY); - isLowFreq = 0; haveNFC = nfc_init(); if (haveNFC) { printf1(TAG_NFC, "Have NFC\r\n"); + isLowFreq = 1; } else { @@ -460,6 +460,10 @@ static int handle_packets() int ctap_user_presence_test() { int ret; + if (device_is_nfc()) + { + return 1; + } #if SKIP_BUTTON_CHECK_WITH_DELAY int i=500; while(i--) diff --git a/targets/stm32l432/src/nfc.c b/targets/stm32l432/src/nfc.c index 4c8f7ff..5b72940 100644 --- a/targets/stm32l432/src/nfc.c +++ b/targets/stm32l432/src/nfc.c @@ -496,9 +496,9 @@ void nfc_process_iblock(uint8_t * buf, int len) // WTX_on(WTX_TIME_DEFAULT); // SystemClock_Config_LF32(); // delay(300); - device_set_clock_rate(DEVICE_LOW_POWER_FAST);; + if (device_is_nfc()) device_set_clock_rate(DEVICE_LOW_POWER_FAST);; u2f_request_nfc(&buf[1], len, &ctap_resp); - device_set_clock_rate(DEVICE_LOW_POWER_IDLE);; + if (device_is_nfc()) device_set_clock_rate(DEVICE_LOW_POWER_IDLE);; // if (!WTX_off()) // return;