pmksa_cache_auth.h revision 214501
1214501Srpaulo/* 2214501Srpaulo * hostapd - PMKSA cache for IEEE 802.11i RSN 3214501Srpaulo * Copyright (c) 2004-2008, Jouni Malinen <j@w1.fi> 4214501Srpaulo * 5214501Srpaulo * This program is free software; you can redistribute it and/or modify 6214501Srpaulo * it under the terms of the GNU General Public License version 2 as 7214501Srpaulo * published by the Free Software Foundation. 8214501Srpaulo * 9214501Srpaulo * Alternatively, this software may be distributed under the terms of BSD 10214501Srpaulo * license. 11214501Srpaulo * 12214501Srpaulo * See README and COPYING for more details. 13214501Srpaulo */ 14214501Srpaulo 15214501Srpaulo#ifndef PMKSA_CACHE_H 16214501Srpaulo#define PMKSA_CACHE_H 17214501Srpaulo 18214501Srpaulo#include "radius/radius.h" 19214501Srpaulo 20214501Srpaulo/** 21214501Srpaulo * struct rsn_pmksa_cache_entry - PMKSA cache entry 22214501Srpaulo */ 23214501Srpaulostruct rsn_pmksa_cache_entry { 24214501Srpaulo struct rsn_pmksa_cache_entry *next, *hnext; 25214501Srpaulo u8 pmkid[PMKID_LEN]; 26214501Srpaulo u8 pmk[PMK_LEN]; 27214501Srpaulo size_t pmk_len; 28214501Srpaulo os_time_t expiration; 29214501Srpaulo int akmp; /* WPA_KEY_MGMT_* */ 30214501Srpaulo u8 spa[ETH_ALEN]; 31214501Srpaulo 32214501Srpaulo u8 *identity; 33214501Srpaulo size_t identity_len; 34214501Srpaulo struct radius_class_data radius_class; 35214501Srpaulo u8 eap_type_authsrv; 36214501Srpaulo int vlan_id; 37214501Srpaulo int opportunistic; 38214501Srpaulo}; 39214501Srpaulo 40214501Srpaulostruct rsn_pmksa_cache; 41214501Srpaulo 42214501Srpaulostruct rsn_pmksa_cache * 43214501Srpaulopmksa_cache_auth_init(void (*free_cb)(struct rsn_pmksa_cache_entry *entry, 44214501Srpaulo void *ctx), void *ctx); 45214501Srpaulovoid pmksa_cache_auth_deinit(struct rsn_pmksa_cache *pmksa); 46214501Srpaulostruct rsn_pmksa_cache_entry * 47214501Srpaulopmksa_cache_auth_get(struct rsn_pmksa_cache *pmksa, 48214501Srpaulo const u8 *spa, const u8 *pmkid); 49214501Srpaulostruct rsn_pmksa_cache_entry * pmksa_cache_get_okc( 50214501Srpaulo struct rsn_pmksa_cache *pmksa, const u8 *spa, const u8 *aa, 51214501Srpaulo const u8 *pmkid); 52214501Srpaulostruct rsn_pmksa_cache_entry * 53214501Srpaulopmksa_cache_auth_add(struct rsn_pmksa_cache *pmksa, 54214501Srpaulo const u8 *pmk, size_t pmk_len, 55214501Srpaulo const u8 *aa, const u8 *spa, int session_timeout, 56214501Srpaulo struct eapol_state_machine *eapol, int akmp); 57214501Srpaulostruct rsn_pmksa_cache_entry * 58214501Srpaulopmksa_cache_add_okc(struct rsn_pmksa_cache *pmksa, 59214501Srpaulo const struct rsn_pmksa_cache_entry *old_entry, 60214501Srpaulo const u8 *aa, const u8 *pmkid); 61214501Srpaulovoid pmksa_cache_to_eapol_data(struct rsn_pmksa_cache_entry *entry, 62214501Srpaulo struct eapol_state_machine *eapol); 63214501Srpaulo 64214501Srpaulo#endif /* PMKSA_CACHE_H */ 65