WPS: Add 'wpa_cli wps_pin get' for generating random PINs
This can be used, e.g., in a UI to generate a PIN without starting WPS (or P2P) operation.
This commit is contained in:
parent
64fa840a97
commit
98aa7ca5d8
2 changed files with 10 additions and 1 deletions
|
@ -127,6 +127,11 @@ This starts the WPS negotiation in the same way as above with the
|
||||||
generated PIN.
|
generated PIN.
|
||||||
|
|
||||||
|
|
||||||
|
If a random PIN is needed for a user interface, "wpa_cli wps_pin get"
|
||||||
|
can be used to generate a new PIN without starting WPS negotiation.
|
||||||
|
This random PIN can then be passed as an argument to another wps_pin
|
||||||
|
call when the actual operation should be started.
|
||||||
|
|
||||||
If the client design wants to support optional WPS PBC mode, this can
|
If the client design wants to support optional WPS PBC mode, this can
|
||||||
be enabled by either a physical button in the client device or a
|
be enabled by either a physical button in the client device or a
|
||||||
virtual button in the user interface. The PBC operation requires that
|
virtual button in the user interface. The PBC operation requires that
|
||||||
|
|
|
@ -340,7 +340,10 @@ static int wpa_supplicant_ctrl_iface_wps_pin(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
if (os_strcmp(cmd, "any") == 0)
|
if (os_strcmp(cmd, "any") == 0)
|
||||||
_bssid = NULL;
|
_bssid = NULL;
|
||||||
else if (hwaddr_aton(cmd, bssid)) {
|
else if (os_strcmp(cmd, "get") == 0) {
|
||||||
|
ret = wps_generate_pin();
|
||||||
|
goto done;
|
||||||
|
} else if (hwaddr_aton(cmd, bssid)) {
|
||||||
wpa_printf(MSG_DEBUG, "CTRL_IFACE WPS_PIN: invalid BSSID '%s'",
|
wpa_printf(MSG_DEBUG, "CTRL_IFACE WPS_PIN: invalid BSSID '%s'",
|
||||||
cmd);
|
cmd);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -367,6 +370,7 @@ static int wpa_supplicant_ctrl_iface_wps_pin(struct wpa_supplicant *wpa_s,
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
done:
|
||||||
/* Return the generated PIN */
|
/* Return the generated PIN */
|
||||||
ret = os_snprintf(buf, buflen, "%08d", ret);
|
ret = os_snprintf(buf, buflen, "%08d", ret);
|
||||||
if (ret < 0 || (size_t) ret >= buflen)
|
if (ret < 0 || (size_t) ret >= buflen)
|
||||||
|
|
Loading…
Reference in a new issue