[PATCH 92/97] wpa_supplicant: Add support for password hex in pairing request

Andrei Otcheretianski andrei.otcheretianski at intel.com
Tue Apr 28 13:06:33 PDT 2026


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

Add support for specifying the password as hex in pairing request.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 wpa_supplicant/nan_supplicant.c | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 6f2292a1ba..d53cc206db 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -3646,7 +3646,7 @@ int wpas_nan_pair(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
 /*
  * Format: NAN_PAIR <peer_nmi> <handle=<id>>
  *	<peer_instance_id=<id>> <auth=<0|1|2>> <cipher=<CCMP|GCMP-256>>
- *	[responder] [password=<password>]
+ *	[responder] [password=<password>|pwd_hex=<hex>]
  */
 int wpas_nan_pairing_start(struct wpa_supplicant *wpa_s, char *cmd)
 {
@@ -3656,7 +3656,8 @@ int wpas_nan_pairing_start(struct wpa_supplicant *wpa_s, char *cmd)
 	u8 peer_instance_id = 0;
 	int handle = 0;
 	int cipher = WPA_CIPHER_NONE;
-	char *password = NULL;
+	char *password = NULL, *password_hex = NULL;
+	char *password_decoded = NULL;
 	bool responder = false;
 	char *pos;
 
@@ -3698,6 +3699,8 @@ int wpas_nan_pairing_start(struct wpa_supplicant *wpa_s, char *cmd)
 			responder = true;
 		} else if (os_strncmp(token, "password=", 9) == 0) {
 			password = token + 9;
+		} else if (os_strncmp(token, "pwd_hex=", 8) == 0) {
+			password_hex = token + 8;
 		} else {
 			wpa_printf(MSG_INFO,
 				   "NAN_PAIR: Invalid parameter: '%s'",
@@ -3722,12 +3725,28 @@ int wpas_nan_pairing_start(struct wpa_supplicant *wpa_s, char *cmd)
 		return -1;
 	}
 
+	if (password && password_hex) {
+		wpa_printf(MSG_DEBUG,
+			   "NAN_PAIR: Specify only one of password or pwd_hex");
+		return -1;
+	}
+
+	if (password_hex) {
+		password_decoded = wpas_nan_parse_password_hex(password_hex);
+		if (!password_decoded)
+			return -1;
+	}
+
 	if (wpas_nan_pair(wpa_s, addr, auth_mode, cipher, handle,
-			  peer_instance_id, responder, password) < 0) {
+			  peer_instance_id, responder,
+			  password_decoded ? password_decoded : password) < 0) {
+		os_free(password_decoded);
 		wpa_printf(MSG_INFO, "NAN_PAIR: Pairing initiation failed");
 		return -1;
 	}
 
+	os_free(password_decoded);
+
 	return 0;
 }
 
-- 
2.53.0




More information about the Hostap mailing list