18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * hostapd - WPA/RSN IE and KDE 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_IE_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPA_AUTH_IE_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpa_eapol_ie_parse {
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *wpa_ie;
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t wpa_ie_len;
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *rsn_ie;
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t rsn_ie_len;
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *pmkid;
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *gtk;
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t gtk_len;
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *mac_addr;
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t mac_addr_len;
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_PEERKEY
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *smk;
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t smk_len;
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *nonce;
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t nonce_len;
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *lifetime;
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t lifetime_len;
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *error;
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t error_len;
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_PEERKEY */
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211W
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *igtk;
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t igtk_len;
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211W */
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_IEEE80211R
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *mdie;
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t mdie_len;
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *ftie;
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t ftie_len;
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_IEEE80211R */
42cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#ifdef CONFIG_P2P
43cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt	const u8 *ip_addr_req;
44cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt	const u8 *ip_addr_alloc;
45cf32e60fa7e0d33fe1551a6dba8dcbbec47ea50eDmitry Shmidt#endif /* CONFIG_P2P */
46f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt
47f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	const u8 *osen;
48f21452aea786ac056eb01f1cbba4f553bd502747Dmitry Shmidt	size_t osen_len;
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_parse_kde_ies(const u8 *buf, size_t len,
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		      struct wpa_eapol_ie_parse *ie);
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtu8 * wpa_add_kde(u8 *pos, u32 kde, const u8 *data, size_t data_len,
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		 const u8 *data2, size_t data2_len);
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint wpa_auth_gen_wpa_ie(struct wpa_authenticator *wpa_auth);
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPA_AUTH_IE_H */
58