aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Prestwood <prestwoj@gmail.com>2020-05-07 14:50:59 -0700
committerDenis Kenzior <denkenz@gmail.com>2020-05-02 20:56:13 -0500
commitd38bd513c9bd54b080ba6c27a5a8eda44c491b2a (patch)
treee3f1bec6186211a25d8cbd92aa55355a4c31d506
parentc7a17e59878aeb0efe9a6d8cc93d1308d008927d (diff)
downloadiwd-d38bd513c9bd54b080ba6c27a5a8eda44c491b2a.tar.gz
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.
-rw-r--r--src/fils.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/fils.c b/src/fils.c
index 2d2a0913c..acead5064 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));