WPS: Indicate current AP settings in M7 in unconfigurated state
Previously, unconfigured state was forcing the best supported authentication and encryption state to be shown in WPS messages, including AP Settings in M7 in case the AP acts as an Enrollee. This is not really correct for the AP Settings case, so change that one to indicate the currently configured state. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
d55fc03ef6
commit
d7a15d5953
3 changed files with 20 additions and 31 deletions
|
@ -471,6 +471,8 @@ static int hapd_wps_cred_cb(struct hostapd_data *hapd, void *ctx)
|
|||
hapd->wps->ssid_len = cred->ssid_len;
|
||||
hapd->wps->encr_types = cred->encr_type;
|
||||
hapd->wps->auth_types = cred->auth_type;
|
||||
hapd->wps->ap_encr_type = cred->encr_type;
|
||||
hapd->wps->ap_auth_type = cred->auth_type;
|
||||
if (cred->key_len == 0) {
|
||||
os_free(hapd->wps->network_key);
|
||||
hapd->wps->network_key = NULL;
|
||||
|
@ -1146,6 +1148,8 @@ int hostapd_init_wps(struct hostapd_data *hapd,
|
|||
wps->psk_set = 1;
|
||||
}
|
||||
|
||||
wps->ap_auth_type = wps->auth_types;
|
||||
wps->ap_encr_type = wps->encr_types;
|
||||
if (conf->wps_state == WPS_STATE_NOT_CONFIGURED) {
|
||||
/* Override parameters to enable security by default */
|
||||
wps->auth_types = WPS_AUTH_WPA2PSK | WPS_AUTH_WPAPSK;
|
||||
|
|
|
@ -667,6 +667,16 @@ struct wps_context {
|
|||
*/
|
||||
u16 auth_types;
|
||||
|
||||
/**
|
||||
* encr_types - Current AP encryption type (WPS_ENCR_*)
|
||||
*/
|
||||
u16 ap_encr_type;
|
||||
|
||||
/**
|
||||
* ap_auth_type - Current AP authentication types (WPS_AUTH_*)
|
||||
*/
|
||||
u16 ap_auth_type;
|
||||
|
||||
/**
|
||||
* network_key - The current Network Key (PSK) or %NULL to generate new
|
||||
*
|
||||
|
|
|
@ -243,47 +243,22 @@ static int wps_build_cred_ssid(struct wps_data *wps, struct wpabuf *msg)
|
|||
|
||||
static int wps_build_cred_auth_type(struct wps_data *wps, struct wpabuf *msg)
|
||||
{
|
||||
u16 auth_type = wps->wps->auth_types;
|
||||
|
||||
/* Select the best authentication type */
|
||||
if (auth_type & WPS_AUTH_WPA2PSK)
|
||||
auth_type = WPS_AUTH_WPA2PSK;
|
||||
else if (auth_type & WPS_AUTH_WPAPSK)
|
||||
auth_type = WPS_AUTH_WPAPSK;
|
||||
else if (auth_type & WPS_AUTH_OPEN)
|
||||
auth_type = WPS_AUTH_OPEN;
|
||||
else if (auth_type & WPS_AUTH_SHARED)
|
||||
auth_type = WPS_AUTH_SHARED;
|
||||
|
||||
wpa_printf(MSG_DEBUG, "WPS: * Authentication Type (0x%x)", auth_type);
|
||||
wpa_printf(MSG_DEBUG, "WPS: * Authentication Type (0x%x)",
|
||||
wps->wps->ap_auth_type);
|
||||
wpabuf_put_be16(msg, ATTR_AUTH_TYPE);
|
||||
wpabuf_put_be16(msg, 2);
|
||||
wpabuf_put_be16(msg, auth_type);
|
||||
wpabuf_put_be16(msg, wps->wps->ap_auth_type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int wps_build_cred_encr_type(struct wps_data *wps, struct wpabuf *msg)
|
||||
{
|
||||
u16 encr_type = wps->wps->encr_types;
|
||||
|
||||
/* Select the best encryption type */
|
||||
if (wps->wps->auth_types & (WPS_AUTH_WPA2PSK | WPS_AUTH_WPAPSK)) {
|
||||
if (encr_type & WPS_ENCR_AES)
|
||||
encr_type = WPS_ENCR_AES;
|
||||
else if (encr_type & WPS_ENCR_TKIP)
|
||||
encr_type = WPS_ENCR_TKIP;
|
||||
} else {
|
||||
if (encr_type & WPS_ENCR_WEP)
|
||||
encr_type = WPS_ENCR_WEP;
|
||||
else if (encr_type & WPS_ENCR_NONE)
|
||||
encr_type = WPS_ENCR_NONE;
|
||||
}
|
||||
|
||||
wpa_printf(MSG_DEBUG, "WPS: * Encryption Type (0x%x)", encr_type);
|
||||
wpa_printf(MSG_DEBUG, "WPS: * Encryption Type (0x%x)",
|
||||
wps->wps->ap_encr_type);
|
||||
wpabuf_put_be16(msg, ATTR_ENCR_TYPE);
|
||||
wpabuf_put_be16(msg, 2);
|
||||
wpabuf_put_be16(msg, encr_type);
|
||||
wpabuf_put_be16(msg, wps->wps->ap_encr_type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue