[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