]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Interworking: Enforce WPA2-Enterprise/CCMP
authorJouni Malinen <j@w1.fi>
Sun, 19 Aug 2012 09:39:39 +0000 (12:39 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 19 Aug 2012 09:55:12 +0000 (12:55 +0300)
Since we currently support only HS 2.0 networks with Interworking
network selection, enforce that WPA2-Enterprise/CCMP is used on the
AP instead of allowing any WPA-Enterprise combination.

Signed-hostap: Jouni Malinen <j@w1.fi>

wpa_supplicant/interworking.c

index cdb7fbc10a43812df827d075e8b65e6b20d4311d..71564c1fd7b0d9b46427410c2c1264764785bc76 100644 (file)
@@ -624,6 +624,18 @@ static int set_root_nai(struct wpa_ssid *ssid, const char *imsi, char prefix)
 #endif /* INTERWORKING_3GPP */
 
 
+static int interworking_set_hs20_params(struct wpa_ssid *ssid)
+{
+       if (wpa_config_set(ssid, "key_mgmt", "WPA-EAP", 0) < 0)
+               return -1;
+       if (wpa_config_set(ssid, "proto", "RSN", 0) < 0)
+               return -1;
+       if (wpa_config_set(ssid, "pairwise", "CCMP", 0) < 0)
+               return -1;
+       return 0;
+}
+
+
 static int interworking_connect_3gpp(struct wpa_supplicant *wpa_s,
                                     struct wpa_bss *bss)
 {
@@ -689,7 +701,7 @@ static int interworking_connect_3gpp(struct wpa_supplicant *wpa_s,
        os_memcpy(ssid->ssid, ie + 2, ie[1]);
        ssid->ssid_len = ie[1];
 
-       if (wpa_config_set(ssid, "key_mgmt", "WPA-EAP", 0) < 0)
+       if (interworking_set_hs20_params(ssid) < 0)
                goto fail;
 
        /* TODO: figure out whether to use EAP-SIM, EAP-AKA, or EAP-AKA' */
@@ -956,7 +968,7 @@ static int interworking_connect_roaming_consortium(
        os_memcpy(ssid->ssid, ssid_ie + 2, ssid_ie[1]);
        ssid->ssid_len = ssid_ie[1];
 
-       if (wpa_config_set(ssid, "key_mgmt", "WPA-EAP", 0) < 0)
+       if (interworking_set_hs20_params(ssid) < 0)
                goto fail;
 
        if (cred->eap_method == NULL) {
@@ -1059,7 +1071,7 @@ int interworking_connect(struct wpa_supplicant *wpa_s, struct wpa_bss *bss)
        os_memcpy(ssid->ssid, ie + 2, ie[1]);
        ssid->ssid_len = ie[1];
 
-       if (wpa_config_set(ssid, "key_mgmt", "WPA-EAP", 0) < 0)
+       if (interworking_set_hs20_params(ssid) < 0)
                goto fail;
 
        if (wpa_config_set(ssid, "eap", eap_get_name(EAP_VENDOR_IETF,