WPS: Enable WSC 2.0 support unconditionally

There is not much point in building devices with WPS 1.0 only supported
nowadays. As such, there is not sufficient justification for maintaining
extra complexity for the CONFIG_WPS2 build option either. Remove this by
enabling WSC 2.0 support unconditionally.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2014-03-25 17:40:50 +02:00 committed by Jouni Malinen
parent 91364b7f10
commit c201f93a9e
24 changed files with 4 additions and 158 deletions

View file

@ -393,10 +393,6 @@ NEED_AES_UNWRAP=y
endif endif
ifdef CONFIG_WPS ifdef CONFIG_WPS
ifdef CONFIG_WPS2
L_CFLAGS += -DCONFIG_WPS2
endif
L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC L_CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
OBJS += src/utils/uuid.c OBJS += src/utils/uuid.c
OBJS += src/ap/wps_hostapd.c OBJS += src/ap/wps_hostapd.c

View file

@ -376,10 +376,6 @@ NEED_AES_UNWRAP=y
endif endif
ifdef CONFIG_WPS ifdef CONFIG_WPS
ifdef CONFIG_WPS2
CFLAGS += -DCONFIG_WPS2
endif
CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC CFLAGS += -DCONFIG_WPS -DEAP_SERVER_WSC
OBJS += ../src/utils/uuid.o OBJS += ../src/utils/uuid.o
OBJS += ../src/ap/wps_hostapd.o OBJS += ../src/ap/wps_hostapd.o

View file

@ -63,7 +63,6 @@ includes WPS support and uses madwifi driver interface:
CONFIG_DRIVER_MADWIFI=y CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I/usr/src/madwifi-0.9.3 CFLAGS += -I/usr/src/madwifi-0.9.3
CONFIG_WPS=y CONFIG_WPS=y
CONFIG_WPS2=y
CONFIG_WPS_UPNP=y CONFIG_WPS_UPNP=y
Following parameter can be used to enable support for NFC config method: Following parameter can be used to enable support for NFC config method:

View file

@ -108,8 +108,6 @@ CONFIG_IEEE80211W=y
# Wi-Fi Protected Setup (WPS) # Wi-Fi Protected Setup (WPS)
CONFIG_WPS=y CONFIG_WPS=y
# Enable WSC 2.0 support
CONFIG_WPS2=y
# Enable UPnP support for external WPS Registrars # Enable UPnP support for external WPS Registrars
#CONFIG_WPS_UPNP=y #CONFIG_WPS_UPNP=y

View file

@ -113,8 +113,6 @@ CONFIG_EAP_TTLS=y
# Wi-Fi Protected Setup (WPS) # Wi-Fi Protected Setup (WPS)
#CONFIG_WPS=y #CONFIG_WPS=y
# Enable WSC 2.0 support
#CONFIG_WPS2=y
# Enable UPnP support for external WPS Registrars # Enable UPnP support for external WPS Registrars
#CONFIG_WPS_UPNP=y #CONFIG_WPS_UPNP=y
# Enable WPS support with NFC config method # Enable WPS support with NFC config method

View file

