18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_supplicant - IBSS RSN 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2009, 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 IBSS_RSN_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define IBSS_RSN_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ibss_rsn; 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 14c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt/* not authenticated */ 15c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt#define IBSS_RSN_AUTH_NOT_AUTHENTICATED 0x00 16c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt/* remote peer sent an EAPOL message */ 17c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt#define IBSS_RSN_AUTH_EAPOL_BY_PEER 0x01 18c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt/* we sent an AUTH message with seq 1 */ 19c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt#define IBSS_RSN_AUTH_BY_US 0x02 20c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt/* we sent an EAPOL message */ 21c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt#define IBSS_RSN_AUTH_EAPOL_BY_US 0x04 22b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt/* PTK derived as supplicant */ 23b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt#define IBSS_RSN_SET_PTK_SUPP 0x08 24b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt/* PTK derived as authenticator */ 25b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt#define IBSS_RSN_SET_PTK_AUTH 0x10 26b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt/* PTK completion reported */ 27b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt#define IBSS_RSN_REPORTED_PTK 0x20 28c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ibss_rsn_peer { 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct ibss_rsn_peer *next; 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct ibss_rsn *ibss_rsn; 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 addr[ETH_ALEN]; 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_sm *supp; 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum wpa_states supp_state; 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 supp_ie[80]; 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt size_t supp_ie_len; 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_state_machine *auth; 41c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt int authentication_status; 4292c368d56f46a4e648b441085707c1381b5e5f63Dmitry Shmidt 43fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt struct os_reltime own_auth_tx; 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ibss_rsn { 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_supplicant *wpa_s; 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_authenticator *auth_group; 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct ibss_rsn_peer *peers; 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt u8 psk[PMK_LEN]; 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 547f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidtstruct ibss_rsn * ibss_rsn_init(struct wpa_supplicant *wpa_s, 557f2c753f60025528366b5f19b8b490a47bf5080bDmitry Shmidt struct wpa_ssid *ssid); 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid ibss_rsn_deinit(struct ibss_rsn *ibss_rsn); 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr); 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid ibss_rsn_stop(struct ibss_rsn *ibss_rsn, const u8 *peermac); 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint ibss_rsn_rx_eapol(struct ibss_rsn *ibss_rsn, const u8 *src_addr, 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const u8 *buf, size_t len); 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid ibss_rsn_set_psk(struct ibss_rsn *ibss_rsn, const u8 *psk); 62c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidtvoid ibss_rsn_handle_auth(struct ibss_rsn *ibss_rsn, const u8 *auth_frame, 63c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt size_t len); 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* IBSS_RSN_H */ 66