Browse Source

FILS: Update cache identifier on association

This is needed when offloading FILS shared key to the drivers.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Vidyullatha Kanchanapally 8 years ago
parent
commit
bbe7969d63
3 changed files with 22 additions and 0 deletions
  1. 11 0
      src/rsn_supp/wpa.c
  2. 1 0
      src/rsn_supp/wpa.h
  3. 10 0
      wpa_supplicant/events.c

+ 11 - 0
src/rsn_supp/wpa.c

@@ -4073,3 +4073,14 @@ int owe_process_assoc_resp(struct wpa_sm *sm, const u8 *resp_ies,
 }
 
 #endif /* CONFIG_OWE */
+
+
+void wpa_sm_set_fils_cache_id(struct wpa_sm *sm, const u8 *fils_cache_id)
+{
+#ifdef CONFIG_FILS
+	if (sm && fils_cache_id) {
+		sm->fils_cache_id_set = 1;
+		os_memcpy(sm->fils_cache_id, fils_cache_id, FILS_CACHE_ID_LEN);
+	}
+#endif /* CONFIG_FILS */
+}

+ 1 - 0
src/rsn_supp/wpa.h

@@ -455,5 +455,6 @@ int owe_process_assoc_resp(struct wpa_sm *sm, const u8 *resp_ies,
 			   size_t resp_ies_len);
 
 void wpa_sm_set_reset_fils_completed(struct wpa_sm *sm, int set);
+void wpa_sm_set_fils_cache_id(struct wpa_sm *sm, const u8 *fils_cache_id);
 
 #endif /* WPA_H */

+ 10 - 0
wpa_supplicant/events.c

@@ -2653,6 +2653,16 @@ static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s,
 		if (wpa_s->reassoc_same_bss)
 			wmm_ac_restore_tspecs(wpa_s);
 	}
+
+#ifdef CONFIG_FILS
+	if (wpa_key_mgmt_fils(wpa_s->key_mgmt)) {
+		struct wpa_bss *bss = wpa_bss_get_bssid(wpa_s, bssid);
+		const u8 *fils_cache_id = wpa_bss_get_fils_cache_id(bss);
+
+		if (fils_cache_id)
+			wpa_sm_set_fils_cache_id(wpa_s->wpa, fils_cache_id);
+	}
+#endif /* CONFIG_FILS */
 }