wpa_ie.h revision 51b6ea882f234c14cd1fe1332a3840cf61fafcca
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * wpa_supplicant - WPA/RSN IE and KDE definitions
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This software may be distributed under the terms of the BSD license.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See README for more details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef WPA_IE_H
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define WPA_IE_H
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct wpa_sm;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct wpa_eapol_ie_parse {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *wpa_ie;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t wpa_ie_len;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *rsn_ie;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t rsn_ie_len;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *pmkid;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *gtk;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t gtk_len;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *mac_addr;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t mac_addr_len;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef CONFIG_PEERKEY
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *smk;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t smk_len;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *nonce;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t nonce_len;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *lifetime;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t lifetime_len;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *error;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t error_len;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* CONFIG_PEERKEY */
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef CONFIG_IEEE80211W
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *igtk;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t igtk_len;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* CONFIG_IEEE80211W */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *mdie;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t mdie_len;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *ftie;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t ftie_len;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *reassoc_deadline;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *key_lifetime;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *lnkid;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t lnkid_len;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *ext_capab;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t ext_capab_len;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *supp_rates;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t supp_rates_len;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *ext_supp_rates;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t ext_supp_rates_len;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *ht_capabilities;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t ht_capabilities_len;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *vht_capabilities;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t vht_capabilities_len;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	u8 qosinfo;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	u16 aid;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int wpa_supplicant_parse_ies(const u8 *buf, size_t len,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     struct wpa_eapol_ie_parse *ie);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int wpa_gen_wpa_ie(struct wpa_sm *sm, u8 *wpa_ie, size_t wpa_ie_len);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* WPA_IE_H */
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)