]>
Commit | Line | Data |
---|---|---|
6fc6879b JM |
1 | /* |
2 | * hostapd - PMKSA cache for IEEE 802.11i RSN | |
182748e4 | 3 | * Copyright (c) 2004-2008, 2012, Jouni Malinen <j@w1.fi> |
6fc6879b | 4 | * |
0f3d578e JM |
5 | * This software may be distributed under the terms of the BSD license. |
6 | * See README for more details. | |
6fc6879b JM |
7 | */ |
8 | ||
9 | #ifndef PMKSA_CACHE_H | |
10 | #define PMKSA_CACHE_H | |
11 | ||
e0e14a7b JM |
12 | #include "radius/radius.h" |
13 | ||
6fc6879b JM |
14 | /** |
15 | * struct rsn_pmksa_cache_entry - PMKSA cache entry | |
16 | */ | |
17 | struct rsn_pmksa_cache_entry { | |
18 | struct rsn_pmksa_cache_entry *next, *hnext; | |
19 | u8 pmkid[PMKID_LEN]; | |
207976f0 | 20 | u8 pmk[PMK_LEN_MAX]; |
6fc6879b JM |
21 | size_t pmk_len; |
22 | os_time_t expiration; | |
23 | int akmp; /* WPA_KEY_MGMT_* */ | |
24 | u8 spa[ETH_ALEN]; | |
25 | ||
26 | u8 *identity; | |
27 | size_t identity_len; | |
182748e4 | 28 | struct wpabuf *cui; |
6fc6879b JM |
29 | struct radius_class_data radius_class; |
30 | u8 eap_type_authsrv; | |
1889af2e | 31 | struct vlan_description *vlan_desc; |
bf98f7f3 | 32 | int opportunistic; |
fcc306e3 | 33 | |
d72a0053 | 34 | u64 acct_multi_session_id; |
6fc6879b JM |
35 | }; |
36 | ||
37 | struct rsn_pmksa_cache; | |
38 | ||
39 | struct rsn_pmksa_cache * | |
4bb081f1 JM |
40 | pmksa_cache_auth_init(void (*free_cb)(struct rsn_pmksa_cache_entry *entry, |
41 | void *ctx), void *ctx); | |
42 | void pmksa_cache_auth_deinit(struct rsn_pmksa_cache *pmksa); | |
43 | struct rsn_pmksa_cache_entry * | |
44 | pmksa_cache_auth_get(struct rsn_pmksa_cache *pmksa, | |
45 | const u8 *spa, const u8 *pmkid); | |
bf98f7f3 JM |
46 | struct rsn_pmksa_cache_entry * pmksa_cache_get_okc( |
47 | struct rsn_pmksa_cache *pmksa, const u8 *spa, const u8 *aa, | |
48 | const u8 *pmkid); | |
6fc6879b | 49 | struct rsn_pmksa_cache_entry * |
4bb081f1 | 50 | pmksa_cache_auth_add(struct rsn_pmksa_cache *pmksa, |
70c93963 | 51 | const u8 *pmk, size_t pmk_len, const u8 *pmkid, |
087a1f4e | 52 | const u8 *kck, size_t kck_len, |
4bb081f1 JM |
53 | const u8 *aa, const u8 *spa, int session_timeout, |
54 | struct eapol_state_machine *eapol, int akmp); | |
bf98f7f3 | 55 | struct rsn_pmksa_cache_entry * |
4d77d80e MH |
56 | pmksa_cache_auth_create_entry(const u8 *pmk, size_t pmk_len, const u8 *pmkid, |
57 | const u8 *kck, size_t kck_len, const u8 *aa, | |
58 | const u8 *spa, int session_timeout, | |
59 | struct eapol_state_machine *eapol, int akmp); | |
60 | int pmksa_cache_auth_add_entry(struct rsn_pmksa_cache *pmksa, | |
61 | struct rsn_pmksa_cache_entry *entry); | |
62 | struct rsn_pmksa_cache_entry * | |
bf98f7f3 JM |
63 | pmksa_cache_add_okc(struct rsn_pmksa_cache *pmksa, |
64 | const struct rsn_pmksa_cache_entry *old_entry, | |
65 | const u8 *aa, const u8 *pmkid); | |
1889af2e MB |
66 | void pmksa_cache_to_eapol_data(struct hostapd_data *hapd, |
67 | struct rsn_pmksa_cache_entry *entry, | |
6fc6879b | 68 | struct eapol_state_machine *eapol); |
901d1fe1 JM |
69 | void pmksa_cache_free_entry(struct rsn_pmksa_cache *pmksa, |
70 | struct rsn_pmksa_cache_entry *entry); | |
cbc210de JM |
71 | int pmksa_cache_auth_radius_das_disconnect(struct rsn_pmksa_cache *pmksa, |
72 | struct radius_das_attrs *attr); | |
b8daac18 | 73 | int pmksa_cache_auth_list(struct rsn_pmksa_cache *pmksa, char *buf, size_t len); |
4c522c77 | 74 | void pmksa_cache_auth_flush(struct rsn_pmksa_cache *pmksa); |
4d77d80e MH |
75 | int pmksa_cache_auth_list_mesh(struct rsn_pmksa_cache *pmksa, const u8 *addr, |
76 | char *buf, size_t len); | |
6fc6879b JM |
77 | |
78 | #endif /* PMKSA_CACHE_H */ |