pmksa_cache_auth.h revision f7e0a9905988e62e4f70fed8b795722abeab719b
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * hostapd - PMKSA cache for IEEE 802.11i RSN 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 2004-2008, 2012, Jouni Malinen <j@w1.fi> 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This software may be distributed under the terms of the BSD license. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * See README for more details. 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef PMKSA_CACHE_H 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define PMKSA_CACHE_H 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "radius/radius.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * struct rsn_pmksa_cache_entry - PMKSA cache entry 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache_entry { 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct rsn_pmksa_cache_entry *next, *hnext; 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u8 pmkid[PMKID_LEN]; 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u8 pmk[PMK_LEN]; 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org size_t pmk_len; 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org os_time_t expiration; 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int akmp; /* WPA_KEY_MGMT_* */ 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u8 spa[ETH_ALEN]; 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u8 *identity; 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org size_t identity_len; 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct wpabuf *cui; 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct radius_class_data radius_class; 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org u8 eap_type_authsrv; 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int vlan_id; 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int opportunistic; 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache; 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache * 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpmksa_cache_auth_init(void (*free_cb)(struct rsn_pmksa_cache_entry *entry, 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void *ctx), void *ctx); 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid pmksa_cache_auth_deinit(struct rsn_pmksa_cache *pmksa); 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache_entry * 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpmksa_cache_auth_get(struct rsn_pmksa_cache *pmksa, 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const u8 *spa, const u8 *pmkid); 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache_entry * pmksa_cache_get_okc( 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct rsn_pmksa_cache *pmksa, const u8 *spa, const u8 *aa, 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const u8 *pmkid); 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache_entry * 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpmksa_cache_auth_add(struct rsn_pmksa_cache *pmksa, 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const u8 *pmk, size_t pmk_len, 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const u8 *aa, const u8 *spa, int session_timeout, 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct eapol_state_machine *eapol, int akmp); 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstruct rsn_pmksa_cache_entry * 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpmksa_cache_add_okc(struct rsn_pmksa_cache *pmksa, 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const struct rsn_pmksa_cache_entry *old_entry, 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const u8 *aa, const u8 *pmkid); 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid pmksa_cache_to_eapol_data(struct rsn_pmksa_cache_entry *entry, 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct eapol_state_machine *eapol); 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid pmksa_cache_free_entry(struct rsn_pmksa_cache *pmksa, 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org struct rsn_pmksa_cache_entry *entry); 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* PMKSA_CACHE_H */ 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org