[PATCH 00/92] Add NAN PASN pairing support

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


This series adds support for NAN PASN pairing.
The pairing can be performed using:
- Opportunistic pairing (unauthenticated PASN)
- SAE-based authentication with password
- NPK caching for pairing verification

The series start with the previously submitted tests for bootstrapping
and NAN data path and few more patches with enhancements and fixes.

Note that test patches are still marked with RFC as the wireless-next
kernel still doesn't have all the required support in mac80211_hwsim.
For testing purposes iwlwifi-next/mac80211_candidate kernel can be used.

Andrei Otcheretianski (13):
  tests: Add get_iface_addr() to wpasupplicant.py
  tests: Add NAN data path tests
  tests: Add NAN bootstrapping hwsim testing
  NAN: Correctly configure SAE groups on responder
  wpa_supplicant: Support NAN pairing abort
  NAN: Add handle and requestor_instance_id parameters in BOOTSTRAP
    events
  NAN: Add NAN-PAIRING-REQUEST notification
  wpa_supplicant: Move NAN notifications to notify.c
  NAN: Add API to retrieve peer pairing configuration
  NAN: Add key_mgmt and verify flag to NAN-PAIRING-REQUEST notification
  NAN: Support NDP establishment with PASN cipher suites
  NAN: Verify that only advertised CSIDs are used for NDP
  NAN: Use pairing CSID in NDP establishment

Avraham Stern (66):
  PASN: Add support for PMK caching with PASN AKM
  PASN: Remove an unused variable
  NAN: Add pairing configuration
  NAN: Add pairing capability indication attribute to NAN IE
  NAN: Add a function for deriving NIRA's tag from NIK
  NAN: Add NIK and NIK lifetime to NAN config
  NAN: Add NIRA to NAN IE when pairing verification is enabled
  wpa_supplicant: Indicate NAN pairing capabilities in publish/subscribe
  wpa_supplicant: Set NAN Identity Key and its lifetime to NAN module
  wpa_supplicant: Add PMKSA cache to NAN data
  NAN: Save the NPBA from successful bootstrapping
  NAN: Add a function for triggering NAN pairing
  NAN: Keep NAN pairing data in one place
  NAN: Handle PASN auth frame Tx status
  wpa_supplicant: Add an API to trigger NAN pairing
  NAN: Handle pairing PASN auth frame 1
  NAN: Handle pairing PASN auth frame 2
  NAN: Handle pairing PASN auth frame 3
  NAN: Add control interface for triggering NAN pairing
  wpa_supplicant: Implement NAN send_pasn() callback
  wpa_supplicant: Redirect PASN auth Tx status to NAN module
  wpa_supplicant: Pass Rx PASN auth frames to NAN module
  wpa_supplicant: Implement the NAN pairing result callback
  NAN: Add functions for deriving NPK and KEK from KDK
  NAN: Derive KEK and NPK after pairing
  NAN: Add NIK KDE and Key lifetime KDE definitions
  NAN: Add a function for encrypting the key data using the KEK
  NAN: Add function for decrypting the Key Data field
  NAN: Send NIK after successful pairing
  NAN: Add NAN KDE parsing to key data parsing
  NAN: Handle followup frame after pairing is completed
  wpa_supplicant: Store NIK received after pairing
  NAN: Add NIRA to the list of parsed attributes
  NAN: Parse NAN Identity Resolution attribute from SDFs
  NAN: Set PASN data for pairing verification
  NAN: Add NIRA to PASN frames for pairing verification
  NAN: Add support for starting pairing verification
  wpa_supplicant: Implement NAN get_npk_akmp() callback
  NAN: Don't derive NPK and send NIK when pairing verification is
    complete
  nl80211: Register for PASN authentication frames for NAN interface
  wpa_supplicant: Add NAN-NIK-RECEIVED notification
  NAN: Add Cipher Suite Information attribute to publish messages
  NAN: Add function for creating a list of PMKIDs for a given PMK
  NAN: Add Security Context Information attribute to publish messages
  wpa_supplicant: Add cipher_suites parameter to NAN_PUBLISH command
  wpa_supplicant: Add nd_pmk parameter to NAN_PUBLISH command
  NAN: Parse PMKIDs from the SCIA in publish messages
  wpa_supplicant: Add PMKIDs list to NAN-DISCOVERY-RESULT event
  NAN: Add supported cipher suite list to the discovery result callback
  wpa_supplicant: Add supported cipher suites to NAN discovery result
  NAN: Add set functions for NAN pairing configurations
  NAN: Add an option to set NAN pairing config
  NAN: Add an indication that a peer is paired
  NAN: Pass protected SDFs to NAN module
  nl80211: Register for dual protected SDF on NAN interface
  nl80211: Support key operations (new/set/del) on non-netdev interfaces
  NAN: Pass a schedule in pairing command
  NAN: Set support for NAN pairing by default
  NAN: Add the option to set the NIK and its lifetime
  wpa_supplicant: Rename nan_config to nan_cluster_config
  NAN: Send and receive only protected SDF frames if peer is paired
  wpa_supplicant: Set MFP flag for NAN NMI station before pairing
  NAN: Add a function for deriving ND-PMK from KDK
  NAN: Derive and report ND-PMK after successful pairing
  NAN: Send NAFs to paired peer as protected dual public action
  tests: Add NAN hwsim pairing tests