@ -782,7 +782,7 @@ static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
} }
#endif /* CONFIG_IEEE80211N */ #endif /* CONFIG_IEEE80211N */
#ifdef CONFIG_WPS2 #ifdef CONFIG_WPS
if (full_config && bss->wps_state && bss->ignore_broadcast_ssid) { if (full_config && bss->wps_state && bss->ignore_broadcast_ssid) {
wpa_printf(MSG_INFO, "WPS: ignore_broadcast_ssid " wpa_printf(MSG_INFO, "WPS: ignore_broadcast_ssid "
"configuration forced WPS to be disabled"); "configuration forced WPS to be disabled");
@ -803,7 +803,7 @@ static int hostapd_config_check_bss(struct hostapd_bss_config *bss,
"WPA2/CCMP forced WPS to be disabled"); "WPA2/CCMP forced WPS to be disabled");
bss->wps_state = 0; bss->wps_state = 0;
} }
#endif /* CONFIG_WPS2 */ #endif /* CONFIG_WPS */
#ifdef CONFIG_HS20 #ifdef CONFIG_HS20
if (full_config && bss->hs20 && if (full_config && bss->hs20 &&

View file

@ -128,14 +128,14 @@ int hostapd_build_ap_extra_ies(struct hostapd_data *hapd,
} }
#endif /* CONFIG_P2P_MANAGER */ #endif /* CONFIG_P2P_MANAGER */
#ifdef CONFIG_WPS2 #ifdef CONFIG_WPS
if (hapd->conf->wps_state) { if (hapd->conf->wps_state) {
struct wpabuf *a = wps_build_assoc_resp_ie(); struct wpabuf *a = wps_build_assoc_resp_ie();
if (a && wpabuf_resize(&assocresp, wpabuf_len(a)) == 0) if (a && wpabuf_resize(&assocresp, wpabuf_len(a)) == 0)
wpabuf_put_buf(assocresp, a); wpabuf_put_buf(assocresp, a);
wpabuf_free(a); wpabuf_free(a);
} }
#endif /* CONFIG_WPS2 */ #endif /* CONFIG_WPS */
#ifdef CONFIG_P2P_MANAGER #ifdef CONFIG_P2P_MANAGER
if (hapd->conf->p2p & P2P_MANAGE) { if (hapd->conf->p2p & P2P_MANAGE) {

View file

@ -378,48 +378,11 @@ static int hapd_wps_reconfig_in_memory(struct hostapd_data *hapd,
} }
bss->auth_algs = 1; bss->auth_algs = 1;
} else { } else {
#ifdef CONFIG_WPS2
/* /*
* WPS 2.0 does not allow WEP to be configured, so no need to * WPS 2.0 does not allow WEP to be configured, so no need to
* process that option here either. * process that option here either.
*/ */
bss->auth_algs = 1; bss->auth_algs = 1;
#else /* CONFIG_WPS2 */
if ((cred->auth_type & WPS_AUTH_OPEN) &&
(cred->auth_type & WPS_AUTH_SHARED))
bss->auth_algs = 3;
else if (cred->auth_type & WPS_AUTH_SHARED)
bss->auth_algs = 2;
else
bss->auth_algs = 1;
if (cred->encr_type & WPS_ENCR_WEP && cred->key_idx > 0 &&
cred->key_idx <= 4) {
struct hostapd_wep_keys *wep = &bss->ssid.wep;
int idx = cred->key_idx;
if (idx)
idx--;
wep->idx = idx;
if (cred->key_len == 10 || cred->key_len == 26) {
os_free(wep->key[idx]);
wep->key[idx] = os_malloc(cred->key_len / 2);
if (wep->key[idx] == NULL ||
hexstr2bin((const char *) cred->key,
wep->key[idx],
cred->key_len / 2))
return -1;
wep->len[idx] = cred->key_len / 2;
} else {
os_free(wep->key[idx]);
wep->key[idx] = os_malloc(cred->key_len);
if (wep->key[idx] == NULL)
return -1;
os_memcpy(wep->key[idx], cred->key,
cred->key_len);
wep->len[idx] = cred->key_len;
}
wep->keys_set = 1;
}
#endif /* CONFIG_WPS2 */
} }
/* Schedule configuration reload after short period of time to allow /* Schedule configuration reload after short period of time to allow
@ -594,39 +557,11 @@ static int hapd_wps_cred_cb(struct hostapd_data *hapd, void *ctx)
fprintf(nconf, "auth_algs=1\n"); fprintf(nconf, "auth_algs=1\n");
} else { } else {
#ifdef CONFIG_WPS2
/* /*
* WPS 2.0 does not allow WEP to be configured, so no need to * WPS 2.0 does not allow WEP to be configured, so no need to
* process that option here either. * process that option here either.
*/ */
fprintf(nconf, "auth_algs=1\n"); fprintf(nconf, "auth_algs=1\n");
#else /* CONFIG_WPS2 */
if ((cred->auth_type & WPS_AUTH_OPEN) &&
(cred->auth_type & WPS_AUTH_SHARED))
fprintf(nconf, "auth_algs=3\n");
else if (cred->auth_type & WPS_AUTH_SHARED)
fprintf(nconf, "auth_algs=2\n");
else
fprintf(nconf, "auth_algs=1\n");
if (cred->encr_type & WPS_ENCR_WEP && cred->key_idx <= 4) {
int key_idx = cred->key_idx;
if (key_idx)
key_idx--;
fprintf(nconf, "wep_default_key=%d\n", key_idx);
fprintf(nconf, "wep_key%d=", key_idx);
if (cred->key_len == 10 || cred->key_len == 26) {
/* WEP key as a hex string */
for (i = 0; i < cred->key_len; i++)
fputc(cred->key[i], nconf);
} else {
/* Raw WEP key; convert to hex */
for (i = 0; i < cred->key_len; i++)
fprintf(nconf, "%02x", cred->key[i]);
}
fprintf(nconf, "\n");
}
#endif /* CONFIG_WPS2 */
} }
fprintf(nconf, "# WPS configuration - END\n"); fprintf(nconf, "# WPS configuration - END\n");
@ -1078,7 +1013,6 @@ int hostapd_init_wps(struct hostapd_data *hapd,
os_strdup(hapd->conf->serial_number) : NULL; os_strdup(hapd->conf->serial_number) : NULL;
wps->config_methods = wps->config_methods =
wps_config_methods_str2bin(hapd->conf->config_methods); wps_config_methods_str2bin(hapd->conf->config_methods);
#ifdef CONFIG_WPS2
if ((wps->config_methods & if ((wps->config_methods &
(WPS_CONFIG_DISPLAY | WPS_CONFIG_VIRT_DISPLAY | (WPS_CONFIG_DISPLAY | WPS_CONFIG_VIRT_DISPLAY |
WPS_CONFIG_PHY_DISPLAY)) == WPS_CONFIG_DISPLAY) { WPS_CONFIG_PHY_DISPLAY)) == WPS_CONFIG_DISPLAY) {
@ -1093,7 +1027,6 @@ int hostapd_init_wps(struct hostapd_data *hapd,
"virtual_push_button for WPS 2.0 compliance"); "virtual_push_button for WPS 2.0 compliance");
wps->config_methods |= WPS_CONFIG_VIRT_PUSHBUTTON; wps->config_methods |= WPS_CONFIG_VIRT_PUSHBUTTON;
} }
#endif /* CONFIG_WPS2 */
os_memcpy(wps->dev.pri_dev_type, hapd->conf->device_type, os_memcpy(wps->dev.pri_dev_type, hapd->conf->device_type,
WPS_DEV_TYPE_LEN); WPS_DEV_TYPE_LEN);

