[PATCH 33/97] NAN: Add GTK cipher suite to NDP setup messages

Andrei Otcheretianski andrei.otcheretianski at intel.com
Tue Apr 28 13:05:34 PDT 2026


From: Avraham Stern <avraham.stern at intel.com>

When GTK is required, add the GTK cipher suite to the Cipher Suite
Information attribute (CSIA) in NDP setup M1 and M2 messages.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 src/nan/nan_sec.c | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/src/nan/nan_sec.c b/src/nan/nan_sec.c
index 4875fc14b7..768a8268b0 100644
--- a/src/nan/nan_sec.c
+++ b/src/nan/nan_sec.c
@@ -788,7 +788,8 @@ static int nan_sec_add_m1_attrs(struct nan_data *nan, struct nan_peer *peer,
 {
 	struct nan_ndp_sec *ndp_sec = &peer->ndp_setup.sec;
 	struct wpa_eapol_key *key;
-	struct nan_cipher_suite cs;
+	struct nan_cipher_suite cs[2];
+	size_t cs_len = 1;
 	u16 info;
 	size_t key_len = sizeof(struct wpa_eapol_key) + 2;
 	int ret;
@@ -817,9 +818,16 @@ static int nan_sec_add_m1_attrs(struct nan_data *nan, struct nan_peer *peer,
 	}
 
 	/* Cipher suite information */
-	cs.csid = ndp_sec->i_csid;
-	cs.instance_id = ndp_sec->i_instance_id;
-	nan_add_csia(buf, ndp_sec->i_capab, 1, &cs);
+	cs[0].csid = ndp_sec->i_csid;
+	cs[0].instance_id = ndp_sec->i_instance_id;
+
+	if (ndp_sec->local_gtk.csid != NAN_CS_NONE) {
+		cs[1].csid = ndp_sec->local_gtk.csid;
+		cs[1].instance_id = ndp_sec->i_instance_id;
+		cs_len++;
+	}
+
+	nan_add_csia(buf, ndp_sec->i_capab, cs_len, cs);
 
 	/* Security context information */
 	wpabuf_put_u8(buf, NAN_ATTR_SCIA);
@@ -871,7 +879,9 @@ static int nan_sec_add_m2_attrs(struct nan_data *nan, struct nan_peer *peer,
 {
 	struct nan_ndp_sec *ndp_sec = &peer->ndp_setup.sec;
 	struct wpa_eapol_key *key;
-	struct nan_cipher_suite cs;
+	struct nan_cipher_suite cs[2];
+	size_t cs_len = 1;
+
 	u16 info;
 	size_t key_len;
 
@@ -884,9 +894,15 @@ static int nan_sec_add_m2_attrs(struct nan_data *nan, struct nan_peer *peer,
 		return -1;
 
 	/* Cipher suite information */
-	cs.csid = ndp_sec->r_csid;
-	cs.instance_id = ndp_sec->r_instance_id;
-	nan_add_csia(buf, ndp_sec->r_capab, 1, &cs);
+	cs[0].csid = ndp_sec->r_csid;
+	cs[0].instance_id = ndp_sec->r_instance_id;
+
+	if (ndp_sec->local_gtk.csid != NAN_CS_NONE) {
+		cs[1].csid = ndp_sec->local_gtk.csid;
+		cs[1].instance_id = ndp_sec->r_instance_id;
+		cs_len++;
+	}
+	nan_add_csia(buf, ndp_sec->r_capab, cs_len, cs);
 
 	/* Security context information */
 	wpabuf_put_u8(buf, NAN_ATTR_SCIA);
-- 
2.53.0




More information about the Hostap mailing list