Benjamin Berg (1):
  NAN: improve and fix NAN device type checking

Ilan Peer (12):
  common: Set the operating class if it is known
  nl80211: Track cookies for NAN Device action frames
  nl80211: Register for NAFs and protected NAFs on NAN Data
  nl80211: Extend the transmit cookie matching to NAN Data interface
  wpa_supplicant: Do not enable Pairing and NDP if not supported by the
    driver
  NAN: Prepare module tests for NAF transmitted over NDIs
  NAN: Support transmission and reception of NAFs in a secure manner
  PASN: Allow verification with PASN base AKM
  NAN: Unpair a peer before the NMI station is removed
  NAN: Aggregate NAN discovery result information into a struct
  NAN: Indicate if a service supports pairing and/or NPK/NIK caching
  NAN: Indicate the service supported bootstrap and pairing methods

 src/ap/ieee802_11.c                |    3 +-
 src/ap/nan_usd_ap.c                |   21 +-
 src/common/ieee802_11_common.c     |   11 +-
 src/common/ieee802_11_common.h     |    2 +
 src/common/nan_de.c                |  371 ++++++-
 src/common/nan_de.h                |   36 +-
 src/common/nan_defs.h              |   46 +
 src/common/proximity_ranging.c     |    8 +-
 src/common/wpa_common.c            |   22 +
 src/common/wpa_common.h            |    4 +
 src/common/wpa_ctrl.h              |    9 +
 src/drivers/driver_nl80211.c       |  104 +-
 src/drivers/driver_nl80211_event.c |   38 +-
 src/nan/nan.c                      |  291 +++++-
 src/nan/nan.h                      |  178 +++-
 src/nan/nan_bootstrap.c            |   68 +-
 src/nan/nan_crypto.c               |  484 ++++++++-
 src/nan/nan_i.h                    |  138 ++-
 src/nan/nan_module_tests.c         |   41 +-
 src/nan/nan_module_tests.h         |    2 +
 src/nan/nan_pairing.c              | 1570 ++++++++++++++++++++++++++++
 src/nan/nan_sec.c                  |   33 +-
 src/nan/nan_util.c                 |   60 +-
 src/p2p/p2p.c                      |    6 +-
 src/pasn/pasn_common.c             |    8 -
 src/pasn/pasn_common.h             |    6 +-
 src/pasn/pasn_initiator.c          |   17 +-
 src/pasn/pasn_responder.c          |   31 +-
 tests/hwsim/test_nan.py            |  793 +++++++++++++-
 tests/hwsim/wpasupplicant.py       |   18 +
 wpa_supplicant/Makefile            |    3 +
 wpa_supplicant/config.h            |    5 +
 wpa_supplicant/ctrl_iface.c        |   45 +
 wpa_supplicant/events.c            |   29 +-
 wpa_supplicant/nan_supplicant.c    |  843 +++++++++++++--
 wpa_supplicant/nan_supplicant.h    |   19 +
 wpa_supplicant/notify.c            |  281 ++++-
 wpa_supplicant/notify.h            |   50 +-
 wpa_supplicant/wpa_cli.c           |   21 +
 wpa_supplicant/wpa_supplicant.c    |    2 +-
 wpa_supplicant/wpa_supplicant_i.h  |   11 +-
 41 files changed, 5379 insertions(+), 349 deletions(-)
 create mode 100644 src/nan/nan_pairing.c

-- 
2.53.0




More information about the Hostap mailing list