[PATCH 24/92] NAN: Handle pairing PASN auth frame 3

Andrei Otcheretianski andrei.otcheretianski at intel.com
Wed Apr 22 05:23:15 PDT 2026


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

Add handling for NAN pairing PASN auth frame 3.

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

diff --git a/src/nan/nan_pairing.c b/src/nan/nan_pairing.c
index dd984b1e0d..e5115e13dc 100644
--- a/src/nan/nan_pairing.c
+++ b/src/nan/nan_pairing.c
@@ -684,6 +684,37 @@ static int nan_pairing_handle_auth_2(struct nan_data *nan_data,
 }
 
 
+static int nan_pairing_handle_auth_3(struct nan_data *nan_data,
+				     struct nan_peer *peer,
+				     const struct ieee80211_mgmt *mgmt,
+				     size_t len)
+{
+	struct pasn_data *pasn = peer->pairing.pasn;
+	int ret;
+	u8 status = WLAN_STATUS_SUCCESS;
+
+	ret = handle_auth_pasn_3(pasn, nan_data->cfg->nmi_addr, peer->nmi_addr,
+				 mgmt, len);
+	if (ret < 0) {
+		status = WLAN_STATUS_UNSPECIFIED_FAILURE;
+		wpa_printf(MSG_DEBUG, "NAN: Pairing: Handle Auth3 failed");
+	}
+
+	ret = nan_data->cfg->pairing_result_cb(nan_data->cfg->cb_ctx,
+					       peer->nmi_addr, pasn->akmp,
+					       pasn->cipher, status,
+					       &pasn->ptk);
+	if (ret < 0 || status != WLAN_STATUS_SUCCESS)
+		nan_pairing_deinit_peer(peer);
+
+	/* Don't clear PASN data if pairing is successful. If caching is
+	 * enabled, it will still be needed when the NIK is received from
+	 * the peer.
+	 */
+	return status == WLAN_STATUS_SUCCESS ? ret : -1;
+}
+
+
 /*
  * nan_pairing_auth_rx - Handle received NAN pairing authentication frames
  *
@@ -779,6 +810,8 @@ int nan_pairing_auth_rx(struct nan_data *nan_data,
 						 mgmt, len);
 	else if (auth_transaction == 2)
 		return nan_pairing_handle_auth_2(nan_data, peer, mgmt, len);
+	else if (auth_transaction == 3)
+		return nan_pairing_handle_auth_3(nan_data, peer, mgmt, len);
 
 	return -1;
 }
-- 
2.53.0




More information about the Hostap mailing list