mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-14 08:03:06 -05:00
This patch add functionality of mesh SAE PMKSA caching. If the local STA already has peer's PMKSA entry in the cache, skip SAE authentication and start AMPE with the cached value. If the peer does not support PMKSA caching or does not have the local STA's PMKSA entry in the cache, AMPE will fail and the PMKSA cache entry of the peer will be removed. Then STA retries with ordinary SAE authentication. If the peer does not support PMKSA caching and the local STA uses no_auto_peer=1, the local STA can not retry SAE authentication because NEW_PEER_CANDIDATE event cannot start SAE authentication when no_auto_peer=1. So this patch extends MESH_PEER_ADD command to use duration(sec). Throughout the duration, the local STA can start SAE authentication triggered by NEW_PEER_CANDIDATE even though no_auto_peer=1. This commit requires commit 70c93963edefa37ef84b73efb9d04ea10268341c ('SAE: Fix PMKID calculation for PMKSA cache'). Without that commit, chosen PMK comparison will fail. Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
48 lines
1.4 KiB
C
48 lines
1.4 KiB
C
/*
|
|
* WPA Supplicant - Basic mesh mode routines
|
|
* Copyright (c) 2013-2014, cozybit, Inc. All rights reserved.
|
|
*
|
|
* This software may be distributed under the terms of the BSD license.
|
|
* See README for more details.
|
|
*/
|
|
|
|
#ifndef MESH_H
|
|
#define MESH_H
|
|
|
|
int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
|
|
struct wpa_ssid *ssid);
|
|
int wpa_supplicant_leave_mesh(struct wpa_supplicant *wpa_s);
|
|
void wpa_supplicant_mesh_iface_deinit(struct wpa_supplicant *wpa_s,
|
|
struct hostapd_iface *ifmsh);
|
|
int wpas_mesh_scan_result_text(const u8 *ies, size_t ies_len, char *buf,
|
|
char *end);
|
|
int wpas_mesh_add_interface(struct wpa_supplicant *wpa_s, char *ifname,
|
|
size_t len);
|
|
int wpas_mesh_peer_remove(struct wpa_supplicant *wpa_s, const u8 *addr);
|
|
int wpas_mesh_peer_add(struct wpa_supplicant *wpa_s, const u8 *addr,
|
|
int duration);
|
|
|
|
#ifdef CONFIG_MESH
|
|
|
|
void wpa_mesh_notify_peer(struct wpa_supplicant *wpa_s, const u8 *addr,
|
|
const u8 *ies, size_t ie_len);
|
|
void wpa_supplicant_mesh_add_scan_ie(struct wpa_supplicant *wpa_s,
|
|
struct wpabuf **extra_ie);
|
|
|
|
#else /* CONFIG_MESH */
|
|
|
|
static inline void wpa_mesh_notify_peer(struct wpa_supplicant *wpa_s,
|
|
const u8 *addr,
|
|
const u8 *ies, size_t ie_len)
|
|
{
|
|
}
|
|
|
|
static inline void wpa_supplicant_mesh_add_scan_ie(struct wpa_supplicant *wpa_s,
|
|
struct wpabuf **extra_ie)
|
|
{
|
|
}
|
|
|
|
#endif /* CONFIG_MESH */
|
|
|
|
#endif /* MESH_H */
|