[PATCH 09/92] NAN: Add pairing configuration

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


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

Move NAN pairing capabilities into a dedicated struct.
Add configurations for enabling NAN pairing setup, NPK caching
and NPK verification.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 src/nan/nan.h              | 20 +++++++++++++++++++-
 src/nan/nan_module_tests.c |  5 ++---
 src/nan/nan_util.c         | 14 +++++++++++---
 3 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/src/nan/nan.h b/src/nan/nan.h
index 1c7ae59cb0..66e078a621 100644
--- a/src/nan/nan.h
+++ b/src/nan/nan.h
@@ -385,6 +385,23 @@ struct nan_peer_potential_avail {
 	} maps[NAN_MAX_MAPS];
 };
 
+#define NAN_PAIRING_PASN_128  BIT(0)
+#define NAN_PAIRING_PASN_256  BIT(1)
+
+/**
+ * struct nan_pairing_cfg - NAN pairing configuration parameters
+ * @pairing_setup: Whether pairing setup is enabled
+ * @npk_caching: Whether NPK caching is enabled
+ * @pairing_verification: Whether pairing verification is enabled
+ * @cipher_suites: Bitmap of supported cipher suites (NAN_PAIRING_PASN_*)
+ */
+struct nan_pairing_cfg {
+	bool pairing_setup;
+	bool npk_caching;
+	bool pairing_verification;
+	u32 cipher_suites;
+};
+
 struct nan_config {
 	void *cb_ctx;
 	u8 nmi_addr[ETH_ALEN];
@@ -393,7 +410,8 @@ struct nan_config {
 
 	/* Wi-Fi Aware spec v4.0, Table 141 (Capability Info field) */
 	u8 dev_capa_ext_reg_info; /* NAN_DEV_CAPA_EXT_INFO_0_* */
-	u8 dev_capa_ext_pairing_npk_caching; /* NAN_DEV_CAPA_EXT_INFO_1_* */
+
+	struct nan_pairing_cfg pairing_cfg;
 
 	/*
 	 * Supported Pairing Bootstrapping Methods (PBM).
diff --git a/src/nan/nan_module_tests.c b/src/nan/nan_module_tests.c
index 81eeba0f12..f04aba1c68 100644
--- a/src/nan/nan_module_tests.c
+++ b/src/nan/nan_module_tests.c
@@ -913,9 +913,8 @@ static int nan_test_dev_init(struct nan_device *dev)
 	nan.dev_capa.capa = 0;
 
 	nan.dev_capa_ext_reg_info = 0;
-	nan.dev_capa_ext_pairing_npk_caching =
-		NAN_DEV_CAPA_EXT_INFO_1_PAIRING_SETUP |
-		NAN_DEV_CAPA_EXT_INFO_1_NPK_NIK_CACHING;
+	nan.pairing_cfg.npk_caching = true;
+	nan.pairing_cfg.pairing_setup = true;
 
 	dev->nan = nan_init(&nan);
 	if (!dev->nan) {
diff --git a/src/nan/nan_util.c b/src/nan/nan_util.c
index bc5783a27a..31df1c848e 100644
--- a/src/nan/nan_util.c
+++ b/src/nan/nan_util.c
@@ -392,14 +392,22 @@ int nan_add_csia(struct wpabuf *buf, u8 capab, size_t cs_list_len,
  */
 void nan_add_dev_capa_ext_attr(struct nan_data *nan, struct wpabuf *buf)
 {
-	if (!nan->cfg->dev_capa_ext_reg_info &&
-	    !nan->cfg->dev_capa_ext_pairing_npk_caching)
+	u8 pairing_and_npk_caching = 0;
+
+	if (nan->cfg->pairing_cfg.pairing_setup)
+		pairing_and_npk_caching |=
+		    NAN_DEV_CAPA_EXT_INFO_1_PAIRING_SETUP;
+	if (nan->cfg->pairing_cfg.npk_caching)
+		pairing_and_npk_caching |=
+		    NAN_DEV_CAPA_EXT_INFO_1_NPK_NIK_CACHING;
+
+	if (!nan->cfg->dev_capa_ext_reg_info && !pairing_and_npk_caching)
 		return;
 
 	wpabuf_put_u8(buf, NAN_ATTR_DCEA);
 	wpabuf_put_le16(buf, 2);
 	wpabuf_put_u8(buf, nan->cfg->dev_capa_ext_reg_info);
-	wpabuf_put_u8(buf, nan->cfg->dev_capa_ext_pairing_npk_caching);
+	wpabuf_put_u8(buf, pairing_and_npk_caching);
 }
 
 
-- 
2.53.0




More information about the Hostap mailing list