View file

@ -511,13 +511,11 @@ struct wpabuf * wps_build_probe_req_ie(u16 pw_id, struct wps_device_data *dev,
wps_build_assoc_state(NULL, ie) || wps_build_assoc_state(NULL, ie) ||
wps_build_config_error(ie, WPS_CFG_NO_ERROR) || wps_build_config_error(ie, WPS_CFG_NO_ERROR) ||
wps_build_dev_password_id(ie, pw_id) || wps_build_dev_password_id(ie, pw_id) ||
#ifdef CONFIG_WPS2
wps_build_manufacturer(dev, ie) || wps_build_manufacturer(dev, ie) ||
wps_build_model_name(dev, ie) || wps_build_model_name(dev, ie) ||
wps_build_model_number(dev, ie) || wps_build_model_number(dev, ie) ||
wps_build_dev_name(dev, ie) || wps_build_dev_name(dev, ie) ||
wps_build_wfa_ext(ie, req_type == WPS_REQ_ENROLLEE, NULL, 0) || wps_build_wfa_ext(ie, req_type == WPS_REQ_ENROLLEE, NULL, 0) ||
#endif /* CONFIG_WPS2 */
wps_build_req_dev_type(dev, ie, num_req_dev_types, req_dev_types) wps_build_req_dev_type(dev, ie, num_req_dev_types, req_dev_types)
|| ||
wps_build_secondary_dev_type(dev, ie) wps_build_secondary_dev_type(dev, ie)
@ -526,13 +524,6 @@ struct wpabuf * wps_build_probe_req_ie(u16 pw_id, struct wps_device_data *dev,
return NULL; return NULL;
} }
#ifndef CONFIG_WPS2
if (dev->p2p && wps_build_dev_name(dev, ie)) {
wpabuf_free(ie);
return NULL;
}
#endif /* CONFIG_WPS2 */
return wps_ie_encapsulate(ie); return wps_ie_encapsulate(ie);
} }

View file

