From d38bd513c9bd54b080ba6c27a5a8eda44c491b2a Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Thu, 7 May 2020 14:50:59 -0700 Subject: [PATCH] fils: include RSNE in authenticate 802.11ai mandates that the RSN element is included during authentication for FILS. This previously was happening by chance since supplicant_ie was being included with CMD_AUTHENTICATE. This included more than just the RSNE so that was removed in an earlier commit. Now FILS builds the RSNE itself and includes this with CMD_AUTHENTICATE. --- src/fils.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/fils.c b/src/fils.c index 2d2a0913..acead506 100644 --- a/src/fils.c +++ b/src/fils.c @@ -91,6 +91,8 @@ static void fils_erp_tx_func(const uint8_t *eap_data, size_t len, uint8_t data[256]; uint8_t *ptr = data; unsigned int tlv_len; + struct ie_rsn_info rsn_info; + uint8_t *rsne; l_getrandom(fils->nonce, 16); l_getrandom(fils->session, 8); @@ -106,6 +108,15 @@ static void fils_erp_tx_func(const uint8_t *eap_data, size_t len, ie_tlv_builder_init(&builder, ptr, sizeof(data) - 4); + ie_parse_rsne_from_data(fils->hs->supplicant_ie, + fils->hs->supplicant_ie[1] + 2, + &rsn_info); + rsne = alloca(256); + ie_build_rsne(&rsn_info, rsne); + + ie_tlv_builder_next(&builder, IE_TYPE_RSN); + ie_tlv_builder_set_data(&builder, rsne + 2, rsne[1]); + ie_tlv_builder_next(&builder, IE_TYPE_FILS_NONCE); ie_tlv_builder_set_data(&builder, fils->nonce, sizeof(fils->nonce));