wpa_auth_i.h revision b36ed7cd946148d829f311de8fe53ea3ffaaffe3
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * hostapd - IEEE 802.11i-2004 / WPA Authenticator: Internal definitions 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef WPA_AUTH_I_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPA_AUTH_I_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* max(dot11RSNAConfigGroupUpdateCount,dot11RSNAConfigPairwiseUpdateCount) */ 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RSNA_MAX_EAPOL_RETRIES 4 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_group; 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_stsl_negotiation { 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_stsl_negotiation *next; 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 initiator[ETH_ALEN]; 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 peer[ETH_ALEN]; 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_state_machine { 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_authenticator *wpa_auth; 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_group *group; 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 addr[ETH_ALEN]; 29391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt u8 p2p_dev_addr[ETH_ALEN]; 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum { 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_INITIALIZE, WPA_PTK_DISCONNECT, WPA_PTK_DISCONNECTED, 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_AUTHENTICATION, WPA_PTK_AUTHENTICATION2, 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_INITPMK, WPA_PTK_INITPSK, WPA_PTK_PTKSTART, 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_PTKCALCNEGOTIATING, WPA_PTK_PTKCALCNEGOTIATING2, 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_PTKINITNEGOTIATING, WPA_PTK_PTKINITDONE 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } wpa_ptk_state; 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum { 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_GROUP_IDLE = 0, 418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_GROUP_REKEYNEGOTIATING, 428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_GROUP_REKEYESTABLISHED, 438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_PTK_GROUP_KEYERROR 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } wpa_ptk_group_state; 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean Init; 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean DeauthenticationRequest; 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean AuthenticationRequest; 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean ReAuthenticationRequest; 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean Disconnect; 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int TimeoutCtr; 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int GTimeoutCtr; 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean TimeoutEvt; 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean EAPOLKeyReceived; 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean EAPOLKeyPairwise; 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean EAPOLKeyRequest; 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean MICVerified; 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean GUpdateStationKeys; 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 ANonce[WPA_NONCE_LEN]; 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 SNonce[WPA_NONCE_LEN]; 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 PMK[PMK_LEN]; 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ptk PTK; 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean PTK_valid; 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean pairwise_set; 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int keycount; 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean Pair; 67c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt struct wpa_key_replay_counter { 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 counter[WPA_REPLAY_COUNTER_LEN]; 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean valid; 70c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt } key_replay[RSNA_MAX_EAPOL_RETRIES], 71c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt prev_key_replay[RSNA_MAX_EAPOL_RETRIES]; 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean PInitAKeys; /* WPA only, not in IEEE 802.11i */ 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean PTKRequest; /* not in IEEE 802.11i state machine */ 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean has_GTK; 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean PtkGroupInit; /* init request for PTK Group state machine */ 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *last_rx_eapol_key; /* starting from IEEE 802.1X header */ 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t last_rx_eapol_key_len; 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int changed:1; 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int in_step_loop:1; 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int pending_deinit:1; 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int started:1; 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int mgmt_frame_prot:1; 851f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt unsigned int rx_eapol_key_secure:1; 86c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt unsigned int update_snonce:1; 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211R 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int ft_completed:1; 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int pmk_r1_name_valid:1; 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211R */ 9161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt unsigned int is_wnmsleep:1; 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 req_replay_counter[WPA_REPLAY_COUNTER_LEN]; 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int req_replay_counter_used; 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *wpa_ie; 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t wpa_ie_len; 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum { 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_VERSION_NO_WPA = 0 /* WPA not used */, 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_VERSION_WPA = 1 /* WPA / IEEE 802.11i/D3.0 */, 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_VERSION_WPA2 = 2 /* WPA2 / IEEE 802.11i */ 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } wpa; 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pairwise; /* Pairwise cipher suite, WPA_CIPHER_* */ 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int wpa_key_mgmt; /* the selected WPA_KEY_MGMT_* */ 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct rsn_pmksa_cache_entry *pmksa; 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAStatsTKIPLocalMICFailures; 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAStatsTKIPRemoteMICFailures; 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211R 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 xxkey[PMK_LEN]; /* PSK or the second 256 bits of MSK */ 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t xxkey_len; 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 pmk_r1_name[WPA_PMK_NAME_LEN]; /* PMKR1Name derived from FT Auth 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Request */ 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 r0kh_id[FT_R0KH_ID_MAX_LEN]; /* R0KH-ID from FT Auth Request */ 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t r0kh_id_len; 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 sup_pmk_r1_name[WPA_PMK_NAME_LEN]; /* PMKR1Name from EAPOL-Key 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * message 2/4 */ 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *assoc_resp_ftie; 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211R */ 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pending_1_of_4_timeout; 124cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt 125cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#ifdef CONFIG_P2P 126cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt u8 ip_addr[4]; 127cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#endif /* CONFIG_P2P */ 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* per group key state machine data */ 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_group { 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_group *next; 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int vlan_id; 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean GInit; 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int GKeyDoneStations; 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean GTKReKey; 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int GTK_len; 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int GN, GM; 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean GTKAuthenticator; 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 Counter[WPA_NONCE_LEN]; 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum { 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WPA_GROUP_GTK_INIT = 0, 146fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt WPA_GROUP_SETKEYS, WPA_GROUP_SETKEYSDONE, 147fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt WPA_GROUP_FATAL_FAILURE 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } wpa_group_state; 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 GMK[WPA_GMK_LEN]; 1518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 GTK[2][WPA_GTK_MAX_LEN]; 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 GNonce[WPA_NONCE_LEN]; 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean changed; 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean first_sta_seen; 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Boolean reject_4way_hs_for_entropy; 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211W 157b36ed7cd946148d829f311de8fe53ea3ffaaffe3Dmitry Shmidt u8 IGTK[2][WPA_IGTK_MAX_LEN]; 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int GN_igtk, GM_igtk; 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211W */ 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_ft_pmk_cache; 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* per authenticator data */ 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_authenticator { 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_group *group; 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int dot11RSNAStatsTKIPRemoteMICFailures; 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAAuthenticationSuiteSelected; 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAPairwiseCipherSelected; 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAGroupCipherSelected; 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 dot11RSNAPMKIDUsed[PMKID_LEN]; 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAAuthenticationSuiteRequested; /* FIX: update */ 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAPairwiseCipherRequested; /* FIX: update */ 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u32 dot11RSNAGroupCipherRequested; /* FIX: update */ 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int dot11RSNATKIPCounterMeasuresInvoked; 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt unsigned int dot11RSNA4WayHandshakeFailures; 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_stsl_negotiation *stsl_negotiations; 1818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_auth_config conf; 1838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_auth_callbacks cb; 1848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *wpa_ie; 1868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t wpa_ie_len; 1878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 addr[ETH_ALEN]; 1898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct rsn_pmksa_cache *pmksa; 1918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ft_pmk_cache *ft_pmk_cache; 192cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt 193cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#ifdef CONFIG_P2P 194cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt struct bitfield *ip_pool; 195cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#endif /* CONFIG_P2P */ 1968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_write_rsn_ie(struct wpa_auth_config *conf, u8 *buf, size_t len, 2008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *pmkid); 2018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_auth_logger(struct wpa_authenticator *wpa_auth, const u8 *addr, 2028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt logger_level level, const char *txt); 2038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_auth_vlogger(struct wpa_authenticator *wpa_auth, const u8 *addr, 2048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt logger_level level, const char *fmt, ...); 2058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid __wpa_send_eapol(struct wpa_authenticator *wpa_auth, 2068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_state_machine *sm, int key_info, 2078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *key_rsc, const u8 *nonce, 2088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *kde, size_t kde_len, 2098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int keyidx, int encr, int force_version); 2108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_auth_for_each_sta(struct wpa_authenticator *wpa_auth, 2118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int (*cb)(struct wpa_state_machine *sm, void *ctx), 2128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *cb_ctx); 2138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_auth_for_each_auth(struct wpa_authenticator *wpa_auth, 2148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int (*cb)(struct wpa_authenticator *a, void *ctx), 2158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *cb_ctx); 2168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_PEERKEY 2188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_stsl_remove(struct wpa_authenticator *wpa_auth, 2198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_stsl_negotiation *neg); 2208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_smk_error(struct wpa_authenticator *wpa_auth, 2218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_state_machine *sm, struct wpa_eapol_key *key); 2228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_smk_m1(struct wpa_authenticator *wpa_auth, 2238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_state_machine *sm, struct wpa_eapol_key *key); 2248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_smk_m3(struct wpa_authenticator *wpa_auth, 2258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_state_machine *sm, struct wpa_eapol_key *key); 2268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_PEERKEY */ 2278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211R 2298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_write_mdie(struct wpa_auth_config *conf, u8 *buf, size_t len); 2308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_write_ftie(struct wpa_auth_config *conf, const u8 *r0kh_id, 2318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t r0kh_id_len, 2328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *anonce, const u8 *snonce, 2338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 *buf, size_t len, const u8 *subelem, 2348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t subelem_len); 2358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_auth_derive_ptk_ft(struct wpa_state_machine *sm, const u8 *pmk, 2368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ptk *ptk, size_t ptk_len); 2378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_ft_pmk_cache * wpa_ft_pmk_cache_init(void); 2388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_ft_pmk_cache_deinit(struct wpa_ft_pmk_cache *cache); 2398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid wpa_ft_install_ptk(struct wpa_state_machine *sm); 2408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211R */ 2418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 2428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPA_AUTH_I_H */ 243