wpa_supplicant / hostapd
2.5
|
hostapd - PMKSA cache for IEEE 802.11i RSN More...
#include "utils/includes.h"
#include "utils/common.h"
#include "utils/eloop.h"
#include "eapol_auth/eapol_auth_sm.h"
#include "eapol_auth/eapol_auth_sm_i.h"
#include "radius/radius_das.h"
#include "sta_info.h"
#include "ap_config.h"
#include "pmksa_cache_auth.h"
Data Structures | |
struct | rsn_pmksa_cache |
Macros | |
#define | PMKID_HASH_SIZE 128 |
#define | PMKID_HASH(pmkid) (unsigned int) ((pmkid)[0] & 0x7f) |
Functions | |
void | pmksa_cache_free_entry (struct rsn_pmksa_cache *pmksa, struct rsn_pmksa_cache_entry *entry) |
void | pmksa_cache_to_eapol_data (struct rsn_pmksa_cache_entry *entry, struct eapol_state_machine *eapol) |
struct rsn_pmksa_cache_entry * | pmksa_cache_auth_add (struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len, const u8 *kck, size_t kck_len, const u8 *aa, const u8 *spa, int session_timeout, struct eapol_state_machine *eapol, int akmp) |
Add a PMKSA cache entry. More... | |
struct rsn_pmksa_cache_entry * | pmksa_cache_add_okc (struct rsn_pmksa_cache *pmksa, const struct rsn_pmksa_cache_entry *old_entry, const u8 *aa, const u8 *pmkid) |
void | pmksa_cache_auth_deinit (struct rsn_pmksa_cache *pmksa) |
Free all entries in PMKSA cache. More... | |
struct rsn_pmksa_cache_entry * | pmksa_cache_auth_get (struct rsn_pmksa_cache *pmksa, const u8 *spa, const u8 *pmkid) |
Fetch a PMKSA cache entry. More... | |
struct rsn_pmksa_cache_entry * | pmksa_cache_get_okc (struct rsn_pmksa_cache *pmksa, const u8 *aa, const u8 *spa, const u8 *pmkid) |
Fetch a PMKSA cache entry using OKC. More... | |
struct rsn_pmksa_cache * | pmksa_cache_auth_init (void(*free_cb)(struct rsn_pmksa_cache_entry *entry, void *ctx), void *ctx) |
Initialize PMKSA cache. More... | |
int | pmksa_cache_auth_radius_das_disconnect (struct rsn_pmksa_cache *pmksa, struct radius_das_attrs *attr) |
hostapd - PMKSA cache for IEEE 802.11i RSN
struct rsn_pmksa_cache_entry* pmksa_cache_auth_add | ( | struct rsn_pmksa_cache * | pmksa, |
const u8 * | pmk, | ||
size_t | pmk_len, | ||
const u8 * | kck, | ||
size_t | kck_len, | ||
const u8 * | aa, | ||
const u8 * | spa, | ||
int | session_timeout, | ||
struct eapol_state_machine * | eapol, | ||
int | akmp | ||
) |
Add a PMKSA cache entry.
pmksa | Pointer to PMKSA cache data from pmksa_cache_auth_init() |
pmk | The new pairwise master key |
pmk_len | PMK length in bytes, usually PMK_LEN (32) |
kck | Key confirmation key or NULL if not yet derived |
kck_len | KCK length in bytes |
aa | Authenticator address |
spa | Supplicant address |
session_timeout | Session timeout |
eapol | Pointer to EAPOL state machine data |
akmp | WPA_KEY_MGMT_* used in key derivation |
This function create a PMKSA entry for a new PMK and adds it to the PMKSA cache. If an old entry is already in the cache for the same Supplicant, this entry will be replaced with the new entry. PMKID will be calculated based on the PMK.
void pmksa_cache_auth_deinit | ( | struct rsn_pmksa_cache * | pmksa | ) |
Free all entries in PMKSA cache.
pmksa | Pointer to PMKSA cache data from pmksa_cache_auth_init() |
struct rsn_pmksa_cache_entry* pmksa_cache_auth_get | ( | struct rsn_pmksa_cache * | pmksa, |
const u8 * | spa, | ||
const u8 * | pmkid | ||
) |
Fetch a PMKSA cache entry.
pmksa | Pointer to PMKSA cache data from pmksa_cache_auth_init() |
spa | Supplicant address or NULL to match any |
pmkid | PMKID or NULL to match any |
struct rsn_pmksa_cache* pmksa_cache_auth_init | ( | void(*)(struct rsn_pmksa_cache_entry *entry, void *ctx) | free_cb, |
void * | ctx | ||
) |
Initialize PMKSA cache.
free_cb | Callback function to be called when a PMKSA cache entry is freed |
ctx | Context pointer for free_cb function |
struct rsn_pmksa_cache_entry* pmksa_cache_get_okc | ( | struct rsn_pmksa_cache * | pmksa, |
const u8 * | aa, | ||
const u8 * | spa, | ||
const u8 * | pmkid | ||
) |
Fetch a PMKSA cache entry using OKC.
pmksa | Pointer to PMKSA cache data from pmksa_cache_auth_init() |
aa | Authenticator address |
spa | Supplicant address |
pmkid | PMKID |
Use opportunistic key caching (OKC) to find a PMK for a supplicant.