mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-21 11:33:04 -05:00
WPS: Allow NFC password token from AP to be used with wps_reg
The AP PIN on wps_reg command can now be replaced with special value "nfc-pw" to use device password from a NFC password token from the AP. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
e6ea2a451c
commit
e484e927a6
@ -138,6 +138,7 @@ static void * eap_wsc_init(struct eap_sm *sm)
|
|||||||
struct wps_credential new_ap_settings;
|
struct wps_credential new_ap_settings;
|
||||||
int res;
|
int res;
|
||||||
u8 dev_pw[WPS_OOB_DEVICE_PASSWORD_LEN];
|
u8 dev_pw[WPS_OOB_DEVICE_PASSWORD_LEN];
|
||||||
|
int nfc = 0;
|
||||||
|
|
||||||
wps = sm->wps;
|
wps = sm->wps;
|
||||||
if (wps == NULL) {
|
if (wps == NULL) {
|
||||||
@ -193,13 +194,18 @@ static void * eap_wsc_init(struct eap_sm *sm)
|
|||||||
cfg.pin = dev_pw;
|
cfg.pin = dev_pw;
|
||||||
cfg.pin_len /= 2;
|
cfg.pin_len /= 2;
|
||||||
}
|
}
|
||||||
|
if (cfg.pin_len == 6 && os_strncmp(pos, "nfc-pw", 6) == 0) {
|
||||||
|
cfg.pin = NULL;
|
||||||
|
cfg.pin_len = 0;
|
||||||
|
nfc = 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
pos = os_strstr(phase1, "pbc=1");
|
pos = os_strstr(phase1, "pbc=1");
|
||||||
if (pos)
|
if (pos)
|
||||||
cfg.pbc = 1;
|
cfg.pbc = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfg.pin == NULL && !cfg.pbc) {
|
if (cfg.pin == NULL && !cfg.pbc && !nfc) {
|
||||||
wpa_printf(MSG_INFO, "EAP-WSC: PIN or PBC not set in phase1 "
|
wpa_printf(MSG_INFO, "EAP-WSC: PIN or PBC not set in phase1 "
|
||||||
"configuration data");
|
"configuration data");
|
||||||
os_free(data);
|
os_free(data);
|
||||||
|
@ -1897,21 +1897,13 @@ static int wpas_wps_use_cred(struct wpa_supplicant *wpa_s,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_WPS_ER
|
|
||||||
static int wpas_wps_add_nfc_password_token(struct wpa_supplicant *wpa_s,
|
static int wpas_wps_add_nfc_password_token(struct wpa_supplicant *wpa_s,
|
||||||
struct wps_parse_attr *attr)
|
struct wps_parse_attr *attr)
|
||||||
{
|
{
|
||||||
if (wpa_s->wps_er == NULL) {
|
|
||||||
wpa_printf(MSG_DEBUG, "WPS: Ignore NFC password token while "
|
|
||||||
"ER functionality is disabled");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return wps_registrar_add_nfc_password_token(
|
return wps_registrar_add_nfc_password_token(
|
||||||
wpa_s->wps->registrar, attr->oob_dev_password,
|
wpa_s->wps->registrar, attr->oob_dev_password,
|
||||||
attr->oob_dev_password_len);
|
attr->oob_dev_password_len);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_WPS_ER */
|
|
||||||
|
|
||||||
|
|
||||||
static int wpas_wps_nfc_tag_process(struct wpa_supplicant *wpa_s,
|
static int wpas_wps_nfc_tag_process(struct wpa_supplicant *wpa_s,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user