From f340ea510c95c614df3bf632ef8e3f3651c81bdd Mon Sep 17 00:00:00 2001 From: Andrew Zaborowski Date: Sat, 15 Apr 2017 13:58:46 +0200 Subject: [PATCH] handshake: Add handshake_util_find_pmkid_kde Add a function that finds the PMKID kde in an RSNE's Key Data field similar to handshake_util_find_gtk_kde. --- src/handshake.c | 15 +++++++++++++++ src/handshake.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/handshake.c b/src/handshake.c index a0c71b97..2c705915 100644 --- a/src/handshake.c +++ b/src/handshake.c @@ -525,6 +525,21 @@ const uint8_t *handshake_util_find_igtk_kde(const uint8_t *data, return find_kde(data, data_len, out_igtk_len, igtk_oui); } +const uint8_t *handshake_util_find_pmkid_kde(const uint8_t *data, + size_t data_len) +{ + static const unsigned char pmkid_oui[] = { 0x00, 0x0f, 0xac, 0x04 }; + const uint8_t *pmkid; + size_t pmkid_len; + + pmkid = find_kde(data, data_len, &pmkid_len, pmkid_oui); + + if (pmkid_len != 16) + return NULL; + + return pmkid; +} + /* * Unwrap a GTK / IGTK included in an FTE following 802.11-2012, Section 12.8.5: * diff --git a/src/handshake.h b/src/handshake.h index ab821204..1bdbef8d 100644 --- a/src/handshake.h +++ b/src/handshake.h @@ -142,3 +142,5 @@ 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, size_t data_len, size_t *out_igtk_len); +const uint8_t *handshake_util_find_pmkid_kde(const uint8_t *data, + size_t data_len);