From f7b59750d026cd0903537af5fc3fdafbf1dcc2a9 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Thu, 15 Jul 2021 16:01:30 -0500 Subject: [PATCH] handshake: Add handshake_util_find_kde --- src/handshake.c | 20 +++++++++++--------- src/handshake.h | 3 +++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/handshake.c b/src/handshake.c index 7d51b55d..2bce6b8c 100644 --- a/src/handshake.c +++ b/src/handshake.c @@ -813,8 +813,9 @@ bool handshake_util_ap_ie_matches(const uint8_t *msg_ie, return true; } -static const uint8_t *find_kde(const uint8_t *data, size_t data_len, - size_t *out_len, enum handshake_kde selector) +const uint8_t *handshake_util_find_kde(enum handshake_kde selector, + const uint8_t *data, size_t data_len, + size_t *out_kde_len) { struct ie_tlv_iter iter; const uint8_t *result; @@ -835,8 +836,8 @@ static const uint8_t *find_kde(const uint8_t *data, size_t data_len, if (l_get_be32(result) != selector) continue; - if (out_len) - *out_len = len - 4; + if (out_kde_len) + *out_kde_len = len - 4; return result + 4; } @@ -848,8 +849,8 @@ const uint8_t *handshake_util_find_gtk_kde(const uint8_t *data, size_t data_len, size_t *out_gtk_len) { size_t gtk_len; - const uint8_t *gtk = find_kde(data, data_len, >k_len, - HANDSHAKE_KDE_GTK); + const uint8_t *gtk = handshake_util_find_kde(HANDSHAKE_KDE_GTK, + data, data_len, >k_len); if (!gtk) return NULL; @@ -875,8 +876,8 @@ const uint8_t *handshake_util_find_igtk_kde(const uint8_t *data, size_t *out_igtk_len) { size_t igtk_len; - const uint8_t *igtk = find_kde(data, data_len, &igtk_len, - HANDSHAKE_KDE_IGTK); + const uint8_t *igtk = handshake_util_find_kde(HANDSHAKE_KDE_IGTK, + data, data_len, &igtk_len); if (!igtk) return NULL; @@ -903,7 +904,8 @@ const uint8_t *handshake_util_find_pmkid_kde(const uint8_t *data, const uint8_t *pmkid; size_t pmkid_len; - pmkid = find_kde(data, data_len, &pmkid_len, HANDSHAKE_KDE_PMKID); + pmkid = handshake_util_find_kde(HANDSHAKE_KDE_PMKID, data, data_len, + &pmkid_len); if (pmkid && pmkid_len != 16) return NULL; diff --git a/src/handshake.h b/src/handshake.h index 798e4258..ca4b58c6 100644 --- a/src/handshake.h +++ b/src/handshake.h @@ -233,6 +233,9 @@ void handshake_state_set_gtk(struct handshake_state *s, const uint8_t *key, bool handshake_util_ap_ie_matches(const uint8_t *msg_ie, const uint8_t *scan_ie, bool is_wpa); +const uint8_t *handshake_util_find_kde(enum handshake_kde selector, + const uint8_t *data, size_t data_len, + size_t *out_kde_len); const uint8_t *handshake_util_find_gtk_kde(const uint8_t *data, size_t data_len, size_t *out_gtk_len); const uint8_t *handshake_util_find_igtk_kde(const uint8_t *data,