mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-17 17:43:06 -05:00
OCV: Parse all types of OCI information elements
Add functionality to parse all variations of the OCI element. Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
This commit is contained in:
parent
17c2559caf
commit
f53aeff415
@ -1014,6 +1014,15 @@ static int wpa_parse_generic(const u8 *pos, const u8 *end,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
|
#ifdef CONFIG_OCV
|
||||||
|
if (pos[1] > RSN_SELECTOR_LEN + 2 &&
|
||||||
|
RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_OCI) {
|
||||||
|
ie->oci = pos + 2 + RSN_SELECTOR_LEN;
|
||||||
|
ie->oci_len = pos[1] - RSN_SELECTOR_LEN;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_OCV */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,10 @@ struct wpa_eapol_ie_parse {
|
|||||||
const u8 *ip_addr_req;
|
const u8 *ip_addr_req;
|
||||||
const u8 *ip_addr_alloc;
|
const u8 *ip_addr_alloc;
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
#ifdef CONFIG_OCV
|
||||||
|
const u8 *oci;
|
||||||
|
size_t oci_len;
|
||||||
|
#endif /* CONFIG_OCV */
|
||||||
|
|
||||||
const u8 *osen;
|
const u8 *osen;
|
||||||
size_t osen_len;
|
size_t osen_len;
|
||||||
|
@ -266,6 +266,10 @@ static int ieee802_11_parse_extension(const u8 *pos, size_t elen,
|
|||||||
elems->password_id = pos;
|
elems->password_id = pos;
|
||||||
elems->password_id_len = elen;
|
elems->password_id_len = elen;
|
||||||
break;
|
break;
|
||||||
|
case WLAN_EID_EXT_OCV_OCI:
|
||||||
|
elems->oci = pos;
|
||||||
|
elems->oci_len = elen;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (show_errors) {
|
if (show_errors) {
|
||||||
wpa_printf(MSG_MSGDUMP,
|
wpa_printf(MSG_MSGDUMP,
|
||||||
|
@ -85,6 +85,7 @@ struct ieee802_11_elems {
|
|||||||
const u8 *power_capab;
|
const u8 *power_capab;
|
||||||
const u8 *roaming_cons_sel;
|
const u8 *roaming_cons_sel;
|
||||||
const u8 *password_id;
|
const u8 *password_id;
|
||||||
|
const u8 *oci;
|
||||||
|
|
||||||
u8 ssid_len;
|
u8 ssid_len;
|
||||||
u8 supp_rates_len;
|
u8 supp_rates_len;
|
||||||
@ -131,6 +132,7 @@ struct ieee802_11_elems {
|
|||||||
u8 power_capab_len;
|
u8 power_capab_len;
|
||||||
u8 roaming_cons_sel_len;
|
u8 roaming_cons_sel_len;
|
||||||
u8 password_id_len;
|
u8 password_id_len;
|
||||||
|
u8 oci_len;
|
||||||
|
|
||||||
struct mb_ies_info mb_ies;
|
struct mb_ies_info mb_ies;
|
||||||
};
|
};
|
||||||
|
@ -880,6 +880,12 @@ static int wpa_ft_parse_ftie(const u8 *ie, size_t ie_len,
|
|||||||
parse->igtk_len = len;
|
parse->igtk_len = len;
|
||||||
break;
|
break;
|
||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
#ifdef CONFIG_OCV
|
||||||
|
case FTIE_SUBELEM_OCI:
|
||||||
|
parse->oci = pos;
|
||||||
|
parse->oci_len = len;
|
||||||
|
break;
|
||||||
|
#endif /* CONFIG_OCV */
|
||||||
default:
|
default:
|
||||||
wpa_printf(MSG_DEBUG, "FT: Unknown subelem id %u", id);
|
wpa_printf(MSG_DEBUG, "FT: Unknown subelem id %u", id);
|
||||||
break;
|
break;
|
||||||
|
@ -454,6 +454,10 @@ struct wpa_ft_ies {
|
|||||||
size_t tie_len;
|
size_t tie_len;
|
||||||
const u8 *igtk;
|
const u8 *igtk;
|
||||||
size_t igtk_len;
|
size_t igtk_len;
|
||||||
|
#ifdef CONFIG_OCV
|
||||||
|
const u8 *oci;
|
||||||
|
size_t oci_len;
|
||||||
|
#endif /* CONFIG_OCV */
|
||||||
const u8 *ric;
|
const u8 *ric;
|
||||||
size_t ric_len;
|
size_t ric_len;
|
||||||
int key_mgmt;
|
int key_mgmt;
|
||||||
|
@ -465,6 +465,17 @@ static int wpa_parse_generic(const u8 *pos, const u8 *end,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
|
#ifdef CONFIG_OCV
|
||||||
|
if (pos[1] >= RSN_SELECTOR_LEN + 1 &&
|
||||||
|
RSN_SELECTOR_GET(pos + 2) == RSN_KEY_DATA_OCI) {
|
||||||
|
ie->oci = pos + 2 + RSN_SELECTOR_LEN;
|
||||||
|
ie->oci_len = pos[1] - RSN_SELECTOR_LEN;
|
||||||
|
wpa_hexdump(MSG_DEBUG, "WPA: OCI KDE in EAPOL-Key",
|
||||||
|
pos, pos[1] + 2);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_OCV */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +53,10 @@ struct wpa_eapol_ie_parse {
|
|||||||
const u8 *ip_addr_req;
|
const u8 *ip_addr_req;
|
||||||
const u8 *ip_addr_alloc;
|
const u8 *ip_addr_alloc;
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
#ifdef CONFIG_OCV
|
||||||
|
const u8 *oci;
|
||||||
|
size_t oci_len;
|
||||||
|
#endif /* CONFIG_OCV */
|
||||||
};
|
};
|
||||||
|
|
||||||
int wpa_supplicant_parse_ies(const u8 *buf, size_t len,
|
int wpa_supplicant_parse_ies(const u8 *buf, size_t len,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user