diff mbox series

[1/1] EAPOL: Update PMK length in EAPOL callback to support newer key management

Message ID ed2e0b0e5e573503679b36144d8adcedf5d2cb06.1655803426.git.vinayak.yadawad@broadcom.com
State Accepted
Headers show
Series [1/1] EAPOL: Update PMK length in EAPOL callback to support newer key management | expand

Commit Message

Vinayak Yadawad June 21, 2022, 10:13 a.m. UTC
With introduction of newer key managments, there is a need to
update the PMK length plumbed for driver based 4-way handshake.
In order to support this, the current patch updates the PMK
length to SUITE_B_192 PMK length 48, if the key management
is of type sha384.

Signed-off-by: Vinayak Yadawad <vinayak.yadawad@broadcom.com>
---
 wpa_supplicant/wpas_glue.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Jouni Malinen Aug. 31, 2022, 3:53 p.m. UTC | #1
On Thu, Jun 30, 2022 at 09:38:14AM +0530, Vinayak Yadawad wrote:
> With introduction of newer key managments, there is a need to
> update the PMK length plumbed for driver based 4-way handshake.
> In order to support this, the current patch updates the PMK
> length to SUITE_B_192 PMK length 48, if the key management
> is of type sha384.

Thanks, applied.
diff mbox series

Patch

diff --git a/wpa_supplicant/wpas_glue.c b/wpa_supplicant/wpas_glue.c
index d62914bc1..6e110dbdc 100644
--- a/wpa_supplicant/wpas_glue.c
+++ b/wpa_supplicant/wpas_glue.c
@@ -286,7 +286,7 @@  static void wpa_supplicant_eapol_cb(struct eapol_sm *eapol,
 {
 	struct wpa_supplicant *wpa_s = ctx;
 	int res, pmk_len;
-	u8 pmk[PMK_LEN];
+	u8 pmk[PMK_LEN_MAX];
 
 	wpa_printf(MSG_DEBUG, "EAPOL authentication completed - result=%s",
 		   result_str(result));
@@ -326,7 +326,11 @@  static void wpa_supplicant_eapol_cb(struct eapol_sm *eapol,
 	wpa_printf(MSG_DEBUG, "Configure PMK for driver-based RSN 4-way "
 		   "handshake");
 
-	pmk_len = PMK_LEN;
+	if (wpa_key_mgmt_sha384(wpa_s->key_mgmt))
+		pmk_len = PMK_LEN_SUITE_B_192;
+	else
+		pmk_len = PMK_LEN;
+
 	if (wpa_key_mgmt_ft(wpa_s->key_mgmt)) {
 #ifdef CONFIG_IEEE80211R
 		u8 buf[2 * PMK_LEN];
@@ -341,7 +345,7 @@  static void wpa_supplicant_eapol_cb(struct eapol_sm *eapol,
 		res = -1;
 #endif /* CONFIG_IEEE80211R */
 	} else {
-		res = eapol_sm_get_key(eapol, pmk, PMK_LEN);
+		res = eapol_sm_get_key(eapol, pmk, pmk_len);
 		if (res) {
 			/*
 			 * EAP-LEAP is an exception from other EAP methods: it