@ -205,7 +205,6 @@ int wps_build_version(struct wpabuf *msg)
int wps_build_wfa_ext(struct wpabuf *msg, int req_to_enroll, int wps_build_wfa_ext(struct wpabuf *msg, int req_to_enroll,
const u8 *auth_macs, size_t auth_macs_count) const u8 *auth_macs, size_t auth_macs_count)
{ {
#ifdef CONFIG_WPS2
u8 *len; u8 *len;
#ifdef CONFIG_WPS_TESTING #ifdef CONFIG_WPS_TESTING
@ -246,7 +245,6 @@ int wps_build_wfa_ext(struct wpabuf *msg, int req_to_enroll,
} }
WPA_PUT_BE16(len, (u8 *) wpabuf_put(msg, 0) - len - 2); WPA_PUT_BE16(len, (u8 *) wpabuf_put(msg, 0) - len - 2);
#endif /* CONFIG_WPS2 */
#ifdef CONFIG_WPS_TESTING #ifdef CONFIG_WPS_TESTING
if (WPS_VERSION > 0x20) { if (WPS_VERSION > 0x20) {
@ -299,9 +297,7 @@ int wps_build_auth_type_flags(struct wps_data *wps, struct wpabuf *msg)
/* WPA/WPA2-Enterprise enrollment not supported through WPS */ /* WPA/WPA2-Enterprise enrollment not supported through WPS */
auth_types &= ~WPS_AUTH_WPA; auth_types &= ~WPS_AUTH_WPA;
auth_types &= ~WPS_AUTH_WPA2; auth_types &= ~WPS_AUTH_WPA2;
#ifdef CONFIG_WPS2
auth_types &= ~WPS_AUTH_SHARED; auth_types &= ~WPS_AUTH_SHARED;
#endif /* CONFIG_WPS2 */
wpa_printf(MSG_DEBUG, "WPS: * Authentication Type Flags"); wpa_printf(MSG_DEBUG, "WPS: * Authentication Type Flags");
wpabuf_put_be16(msg, ATTR_AUTH_TYPE_FLAGS); wpabuf_put_be16(msg, ATTR_AUTH_TYPE_FLAGS);
wpabuf_put_be16(msg, 2); wpabuf_put_be16(msg, 2);
@ -313,9 +309,7 @@ int wps_build_auth_type_flags(struct wps_data *wps, struct wpabuf *msg)
int wps_build_encr_type_flags(struct wps_data *wps, struct wpabuf *msg) int wps_build_encr_type_flags(struct wps_data *wps, struct wpabuf *msg)
{ {
u16 encr_types = WPS_ENCR_TYPES; u16 encr_types = WPS_ENCR_TYPES;
#ifdef CONFIG_WPS2
encr_types &= ~WPS_ENCR_WEP; encr_types &= ~WPS_ENCR_WEP;
#endif /* CONFIG_WPS2 */
wpa_printf(MSG_DEBUG, "WPS: * Encryption Type Flags"); wpa_printf(MSG_DEBUG, "WPS: * Encryption Type Flags");
wpabuf_put_be16(msg, ATTR_ENCR_TYPE_FLAGS); wpabuf_put_be16(msg, ATTR_ENCR_TYPE_FLAGS);
wpabuf_put_be16(msg, 2); wpabuf_put_be16(msg, 2);

View file

@ -531,9 +531,7 @@ u16 wps_config_methods_str2bin(const char *str)
if (str == NULL) { if (str == NULL) {
/* Default to enabling methods based on build configuration */ /* Default to enabling methods based on build configuration */
methods |= WPS_CONFIG_DISPLAY | WPS_CONFIG_KEYPAD; methods |= WPS_CONFIG_DISPLAY | WPS_CONFIG_KEYPAD;
#ifdef CONFIG_WPS2
methods |= WPS_CONFIG_VIRT_DISPLAY; methods |= WPS_CONFIG_VIRT_DISPLAY;
#endif /* CONFIG_WPS2 */
#ifdef CONFIG_WPS_NFC #ifdef CONFIG_WPS_NFC
methods |= WPS_CONFIG_NFC_INTERFACE; methods |= WPS_CONFIG_NFC_INTERFACE;
#endif /* CONFIG_WPS_NFC */ #endif /* CONFIG_WPS_NFC */
@ -554,7 +552,6 @@ u16 wps_config_methods_str2bin(const char *str)
methods |= WPS_CONFIG_PUSHBUTTON; methods |= WPS_CONFIG_PUSHBUTTON;
if (os_strstr(str, "keypad")) if (os_strstr(str, "keypad"))
methods |= WPS_CONFIG_KEYPAD; methods |= WPS_CONFIG_KEYPAD;
#ifdef CONFIG_WPS2
if (os_strstr(str, "virtual_display")) if (os_strstr(str, "virtual_display"))
methods |= WPS_CONFIG_VIRT_DISPLAY; methods |= WPS_CONFIG_VIRT_DISPLAY;
if (os_strstr(str, "physical_display")) if (os_strstr(str, "physical_display"))
@ -563,7 +560,6 @@ u16 wps_config_methods_str2bin(const char *str)
methods |= WPS_CONFIG_VIRT_PUSHBUTTON; methods |= WPS_CONFIG_VIRT_PUSHBUTTON;
if (os_strstr(str, "physical_push_button")) if (os_strstr(str, "physical_push_button"))
methods |= WPS_CONFIG_PHY_PUSHBUTTON; methods |= WPS_CONFIG_PHY_PUSHBUTTON;
#endif /* CONFIG_WPS2 */
} }
return methods; return methods;

View file

@ -18,11 +18,7 @@ extern int wps_corrupt_pkhash;
#else /* CONFIG_WPS_TESTING */ #else /* CONFIG_WPS_TESTING */
#ifdef CONFIG_WPS2
#define WPS_VERSION 0x20 #define WPS_VERSION 0x20
#else /* CONFIG_WPS2 */
#define WPS_VERSION 0x10
#endif /* CONFIG_WPS2 */
#endif /* CONFIG_WPS_TESTING */ #endif /* CONFIG_WPS_TESTING */
@ -246,12 +242,10 @@ enum wps_error_indication {
#define WPS_CONFIG_NFC_INTERFACE 0x0040 #define WPS_CONFIG_NFC_INTERFACE 0x0040
#define WPS_CONFIG_PUSHBUTTON 0x0080 #define WPS_CONFIG_PUSHBUTTON 0x0080
#define WPS_CONFIG_KEYPAD 0x0100 #define WPS_CONFIG_KEYPAD 0x0100
#ifdef CONFIG_WPS2
#define WPS_CONFIG_VIRT_PUSHBUTTON 0x0280 #define WPS_CONFIG_VIRT_PUSHBUTTON 0x0280
#define WPS_CONFIG_PHY_PUSHBUTTON 0x0480 #define WPS_CONFIG_PHY_PUSHBUTTON 0x0480
#define WPS_CONFIG_VIRT_DISPLAY 0x2008 #define WPS_CONFIG_VIRT_DISPLAY 0x2008
#define WPS_CONFIG_PHY_DISPLAY 0x4008 #define WPS_CONFIG_PHY_DISPLAY 0x4008
#endif /* CONFIG_WPS2 */
/* Connection Type Flags */ /* Connection Type Flags */
#define WPS_CONN_ESS 0x01 #define WPS_CONN_ESS 0x01

View file

@ -130,10 +130,8 @@ static struct wpabuf * wps_build_m1(struct wps_data *wps)
* workaround. * workaround.
*/ */
config_methods &= ~WPS_CONFIG_PUSHBUTTON; config_methods &= ~WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
config_methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON | config_methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON |
WPS_CONFIG_PHY_PUSHBUTTON); WPS_CONFIG_PHY_PUSHBUTTON);
#endif /* CONFIG_WPS2 */
} }
if (wps_build_version(msg) || if (wps_build_version(msg) ||
@ -698,7 +696,6 @@ static int wps_process_cred_e(struct wps_data *wps, const u8 *cred,
#endif /* CONFIG_WPS_STRICT */ #endif /* CONFIG_WPS_STRICT */
} }
#ifdef CONFIG_WPS2
if (!(wps->cred.encr_type & if (!(wps->cred.encr_type &
(WPS_ENCR_NONE | WPS_ENCR_TKIP | WPS_ENCR_AES))) { (WPS_ENCR_NONE | WPS_ENCR_TKIP | WPS_ENCR_AES))) {
if (wps->cred.encr_type & WPS_ENCR_WEP) { if (wps->cred.encr_type & WPS_ENCR_WEP) {
@ -712,7 +709,6 @@ static int wps_process_cred_e(struct wps_data *wps, const u8 *cred,
"invalid encr_type 0x%x", wps->cred.encr_type); "invalid encr_type 0x%x", wps->cred.encr_type);
return -1; return -1;
} }
#endif /* CONFIG_WPS2 */
if (wps->wps->cred_cb) { if (wps->wps->cred_cb) {
wps->cred.cred_attr = cred - 4; wps->cred.cred_attr = cred - 4;
@ -799,7 +795,6 @@ static int wps_process_ap_settings_e(struct wps_data *wps,
#endif /* CONFIG_WPS_STRICT */ #endif /* CONFIG_WPS_STRICT */
} }
#ifdef CONFIG_WPS2
if (!(cred.encr_type & (WPS_ENCR_NONE | WPS_ENCR_TKIP | WPS_ENCR_AES))) if (!(cred.encr_type & (WPS_ENCR_NONE | WPS_ENCR_TKIP | WPS_ENCR_AES)))
{ {
if (cred.encr_type & WPS_ENCR_WEP) { if (cred.encr_type & WPS_ENCR_WEP) {
@ -813,7 +808,6 @@ static int wps_process_ap_settings_e(struct wps_data *wps,
"invalid encr_type 0x%x", cred.encr_type); "invalid encr_type 0x%x", cred.encr_type);
return -1; return -1;
} }
#endif /* CONFIG_WPS2 */
#ifdef CONFIG_WPS_STRICT #ifdef CONFIG_WPS_STRICT
if (wps2) { if (wps2) {
@ -830,7 +824,6 @@ static int wps_process_ap_settings_e(struct wps_data *wps,
} }
#endif /* CONFIG_WPS_STRICT */ #endif /* CONFIG_WPS_STRICT */
#ifdef CONFIG_WPS2
if ((cred.encr_type & (WPS_ENCR_TKIP | WPS_ENCR_AES)) == WPS_ENCR_TKIP) if ((cred.encr_type & (WPS_ENCR_TKIP | WPS_ENCR_AES)) == WPS_ENCR_TKIP)
{ {
wpa_printf(MSG_DEBUG, "WPS: Upgrade encr_type TKIP -> " wpa_printf(MSG_DEBUG, "WPS: Upgrade encr_type TKIP -> "
@ -844,7 +837,6 @@ static int wps_process_ap_settings_e(struct wps_data *wps,
"WPAPSK+WPA2PSK"); "WPAPSK+WPA2PSK");
cred.auth_type |= WPS_AUTH_WPA2PSK; cred.auth_type |= WPS_AUTH_WPA2PSK;
} }
#endif /* CONFIG_WPS2 */
if (wps->wps->cred_cb) { if (wps->wps->cred_cb) {
cred.cred_attr = wpabuf_head(attrs); cred.cred_attr = wpabuf_head(attrs);

View file

@ -1490,11 +1490,9 @@ static int wps_er_build_sel_reg_config_methods(struct wpabuf *msg,
static int wps_er_build_uuid_r(struct wpabuf *msg, const u8 *uuid_r) static int wps_er_build_uuid_r(struct wpabuf *msg, const u8 *uuid_r)
{ {
#ifdef CONFIG_WPS2
wpabuf_put_be16(msg, ATTR_UUID_R); wpabuf_put_be16(msg, ATTR_UUID_R);
wpabuf_put_be16(msg, WPS_UUID_LEN); wpabuf_put_be16(msg, WPS_UUID_LEN);
wpabuf_put_data(msg, uuid_r, WPS_UUID_LEN); wpabuf_put_data(msg, uuid_r, WPS_UUID_LEN);
#endif /* CONFIG_WPS2 */
return 0; return 0;
} }
@ -1506,9 +1504,7 @@ void wps_er_set_sel_reg(struct wps_er *er, int sel_reg, u16 dev_passwd_id,
struct wps_er_ap *ap; struct wps_er_ap *ap;
struct wps_registrar *reg = er->wps->registrar; struct wps_registrar *reg = er->wps->registrar;
const u8 *auth_macs; const u8 *auth_macs;
#ifdef CONFIG_WPS2
u8 bcast[ETH_ALEN]; u8 bcast[ETH_ALEN];
#endif /* CONFIG_WPS2 */
size_t count; size_t count;
union wps_event_data data; union wps_event_data data;
@ -1522,13 +1518,11 @@ void wps_er_set_sel_reg(struct wps_er *er, int sel_reg, u16 dev_passwd_id,
return; return;
auth_macs = wps_authorized_macs(reg, &count); auth_macs = wps_authorized_macs(reg, &count);
#ifdef CONFIG_WPS2
if (count == 0) { if (count == 0) {
os_memset(bcast, 0xff, ETH_ALEN); os_memset(bcast, 0xff, ETH_ALEN);
auth_macs = bcast; auth_macs = bcast;
count = 1; count = 1;
} }
#endif /* CONFIG_WPS2 */
if (wps_build_version(msg) || if (wps_build_version(msg) ||
wps_er_build_selected_registrar(msg, sel_reg) || wps_er_build_selected_registrar(msg, sel_reg) ||

View file

@ -538,7 +538,6 @@ static int wps_build_sel_pbc_reg_uuid_e(struct wps_registrar *reg,
static void wps_set_pushbutton(u16 *methods, u16 conf_methods) static void wps_set_pushbutton(u16 *methods, u16 conf_methods)
{ {
*methods |= WPS_CONFIG_PUSHBUTTON; *methods |= WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
if ((conf_methods & WPS_CONFIG_VIRT_PUSHBUTTON) == if ((conf_methods & WPS_CONFIG_VIRT_PUSHBUTTON) ==
WPS_CONFIG_VIRT_PUSHBUTTON) WPS_CONFIG_VIRT_PUSHBUTTON)
*methods |= WPS_CONFIG_VIRT_PUSHBUTTON; *methods |= WPS_CONFIG_VIRT_PUSHBUTTON;
@ -556,7 +555,6 @@ static void wps_set_pushbutton(u16 *methods, u16 conf_methods)
*/ */
*methods |= WPS_CONFIG_PHY_PUSHBUTTON; *methods |= WPS_CONFIG_PHY_PUSHBUTTON;
} }
#endif /* CONFIG_WPS2 */
} }
@ -568,10 +566,8 @@ static int wps_build_sel_reg_config_methods(struct wps_registrar *reg,
return 0; return 0;
methods = reg->wps->config_methods; methods = reg->wps->config_methods;
methods &= ~WPS_CONFIG_PUSHBUTTON; methods &= ~WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON | methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON |
WPS_CONFIG_PHY_PUSHBUTTON); WPS_CONFIG_PHY_PUSHBUTTON);
#endif /* CONFIG_WPS2 */
if (reg->pbc) if (reg->pbc)
wps_set_pushbutton(&methods, reg->wps->config_methods); wps_set_pushbutton(&methods, reg->wps->config_methods);
if (reg->sel_reg_config_methods_override >= 0) if (reg->sel_reg_config_methods_override >= 0)
@ -594,10 +590,8 @@ static int wps_build_probe_config_methods(struct wps_registrar *reg,
* external Registrars. * external Registrars.
*/ */
methods = reg->wps->config_methods & ~WPS_CONFIG_PUSHBUTTON; methods = reg->wps->config_methods & ~WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON | methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON |
WPS_CONFIG_PHY_PUSHBUTTON); WPS_CONFIG_PHY_PUSHBUTTON);
#endif /* CONFIG_WPS2 */
wpa_printf(MSG_DEBUG, "WPS: * Config Methods (%x)", methods); wpa_printf(MSG_DEBUG, "WPS: * Config Methods (%x)", methods);
wpabuf_put_be16(msg, ATTR_CONFIG_METHODS); wpabuf_put_be16(msg, ATTR_CONFIG_METHODS);
wpabuf_put_be16(msg, 2); wpabuf_put_be16(msg, 2);
@ -617,13 +611,11 @@ const u8 * wps_authorized_macs(struct wps_registrar *reg, size_t *count)
{ {
*count = 0; *count = 0;
#ifdef CONFIG_WPS2
while (*count < WPS_MAX_AUTHORIZED_MACS) { while (*count < WPS_MAX_AUTHORIZED_MACS) {
if (is_zero_ether_addr(reg->authorized_macs_union[*count])) if (is_zero_ether_addr(reg->authorized_macs_union[*count]))
break; break;
(*count)++; (*count)++;
} }
#endif /* CONFIG_WPS2 */
return (const u8 *) reg->authorized_macs_union; return (const u8 *) reg->authorized_macs_union;
} }
@ -1217,10 +1209,8 @@ static void wps_cb_set_sel_reg(struct wps_registrar *reg)
if (reg->selected_registrar) { if (reg->selected_registrar) {
methods = reg->wps->config_methods & ~WPS_CONFIG_PUSHBUTTON; methods = reg->wps->config_methods & ~WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON | methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON |
WPS_CONFIG_PHY_PUSHBUTTON); WPS_CONFIG_PHY_PUSHBUTTON);
#endif /* CONFIG_WPS2 */
if (reg->pbc) if (reg->pbc)
wps_set_pushbutton(&methods, reg->wps->config_methods); wps_set_pushbutton(&methods, reg->wps->config_methods);
} }
@ -3446,10 +3436,8 @@ void wps_registrar_selected_registrar_changed(struct wps_registrar *reg,
u16 methods; u16 methods;
methods = reg->wps->config_methods & ~WPS_CONFIG_PUSHBUTTON; methods = reg->wps->config_methods & ~WPS_CONFIG_PUSHBUTTON;
#ifdef CONFIG_WPS2
methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON | methods &= ~(WPS_CONFIG_VIRT_PUSHBUTTON |
WPS_CONFIG_PHY_PUSHBUTTON); WPS_CONFIG_PHY_PUSHBUTTON);
#endif /* CONFIG_WPS2 */
if (reg->pbc) { if (reg->pbc) {
reg->sel_reg_dev_password_id_override = reg->sel_reg_dev_password_id_override =
DEV_PW_PUSHBUTTON; DEV_PW_PUSHBUTTON;
@ -3510,7 +3498,6 @@ int wps_registrar_get_info(struct wps_registrar *reg, const u8 *addr,
int wps_registrar_config_ap(struct wps_registrar *reg, int wps_registrar_config_ap(struct wps_registrar *reg,
struct wps_credential *cred) struct wps_credential *cred)
{ {
#ifdef CONFIG_WPS2
wpa_printf(MSG_DEBUG, "WPS: encr_type=0x%x", cred->encr_type); wpa_printf(MSG_DEBUG, "WPS: encr_type=0x%x", cred->encr_type);
if (!(cred->encr_type & (WPS_ENCR_NONE | WPS_ENCR_TKIP | if (!(cred->encr_type & (WPS_ENCR_NONE | WPS_ENCR_TKIP |
WPS_ENCR_AES))) { WPS_ENCR_AES))) {
@ -3538,7 +3525,6 @@ int wps_registrar_config_ap(struct wps_registrar *reg,
"WPAPSK+WPA2PSK"); "WPAPSK+WPA2PSK");
cred->auth_type |= WPS_AUTH_WPA2PSK; cred->auth_type |= WPS_AUTH_WPA2PSK;
} }
#endif /* CONFIG_WPS2 */
if (reg->wps->cred_cb) if (reg->wps->cred_cb)
return reg->wps->cred_cb(reg->wps->cb_ctx, cred); return reg->wps->cred_cb(reg->wps->cb_ctx, cred);

View file

@ -61,11 +61,9 @@ int upnp_er_set_selected_registrar(struct wps_registrar *reg,
os_memcpy(s->authorized_macs, attr.authorized_macs, os_memcpy(s->authorized_macs, attr.authorized_macs,
count * ETH_ALEN); count * ETH_ALEN);
} else if (!attr.version2) { } else if (!attr.version2) {
#ifdef CONFIG_WPS2
wpa_printf(MSG_DEBUG, "WPS: Add broadcast " wpa_printf(MSG_DEBUG, "WPS: Add broadcast "
"AuthorizedMACs for WPS 1.0 ER"); "AuthorizedMACs for WPS 1.0 ER");
os_memset(s->authorized_macs, 0xff, ETH_ALEN); os_memset(s->authorized_macs, 0xff, ETH_ALEN);
#endif /* CONFIG_WPS2 */
} }
eloop_register_timeout(WPS_PBC_WALK_TIME, 0, eloop_register_timeout(WPS_PBC_WALK_TIME, 0,
upnp_er_set_selected_timeout, s, reg); upnp_er_set_selected_timeout, s, reg);

View file

@ -617,10 +617,6 @@ NEED_SHA256=y
endif endif
ifdef CONFIG_WPS ifdef CONFIG_WPS
ifdef CONFIG_WPS2
L_CFLAGS += -DCONFIG_WPS2
endif
# EAP-WSC # EAP-WSC
L_CFLAGS += -DCONFIG_WPS -DEAP_WSC L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
OBJS += wps_supplicant.c OBJS += wps_supplicant.c

View file

@ -622,10 +622,6 @@ NEED_SHA256=y
endif endif
ifdef CONFIG_WPS ifdef CONFIG_WPS
ifdef CONFIG_WPS2
CFLAGS += -DCONFIG_WPS2
endif
# EAP-WSC # EAP-WSC
CFLAGS += -DCONFIG_WPS -DEAP_WSC CFLAGS += -DCONFIG_WPS -DEAP_WSC
OBJS += wps_supplicant.o OBJS += wps_supplicant.o

View file

@ -60,7 +60,6 @@ driver interface:
CONFIG_DRIVER_NL80211=y CONFIG_DRIVER_NL80211=y
CONFIG_WPS=y CONFIG_WPS=y
CONFIG_WPS2=y
If you want to enable WPS external registrar (ER) functionality, you If you want to enable WPS external registrar (ER) functionality, you
will also need to add following line: will also need to add following line:

View file

@ -141,8 +141,6 @@ CONFIG_EAP_AKA_PRIME=y
# Wi-Fi Protected Setup (WPS) # Wi-Fi Protected Setup (WPS)
CONFIG_WPS=y CONFIG_WPS=y
# Enable WSC 2.0 support
CONFIG_WPS2=y
# Enable WPS external registrar functionality # Enable WPS external registrar functionality
CONFIG_WPS_ER=y CONFIG_WPS_ER=y
# Disable credentials for an open network by default when acting as a WPS # Disable credentials for an open network by default when acting as a WPS

View file

@ -311,12 +311,10 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
if (bss->ssid.security_policy != SECURITY_WPA_PSK && if (bss->ssid.security_policy != SECURITY_WPA_PSK &&
bss->ssid.security_policy != SECURITY_PLAINTEXT) bss->ssid.security_policy != SECURITY_PLAINTEXT)
goto no_wps; goto no_wps;
#ifdef CONFIG_WPS2
if (bss->ssid.security_policy == SECURITY_WPA_PSK && if (bss->ssid.security_policy == SECURITY_WPA_PSK &&
(!(bss->rsn_pairwise & WPA_CIPHER_CCMP) || !(bss->wpa & 2))) (!(bss->rsn_pairwise & WPA_CIPHER_CCMP) || !(bss->wpa & 2)))
goto no_wps; /* WPS2 does not allow WPA/TKIP-only goto no_wps; /* WPS2 does not allow WPA/TKIP-only
* configuration */ * configuration */
#endif /* CONFIG_WPS2 */
bss->eap_server = 1; bss->eap_server = 1;
if (!ssid->ignore_broadcast_ssid) if (!ssid->ignore_broadcast_ssid)

View file

@ -2163,10 +2163,8 @@ static char * wpa_supplicant_wps_ie_txt_buf(struct wpa_supplicant *wpa_s,
return pos; return pos;
if (wps_is_selected_pbc_registrar(wps_ie)) if (wps_is_selected_pbc_registrar(wps_ie))
txt = "[WPS-PBC]"; txt = "[WPS-PBC]";
#ifdef CONFIG_WPS2
else if (wps_is_addr_authorized(wps_ie, wpa_s->own_addr, 0)) else if (wps_is_addr_authorized(wps_ie, wpa_s->own_addr, 0))
txt = "[WPS-AUTH]"; txt = "[WPS-AUTH]";
#endif /* CONFIG_WPS2 */
else if (wps_is_selected_pin_registrar(wps_ie)) else if (wps_is_selected_pin_registrar(wps_ie))
txt = "[WPS-PIN]"; txt = "[WPS-PIN]";
else else

View file

@ -152,8 +152,6 @@ CONFIG_EAP_LEAP=y
# Wi-Fi Protected Setup (WPS) # Wi-Fi Protected Setup (WPS)
#CONFIG_WPS=y #CONFIG_WPS=y
# Enable WSC 2.0 support
#CONFIG_WPS2=y
# Enable WPS external registrar functionality # Enable WPS external registrar functionality
#CONFIG_WPS_ER=y #CONFIG_WPS_ER=y
# Disable credentials for an open network by default when acting as a WPS # Disable credentials for an open network by default when acting as a WPS

View file

@ -1301,7 +1301,6 @@ static void wpas_wps_set_sel_reg_cb(void *ctx, int sel_reg, u16 dev_passwd_id,
static u16 wps_fix_config_methods(u16 config_methods) static u16 wps_fix_config_methods(u16 config_methods)
{ {
#ifdef CONFIG_WPS2
if ((config_methods & if ((config_methods &
(WPS_CONFIG_DISPLAY | WPS_CONFIG_VIRT_DISPLAY | (WPS_CONFIG_DISPLAY | WPS_CONFIG_VIRT_DISPLAY |
WPS_CONFIG_PHY_DISPLAY)) == WPS_CONFIG_DISPLAY) { WPS_CONFIG_PHY_DISPLAY)) == WPS_CONFIG_DISPLAY) {
@ -1316,7 +1315,6 @@ static u16 wps_fix_config_methods(u16 config_methods)
"virtual_push_button for WPS 2.0 compliance"); "virtual_push_button for WPS 2.0 compliance");
config_methods |= WPS_CONFIG_VIRT_PUSHBUTTON; config_methods |= WPS_CONFIG_VIRT_PUSHBUTTON;
} }
#endif /* CONFIG_WPS2 */
return config_methods; return config_methods;
} }