diff --git a/src/ap/wps_hostapd.c b/src/ap/wps_hostapd.c index 469ac3e9b..1b1dce4c4 100644 --- a/src/ap/wps_hostapd.c +++ b/src/ap/wps_hostapd.c @@ -1784,7 +1784,8 @@ struct wpabuf * hostapd_wps_nfc_config_token(struct hostapd_data *hapd, if (hapd->wps == NULL) return NULL; - ret = wps_get_oob_cred(hapd->wps); + ret = wps_get_oob_cred(hapd->wps, hostapd_wps_rf_band_cb(hapd), + hapd->iconf->channel); if (ndef && ret) { struct wpabuf *tmp; tmp = ndef_build_wifi(ret); diff --git a/src/wps/wps.h b/src/wps/wps.h index 355939bf4..6ccce1a9a 100644 --- a/src/wps/wps.h +++ b/src/wps/wps.h @@ -821,7 +821,8 @@ unsigned int wps_generate_pin(void); int wps_pin_str_valid(const char *pin); void wps_free_pending_msgs(struct upnp_pending_message *msgs); -struct wpabuf * wps_get_oob_cred(struct wps_context *wps); +struct wpabuf * wps_get_oob_cred(struct wps_context *wps, int rf_band, + int channel); int wps_oob_use_cred(struct wps_context *wps, struct wps_parse_attr *attr); int wps_attr_text(struct wpabuf *data, char *buf, char *end); const char * wps_ei_str(enum wps_error_indication ei); diff --git a/src/wps/wps_common.c b/src/wps/wps_common.c index e98ec003a..abf3a4fc6 100644 --- a/src/wps/wps_common.c +++ b/src/wps/wps_common.c @@ -352,7 +352,8 @@ void wps_pbc_disable_event(struct wps_context *wps) #ifdef CONFIG_WPS_OOB -struct wpabuf * wps_get_oob_cred(struct wps_context *wps) +struct wpabuf * wps_get_oob_cred(struct wps_context *wps, int rf_band, + int channel) { struct wps_data data; struct wpabuf *plain; @@ -369,6 +370,9 @@ struct wpabuf * wps_get_oob_cred(struct wps_context *wps) data.auth_type = wps->auth_types; data.encr_type = wps->encr_types; if (wps_build_cred(&data, plain) || + (rf_band && wps_build_rf_bands_attr(plain, rf_band)) || + (channel && wps_build_ap_channel(plain, channel)) || + wps_build_mac_addr(plain, wps->dev.mac_addr) || wps_build_wfa_ext(plain, 0, NULL, 0)) { os_free(data.new_psk); wpabuf_free(plain);