[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