]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
FILS: Add driver-AP SME callback to set TK after association
authorJeffin Mammen <jmammen@qti.qualcomm.com>
Fri, 21 Apr 2017 18:01:03 +0000 (21:01 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 23 Apr 2017 14:47:15 +0000 (17:47 +0300)
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/ap/drv_callbacks.c
src/ap/wpa_auth.c
src/ap/wpa_auth.h

index 331bf9e09fb91cdf474bd1b6d749518dd2f91d5a..2b962f11fe9259db813eb715a713fef379c7ab47 100644 (file)
@@ -398,6 +398,12 @@ skip_wpa_check:
 
        if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))
                wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);
+#ifdef CONFIG_FILS
+       else if (sta->auth_alg == WLAN_AUTH_FILS_SK ||
+                sta->auth_alg == WLAN_AUTH_FILS_SK_PFS ||
+                sta->auth_alg == WLAN_AUTH_FILS_PK)
+               wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FILS);
+#endif /* CONFIG_FILS */
        else
                wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC);
 
index 24b1241e14333c2fa510c417172457382ccc5d16..3149da4eafe9200c7eda20c00ebc93d07bfe085e 100644 (file)
@@ -1761,6 +1761,16 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event)
 #else /* CONFIG_IEEE80211R_AP */
                break;
 #endif /* CONFIG_IEEE80211R_AP */
+       case WPA_ASSOC_FILS:
+#ifdef CONFIG_FILS
+               wpa_printf(MSG_DEBUG,
+                          "FILS: TK configuration after association");
+               fils_set_tk(sm);
+               sm->fils_completed = 1;
+               return 0;
+#else /* CONFIG_FILS */
+               break;
+#endif /* CONFIG_FILS */
        }
 
 #ifdef CONFIG_IEEE80211R_AP
index 9a1d9d70fb16a9883296092c08778af470c3633f..a16a560365054662f2265c91cd0a1a6f609de929 100644 (file)
@@ -275,7 +275,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth,
                 u8 *data, size_t data_len);
 enum wpa_event {
        WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH,
-       WPA_REAUTH_EAPOL, WPA_ASSOC_FT
+       WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_ASSOC_FILS
 };
 void wpa_remove_ptk(struct wpa_state_machine *sm);
 int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event);