From a7fe6a9c128958f245cf57a541d30fa097d6a490 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Wed, 6 Dec 2023 12:17:53 -0800 Subject: [PATCH] handshake: add setters for authenticator/supplicant_fte In general only the authenticator FTE is used/validated but with some FT refactoring coming there needs to be a way to build the supplicants FTE into the handshake object. Because of this there needs to be separate FTE buffers for both the authenticator and supplicant. --- src/handshake.c | 14 ++++++++++++++ src/handshake.h | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/src/handshake.c b/src/handshake.c index cf9c18d5..07e0657d 100644 --- a/src/handshake.c +++ b/src/handshake.c @@ -123,6 +123,8 @@ void handshake_state_free(struct handshake_state *s) l_free(s->supplicant_rsnxe); l_free(s->mde); l_free(s->fte); + l_free(s->authenticator_fte); + l_free(s->supplicant_fte); l_free(s->fils_ip_req_ie); l_free(s->fils_ip_resp_ie); l_free(s->vendor_ies); @@ -319,6 +321,18 @@ void handshake_state_set_fte(struct handshake_state *s, const uint8_t *fte) replace_ie(&s->fte, fte); } +void handshake_state_set_authenticator_fte(struct handshake_state *s, + const uint8_t *fte) +{ + replace_ie(&s->authenticator_fte, fte); +} + +void handshake_state_set_supplicant_fte(struct handshake_state *s, + const uint8_t *fte) +{ + replace_ie(&s->supplicant_fte, fte); +} + void handshake_state_set_vendor_ies(struct handshake_state *s, const struct iovec *iov, size_t n_iovs) diff --git a/src/handshake.h b/src/handshake.h index 3b51cb34..5dd225e8 100644 --- a/src/handshake.h +++ b/src/handshake.h @@ -104,6 +104,8 @@ struct handshake_state { uint8_t *supplicant_rsnxe; uint8_t *mde; uint8_t *fte; + uint8_t *authenticator_fte; + uint8_t *supplicant_fte; uint8_t *vendor_ies; size_t vendor_ies_len; enum ie_rsn_cipher_suite pairwise_cipher; @@ -216,6 +218,11 @@ void handshake_state_set_ssid(struct handshake_state *s, void handshake_state_set_mde(struct handshake_state *s, const uint8_t *mde); void handshake_state_set_fte(struct handshake_state *s, const uint8_t *fte); +void handshake_state_set_authenticator_fte(struct handshake_state *s, + const uint8_t *fte); +void handshake_state_set_supplicant_fte(struct handshake_state *s, + const uint8_t *fte); + void handshake_state_set_vendor_ies(struct handshake_state *s, const struct iovec *iov, size_t n_iovs);