handshake: Add handshake_util_find_kde

This commit is contained in:
Denis Kenzior 2021-07-15 16:01:30 -05:00
parent 8606f6e96a
commit f7b59750d0
2 changed files with 14 additions and 9 deletions

View File

@ -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, &gtk_len,
HANDSHAKE_KDE_GTK);
const uint8_t *gtk = handshake_util_find_kde(HANDSHAKE_KDE_GTK,
data, data_len, &gtk_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;

View File

@ -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,