u2f over nfc

https://github.com/flipperdevices/flipperzero-firmware/pull/1755
from @devsnek

may need more testing
This commit is contained in:
jbohack
2023-01-11 19:15:06 -05:00
parent d0d0e8d1d8
commit ea0b5488ad
13 changed files with 327 additions and 66 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
entry,status,name,type,params
Version,+,12.0,,
Version,+,13.0,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
@@ -1198,7 +1198,7 @@ Function,+,furi_hal_nfc_field_on,void,
Function,-,furi_hal_nfc_init,void,
Function,+,furi_hal_nfc_is_busy,_Bool,
Function,+,furi_hal_nfc_is_init,_Bool,
Function,+,furi_hal_nfc_listen,_Bool,"uint8_t*, uint8_t, uint8_t*, uint8_t, _Bool, uint32_t"
Function,+,furi_hal_nfc_listen,_Bool,"FuriHalNfcDevData*, _Bool, uint32_t"
Function,+,furi_hal_nfc_listen_rx,_Bool,"FuriHalNfcTxRxContext*, uint32_t"
Function,+,furi_hal_nfc_listen_sleep,void,
Function,+,furi_hal_nfc_listen_start,void,FuriHalNfcDevData*
1 entry status name type params
2 Version + 12.0 13.0
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
1198 Function - furi_hal_nfc_init void
1199 Function + furi_hal_nfc_is_busy _Bool
1200 Function + furi_hal_nfc_is_init _Bool
1201 Function + furi_hal_nfc_listen _Bool uint8_t*, uint8_t, uint8_t*, uint8_t, _Bool, uint32_t FuriHalNfcDevData*, _Bool, uint32_t
1202 Function + furi_hal_nfc_listen_rx _Bool FuriHalNfcTxRxContext*, uint32_t
1203 Function + furi_hal_nfc_listen_sleep void
1204 Function + furi_hal_nfc_listen_start void FuriHalNfcDevData*
+10 -10
View File
@@ -206,10 +206,7 @@ bool furi_hal_nfc_activate_nfca(uint32_t timeout, uint32_t* cuid) {
}
bool furi_hal_nfc_listen(
uint8_t* uid,
uint8_t uid_len,
uint8_t* atqa,
uint8_t sak,
FuriHalNfcDevData* nfc_data,
bool activate_after_sak,
uint32_t timeout) {
rfalNfcState state = rfalNfcGetState();
@@ -232,16 +229,19 @@ bool furi_hal_nfc_listen(
.notifyCb = NULL,
.activate_after_sak = activate_after_sak,
};
if(FURI_BIT(sak, 5)) {
if (nfc_data->interface == FuriHalNfcInterfaceIsoDep) {
params.compMode = RFAL_COMPLIANCE_MODE_ISO;
}
else if (FURI_BIT(nfc_data->sak, 5)) {
params.compMode = RFAL_COMPLIANCE_MODE_EMV;
} else {
params.compMode = RFAL_COMPLIANCE_MODE_NFC;
}
params.lmConfigPA.nfcidLen = uid_len;
memcpy(params.lmConfigPA.nfcid, uid, uid_len);
params.lmConfigPA.SENS_RES[0] = atqa[0];
params.lmConfigPA.SENS_RES[1] = atqa[1];
params.lmConfigPA.SEL_RES = sak;
params.lmConfigPA.nfcidLen = nfc_data->uid_len;
memcpy(params.lmConfigPA.nfcid, nfc_data->uid, nfc_data->uid_len);
params.lmConfigPA.SENS_RES[0] = nfc_data->atqa[0];
params.lmConfigPA.SENS_RES[1] = nfc_data->atqa[1];
params.lmConfigPA.SEL_RES = nfc_data->sak;
rfalNfcDiscover(&params);
// Disable EMD suppression.