1e5b75505Sopenharmony_cihostapd and Wi-Fi Protected Setup (WPS)
2e5b75505Sopenharmony_ci=======================================
3e5b75505Sopenharmony_ci
4e5b75505Sopenharmony_ciThis document describes how the WPS implementation in hostapd can be
5e5b75505Sopenharmony_ciconfigured and how an external component on an AP (e.g., web UI) is
6e5b75505Sopenharmony_ciused to enable enrollment of client devices.
7e5b75505Sopenharmony_ci
8e5b75505Sopenharmony_ci
9e5b75505Sopenharmony_ciIntroduction to WPS
10e5b75505Sopenharmony_ci-------------------
11e5b75505Sopenharmony_ci
12e5b75505Sopenharmony_ciWi-Fi Protected Setup (WPS) is a mechanism for easy configuration of a
13e5b75505Sopenharmony_ciwireless network. It allows automated generation of random keys (WPA
14e5b75505Sopenharmony_cipassphrase/PSK) and configuration of an access point and client
15e5b75505Sopenharmony_cidevices. WPS includes number of methods for setting up connections
16e5b75505Sopenharmony_ciwith PIN method and push-button configuration (PBC) being the most
17e5b75505Sopenharmony_cicommonly deployed options.
18e5b75505Sopenharmony_ci
19e5b75505Sopenharmony_ciWhile WPS can enable more home networks to use encryption in the
20e5b75505Sopenharmony_ciwireless network, it should be noted that the use of the PIN and
21e5b75505Sopenharmony_ciespecially PBC mechanisms for authenticating the initial key setup is
22e5b75505Sopenharmony_cinot very secure. As such, use of WPS may not be suitable for
23e5b75505Sopenharmony_cienvironments that require secure network access without chance for
24e5b75505Sopenharmony_ciallowing outsiders to gain access during the setup phase.
25e5b75505Sopenharmony_ci
26e5b75505Sopenharmony_ciWPS uses following terms to describe the entities participating in the
27e5b75505Sopenharmony_cinetwork setup:
28e5b75505Sopenharmony_ci- access point: the WLAN access point
29e5b75505Sopenharmony_ci- Registrar: a device that control a network and can authorize
30e5b75505Sopenharmony_ci  addition of new devices); this may be either in the AP ("internal
31e5b75505Sopenharmony_ci  Registrar") or in an external device, e.g., a laptop, ("external
32e5b75505Sopenharmony_ci  Registrar")
33e5b75505Sopenharmony_ci- Enrollee: a device that is being authorized to use the network
34e5b75505Sopenharmony_ci
35e5b75505Sopenharmony_ciIt should also be noted that the AP and a client device may change
36e5b75505Sopenharmony_ciroles (i.e., AP acts as an Enrollee and client device as a Registrar)
37e5b75505Sopenharmony_ciwhen WPS is used to configure the access point.
38e5b75505Sopenharmony_ci
39e5b75505Sopenharmony_ci
40e5b75505Sopenharmony_ciMore information about WPS is available from Wi-Fi Alliance:
41e5b75505Sopenharmony_cihttp://www.wi-fi.org/wifi-protected-setup
42e5b75505Sopenharmony_ci
43e5b75505Sopenharmony_ci
44e5b75505Sopenharmony_cihostapd implementation
45e5b75505Sopenharmony_ci----------------------
46e5b75505Sopenharmony_ci
47e5b75505Sopenharmony_cihostapd includes an optional WPS component that can be used as an
48e5b75505Sopenharmony_ciinternal WPS Registrar to manage addition of new WPS enabled clients
49e5b75505Sopenharmony_cito the network. In addition, WPS Enrollee functionality in hostapd can
50e5b75505Sopenharmony_cibe used to allow external WPS Registrars to configure the access
51e5b75505Sopenharmony_cipoint, e.g., for initial network setup. In addition, hostapd can proxy a
52e5b75505Sopenharmony_ciWPS registration between a wireless Enrollee and an external Registrar
53e5b75505Sopenharmony_ci(e.g., Microsoft Vista or Atheros JumpStart) with UPnP.
54e5b75505Sopenharmony_ci
55e5b75505Sopenharmony_ci
56e5b75505Sopenharmony_cihostapd configuration
57e5b75505Sopenharmony_ci---------------------
58e5b75505Sopenharmony_ci
59e5b75505Sopenharmony_ciWPS is an optional component that needs to be enabled in hostapd build
60e5b75505Sopenharmony_ciconfiguration (.config). Here is an example configuration that
61e5b75505Sopenharmony_ciincludes WPS support and uses nl80211 driver interface:
62e5b75505Sopenharmony_ci
63e5b75505Sopenharmony_ciCONFIG_DRIVER_NL80211=y
64e5b75505Sopenharmony_ciCONFIG_WPS=y
65e5b75505Sopenharmony_ciCONFIG_WPS_UPNP=y
66e5b75505Sopenharmony_ci
67e5b75505Sopenharmony_ciFollowing parameter can be used to enable support for NFC config method:
68e5b75505Sopenharmony_ci
69e5b75505Sopenharmony_ciCONFIG_WPS_NFC=y
70e5b75505Sopenharmony_ci
71e5b75505Sopenharmony_ci
72e5b75505Sopenharmony_ciFollowing section shows an example runtime configuration
73e5b75505Sopenharmony_ci(hostapd.conf) that enables WPS:
74e5b75505Sopenharmony_ci
75e5b75505Sopenharmony_ci# Configure the driver and network interface
76e5b75505Sopenharmony_cidriver=nl80211
77e5b75505Sopenharmony_ciinterface=wlan0
78e5b75505Sopenharmony_ci
79e5b75505Sopenharmony_ci# WPA2-Personal configuration for the AP
80e5b75505Sopenharmony_cissid=wps-test
81e5b75505Sopenharmony_ciwpa=2
82e5b75505Sopenharmony_ciwpa_key_mgmt=WPA-PSK
83e5b75505Sopenharmony_ciwpa_pairwise=CCMP
84e5b75505Sopenharmony_ci# Default WPA passphrase for legacy (non-WPS) clients
85e5b75505Sopenharmony_ciwpa_passphrase=12345678
86e5b75505Sopenharmony_ci# Enable random per-device PSK generation for WPS clients
87e5b75505Sopenharmony_ci# Please note that the file has to exists for hostapd to start (i.e., create an
88e5b75505Sopenharmony_ci# empty file as a starting point).
89e5b75505Sopenharmony_ciwpa_psk_file=/etc/hostapd.psk
90e5b75505Sopenharmony_ci
91e5b75505Sopenharmony_ci# Enable control interface for PBC/PIN entry
92e5b75505Sopenharmony_cictrl_interface=/var/run/hostapd
93e5b75505Sopenharmony_ci
94e5b75505Sopenharmony_ci# Enable internal EAP server for EAP-WSC (part of Wi-Fi Protected Setup)
95e5b75505Sopenharmony_cieap_server=1
96e5b75505Sopenharmony_ci
97e5b75505Sopenharmony_ci# WPS configuration (AP configured, do not allow external WPS Registrars)
98e5b75505Sopenharmony_ciwps_state=2
99e5b75505Sopenharmony_ciap_setup_locked=1
100e5b75505Sopenharmony_ci# If UUID is not configured, it will be generated based on local MAC address.
101e5b75505Sopenharmony_ciuuid=87654321-9abc-def0-1234-56789abc0000
102e5b75505Sopenharmony_ciwps_pin_requests=/var/run/hostapd.pin-req
103e5b75505Sopenharmony_cidevice_name=Wireless AP
104e5b75505Sopenharmony_cimanufacturer=Company
105e5b75505Sopenharmony_cimodel_name=WAP
106e5b75505Sopenharmony_cimodel_number=123
107e5b75505Sopenharmony_ciserial_number=12345
108e5b75505Sopenharmony_cidevice_type=6-0050F204-1
109e5b75505Sopenharmony_cios_version=01020300
110e5b75505Sopenharmony_ciconfig_methods=label display push_button keypad
111e5b75505Sopenharmony_ci
112e5b75505Sopenharmony_ci# if external Registrars are allowed, UPnP support could be added:
113e5b75505Sopenharmony_ci#upnp_iface=br0
114e5b75505Sopenharmony_ci#friendly_name=WPS Access Point
115e5b75505Sopenharmony_ci
116e5b75505Sopenharmony_ci
117e5b75505Sopenharmony_ciExternal operations
118e5b75505Sopenharmony_ci-------------------
119e5b75505Sopenharmony_ci
120e5b75505Sopenharmony_ciWPS requires either a device PIN code (usually, 8-digit number) or a
121e5b75505Sopenharmony_cipushbutton event (for PBC) to allow a new WPS Enrollee to join the
122e5b75505Sopenharmony_cinetwork. hostapd uses the control interface as an input channel for
123e5b75505Sopenharmony_cithese events.
124e5b75505Sopenharmony_ci
125e5b75505Sopenharmony_ciThe PIN value used in the commands must be processed by an UI to
126e5b75505Sopenharmony_ciremove non-digit characters and potentially, to verify the checksum
127e5b75505Sopenharmony_cidigit. "hostapd_cli wps_check_pin <PIN>" can be used to do such
128e5b75505Sopenharmony_ciprocessing. It returns FAIL if the PIN is invalid, or FAIL-CHECKSUM if
129e5b75505Sopenharmony_cithe checksum digit is incorrect, or the processed PIN (non-digit
130e5b75505Sopenharmony_cicharacters removed) if the PIN is valid.
131e5b75505Sopenharmony_ci
132e5b75505Sopenharmony_ciWhen a client device (WPS Enrollee) connects to hostapd (WPS
133e5b75505Sopenharmony_ciRegistrar) in order to start PIN mode negotiation for WPS, an
134e5b75505Sopenharmony_ciidentifier (Enrollee UUID) is sent. hostapd will need to be configured
135e5b75505Sopenharmony_ciwith a device password (PIN) for this Enrollee. This is an operation
136e5b75505Sopenharmony_cithat requires user interaction (assuming there are no pre-configured
137e5b75505Sopenharmony_ciPINs on the AP for a set of Enrollee).
138e5b75505Sopenharmony_ci
139e5b75505Sopenharmony_ciThe PIN request with information about the device is appended to the
140e5b75505Sopenharmony_ciwps_pin_requests file (/var/run/hostapd.pin-req in this example). In
141e5b75505Sopenharmony_ciaddition, hostapd control interface event is sent as a notification of
142e5b75505Sopenharmony_cia new device. The AP could use, e.g., a web UI for showing active
143e5b75505Sopenharmony_ciEnrollees to the user and request a PIN for an Enrollee.
144e5b75505Sopenharmony_ci
145e5b75505Sopenharmony_ciThe PIN request file has one line for every Enrollee that connected to
146e5b75505Sopenharmony_cithe AP, but for which there was no PIN. Following information is
147e5b75505Sopenharmony_ciprovided for each Enrollee (separated with tabulators):
148e5b75505Sopenharmony_ci- timestamp (seconds from 1970-01-01)
149e5b75505Sopenharmony_ci- Enrollee UUID
150e5b75505Sopenharmony_ci- MAC address
151e5b75505Sopenharmony_ci- Device name
152e5b75505Sopenharmony_ci- Manufacturer
153e5b75505Sopenharmony_ci- Model Name
154e5b75505Sopenharmony_ci- Model Number
155e5b75505Sopenharmony_ci- Serial Number
156e5b75505Sopenharmony_ci- Device category
157e5b75505Sopenharmony_ci
158e5b75505Sopenharmony_ciExample line in the /var/run/hostapd.pin-req file:
159e5b75505Sopenharmony_ci1200188391	53b63a98-d29e-4457-a2ed-094d7e6a669c	Intel(R) Centrino(R)	Intel Corporation	Intel(R) Centrino(R)	-	-	1-0050F204-1
160e5b75505Sopenharmony_ci
161e5b75505Sopenharmony_ciControl interface data:
162e5b75505Sopenharmony_ciWPS-PIN-NEEDED [UUID-E|MAC Address|Device Name|Manufacturer|Model Name|Model Number|Serial Number|Device Category]
163e5b75505Sopenharmony_ciFor example:
164e5b75505Sopenharmony_ci<2>WPS-PIN-NEEDED [53b63a98-d29e-4457-a2ed-094d7e6a669c|02:12:34:56:78:9a|Device|Manuf|Model|Model Number|Serial Number|1-0050F204-1]
165e5b75505Sopenharmony_ci
166e5b75505Sopenharmony_ciWhen the user enters a PIN for a pending Enrollee, e.g., on the web
167e5b75505Sopenharmony_ciUI), hostapd needs to be notified of the new PIN over the control
168e5b75505Sopenharmony_ciinterface. This can be done either by using the UNIX domain socket
169e5b75505Sopenharmony_ci-based control interface directly (src/common/wpa_ctrl.c provides
170e5b75505Sopenharmony_cihelper functions for using the interface) or by calling hostapd_cli.
171e5b75505Sopenharmony_ci
172e5b75505Sopenharmony_ciExample command to add a PIN (12345670) for an Enrollee:
173e5b75505Sopenharmony_ci
174e5b75505Sopenharmony_cihostapd_cli wps_pin 53b63a98-d29e-4457-a2ed-094d7e6a669c 12345670
175e5b75505Sopenharmony_ci
176e5b75505Sopenharmony_ciIf the UUID-E is not available (e.g., Enrollee waits for the Registrar
177e5b75505Sopenharmony_cito be selected before connecting), wildcard UUID may be used to allow
178e5b75505Sopenharmony_cithe PIN to be used once with any UUID:
179e5b75505Sopenharmony_ci
180e5b75505Sopenharmony_cihostapd_cli wps_pin any 12345670
181e5b75505Sopenharmony_ci
182e5b75505Sopenharmony_ciTo reduce likelihood of PIN being used with other devices or of
183e5b75505Sopenharmony_ciforgetting an active PIN available for potential attackers, expiration
184e5b75505Sopenharmony_citime in seconds can be set for the new PIN (value 0 indicates no
185e5b75505Sopenharmony_ciexpiration):
186e5b75505Sopenharmony_ci
187e5b75505Sopenharmony_cihostapd_cli wps_pin any 12345670 300
188e5b75505Sopenharmony_ci
189e5b75505Sopenharmony_ciIf the MAC address of the enrollee is known, it should be configured
190e5b75505Sopenharmony_cito allow the AP to advertise list of authorized enrollees:
191e5b75505Sopenharmony_ci
192e5b75505Sopenharmony_cihostapd_cli wps_pin 53b63a98-d29e-4457-a2ed-094d7e6a669c \
193e5b75505Sopenharmony_ci	12345670 300 00:11:22:33:44:55
194e5b75505Sopenharmony_ci
195e5b75505Sopenharmony_ci
196e5b75505Sopenharmony_ciAfter this, the Enrollee can connect to the AP again and complete WPS
197e5b75505Sopenharmony_cinegotiation. At that point, a new, random WPA PSK is generated for the
198e5b75505Sopenharmony_ciclient device and the client can then use that key to connect to the
199e5b75505Sopenharmony_ciAP to access the network.
200e5b75505Sopenharmony_ci
201e5b75505Sopenharmony_ci
202e5b75505Sopenharmony_ciIf the AP includes a pushbutton, WPS PBC mode can be used. It is
203e5b75505Sopenharmony_cienabled by pushing a button on both the AP and the client at about the
204e5b75505Sopenharmony_cisame time (2 minute window). hostapd needs to be notified about the AP
205e5b75505Sopenharmony_cibutton pushed event over the control interface, e.g., by calling
206e5b75505Sopenharmony_cihostapd_cli:
207e5b75505Sopenharmony_ci
208e5b75505Sopenharmony_cihostapd_cli wps_pbc
209e5b75505Sopenharmony_ci
210e5b75505Sopenharmony_ciAt this point, the client has two minutes to complete WPS negotiation
211e5b75505Sopenharmony_ciwhich will generate a new WPA PSK in the same way as the PIN method
212e5b75505Sopenharmony_cidescribed above.
213e5b75505Sopenharmony_ci
214e5b75505Sopenharmony_ci
215e5b75505Sopenharmony_ciWhen an external Registrar is used, the AP can act as an Enrollee and
216e5b75505Sopenharmony_ciuse its AP PIN. A static AP PIN (e.g., one one a label in the AP
217e5b75505Sopenharmony_cidevice) can be configured in hostapd.conf (ap_pin parameter). A more
218e5b75505Sopenharmony_cisecure option is to use hostapd_cli wps_ap_pin command to enable the
219e5b75505Sopenharmony_ciAP PIN only based on user action (and even better security by using a
220e5b75505Sopenharmony_cirandom AP PIN for each session, i.e., by using "wps_ap_pin random"
221e5b75505Sopenharmony_cicommand with a timeout value). Following commands are available for
222e5b75505Sopenharmony_cimanaging the dynamic AP PIN operations:
223e5b75505Sopenharmony_ci
224e5b75505Sopenharmony_cihostapd_cli wps_ap_pin disable
225e5b75505Sopenharmony_ci- disable AP PIN (i.e., do not allow external Registrars to use it to
226e5b75505Sopenharmony_ci  learn the current AP settings or to reconfigure the AP)
227e5b75505Sopenharmony_ci
228e5b75505Sopenharmony_cihostapd_cli wps_ap_pin random [timeout]
229e5b75505Sopenharmony_ci- generate a random AP PIN and enable it
230e5b75505Sopenharmony_ci- if the optional timeout parameter is given, the AP PIN will be enabled
231e5b75505Sopenharmony_ci  for the specified number of seconds
232e5b75505Sopenharmony_ci
233e5b75505Sopenharmony_cihostapd_cli wps_ap_pin get
234e5b75505Sopenharmony_ci- fetch the current AP PIN
235e5b75505Sopenharmony_ci
236e5b75505Sopenharmony_cihostapd_cli wps_ap_pin set <PIN> [timeout]
237e5b75505Sopenharmony_ci- set the AP PIN and enable it
238e5b75505Sopenharmony_ci- if the optional timeout parameter is given, the AP PIN will be enabled
239e5b75505Sopenharmony_ci  for the specified number of seconds
240e5b75505Sopenharmony_ci
241e5b75505Sopenharmony_cihostapd_cli get_config
242e5b75505Sopenharmony_ci- display the current configuration
243e5b75505Sopenharmony_ci
244e5b75505Sopenharmony_cihostapd_cli wps_config <new SSID> <auth> <encr> <new key>
245e5b75505Sopenharmony_ciexamples:
246e5b75505Sopenharmony_ci  hostapd_cli wps_config testing WPA2PSK CCMP 12345678
247e5b75505Sopenharmony_ci  hostapd_cli wps_config "no security" OPEN NONE ""
248e5b75505Sopenharmony_ci
249e5b75505Sopenharmony_ci<auth> must be one of the following: OPEN WPAPSK WPA2PSK
250e5b75505Sopenharmony_ci<encr> must be one of the following: NONE WEP TKIP CCMP
251e5b75505Sopenharmony_ci
252e5b75505Sopenharmony_ci
253e5b75505Sopenharmony_ciCredential generation and configuration changes
254e5b75505Sopenharmony_ci-----------------------------------------------
255e5b75505Sopenharmony_ci
256e5b75505Sopenharmony_ciBy default, hostapd generates credentials for Enrollees and processing
257e5b75505Sopenharmony_ciAP configuration updates internally. However, it is possible to
258e5b75505Sopenharmony_cicontrol these operations from external programs, if desired.
259e5b75505Sopenharmony_ci
260e5b75505Sopenharmony_ciThe internal credential generation can be disabled with
261e5b75505Sopenharmony_ciskip_cred_build=1 option in the configuration. extra_cred option will
262e5b75505Sopenharmony_cithen need to be used to provide pre-configured Credential attribute(s)
263e5b75505Sopenharmony_cifor hostapd to use. The exact data from this binary file will be sent,
264e5b75505Sopenharmony_cii.e., it will have to include valid WPS attributes. extra_cred can
265e5b75505Sopenharmony_cialso be used to add additional networks if the Registrar is used to
266e5b75505Sopenharmony_ciconfigure credentials for multiple networks.
267e5b75505Sopenharmony_ci
268e5b75505Sopenharmony_ciProcessing of received configuration updates can be disabled with
269e5b75505Sopenharmony_ciwps_cred_processing=1 option. When this is used, an external program
270e5b75505Sopenharmony_ciis responsible for creating hostapd configuration files and processing
271e5b75505Sopenharmony_ciconfiguration updates based on messages received from hostapd over
272e5b75505Sopenharmony_cicontrol interface. This will also include the initial configuration on
273e5b75505Sopenharmony_cifirst successful registration if the AP is initially set in
274e5b75505Sopenharmony_ciunconfigured state.
275e5b75505Sopenharmony_ci
276e5b75505Sopenharmony_ciFollowing control interface messages are sent out for external programs:
277e5b75505Sopenharmony_ci
278e5b75505Sopenharmony_ciWPS-REG-SUCCESS <Enrollee MAC address <UUID-E>
279e5b75505Sopenharmony_ciFor example:
280e5b75505Sopenharmony_ci<2>WPS-REG-SUCCESS 02:66:a0:ee:17:27 2b7093f1-d6fb-5108-adbb-bea66bb87333
281e5b75505Sopenharmony_ci
282e5b75505Sopenharmony_ciThis can be used to trigger change from unconfigured to configured
283e5b75505Sopenharmony_cistate (random configuration based on the first successful WPS
284e5b75505Sopenharmony_ciregistration). In addition, this can be used to update AP UI about the
285e5b75505Sopenharmony_cistatus of WPS registration progress.
286e5b75505Sopenharmony_ci
287e5b75505Sopenharmony_ci
288e5b75505Sopenharmony_ciWPS-NEW-AP-SETTINGS <hexdump of AP Setup attributes>
289e5b75505Sopenharmony_ciFor example:
290e5b75505Sopenharmony_ci<2>WPS-NEW-AP-SETTINGS 10260001011045000c6a6b6d2d7770732d74657374100300020020100f00020008102700403065346230343536633236366665306433396164313535346131663462663731323433376163666462376633393965353466316631623032306164343438623510200006024231cede15101e000844
291e5b75505Sopenharmony_ci
292e5b75505Sopenharmony_ciThis can be used to update the externally stored AP configuration and
293e5b75505Sopenharmony_cithen update hostapd configuration (followed by restarting of hostapd).
294e5b75505Sopenharmony_ci
295e5b75505Sopenharmony_ci
296e5b75505Sopenharmony_ciWPS with NFC
297e5b75505Sopenharmony_ci------------
298e5b75505Sopenharmony_ci
299e5b75505Sopenharmony_ciWPS can be used with NFC-based configuration method. An NFC tag
300e5b75505Sopenharmony_cicontaining a password token from the Enrollee can be used to
301e5b75505Sopenharmony_ciauthenticate the connection instead of the PIN. In addition, an NFC tag
302e5b75505Sopenharmony_ciwith a configuration token can be used to transfer AP settings without
303e5b75505Sopenharmony_cigoing through the WPS protocol.
304e5b75505Sopenharmony_ci
305e5b75505Sopenharmony_ciWhen the AP acts as an Enrollee, a local NFC tag with a password token
306e5b75505Sopenharmony_cican be used by touching the NFC interface of an external Registrar. The
307e5b75505Sopenharmony_ciwps_nfc_token command is used to manage use of the NFC password token
308e5b75505Sopenharmony_cifrom the AP. "wps_nfc_token enable" enables the use of the AP's NFC
309e5b75505Sopenharmony_cipassword token (in place of AP PIN) and "wps_nfc_token disable" disables
310e5b75505Sopenharmony_cithe NFC password token.
311e5b75505Sopenharmony_ci
312e5b75505Sopenharmony_ciThe NFC password token that is either pre-configured in the
313e5b75505Sopenharmony_ciconfiguration file (wps_nfc_dev_pw_id, wps_nfc_dh_pubkey,
314e5b75505Sopenharmony_ciwps_nfc_dh_privkey, wps_nfc_dev_pw) or generated dynamically with
315e5b75505Sopenharmony_ci"wps_nfc_token <WPS|NDEF>" command. The nfc_pw_token tool from
316e5b75505Sopenharmony_ciwpa_supplicant can be used to generate NFC password tokens during
317e5b75505Sopenharmony_cimanufacturing (each AP needs to have its own random keys).
318e5b75505Sopenharmony_ci
319e5b75505Sopenharmony_ciThe "wps_nfc_config_token <WPS/NDEF>" command can be used to build an
320e5b75505Sopenharmony_ciNFC configuration token. The output value from this command is a hexdump
321e5b75505Sopenharmony_ciof the current AP configuration (WPS parameter requests this to include
322e5b75505Sopenharmony_cionly the WPS attributes; NDEF parameter requests additional NDEF
323e5b75505Sopenharmony_ciencapsulation to be included). This data needs to be written to an NFC
324e5b75505Sopenharmony_citag with an external program. Once written, the NFC configuration token
325e5b75505Sopenharmony_cican be used to touch an NFC interface on a station to provision the
326e5b75505Sopenharmony_cicredentials needed to access the network.
327e5b75505Sopenharmony_ci
328e5b75505Sopenharmony_ciWhen the NFC device on the AP reads an NFC tag with a MIME media type
329e5b75505Sopenharmony_ci"application/vnd.wfa.wsc", the NDEF message payload (with or without
330e5b75505Sopenharmony_ciNDEF encapsulation) can be delivered to hostapd using the
331e5b75505Sopenharmony_cifollowing hostapd_cli command:
332e5b75505Sopenharmony_ci
333e5b75505Sopenharmony_ciwps_nfc_tag_read <hexdump of payload>
334e5b75505Sopenharmony_ci
335e5b75505Sopenharmony_ciIf the NFC tag contains a password token, the token is added to the
336e5b75505Sopenharmony_ciinternal Registrar. This allows station Enrollee from which the password
337e5b75505Sopenharmony_citoken was received to run through WPS protocol to provision the
338e5b75505Sopenharmony_cicredential.
339e5b75505Sopenharmony_ci
340e5b75505Sopenharmony_ci"nfc_get_handover_sel <NDEF> <WPS>" command can be used to build the
341e5b75505Sopenharmony_cicontents of a Handover Select Message for connection handover when this
342e5b75505Sopenharmony_cidoes not depend on the contents of the Handover Request Message. The
343e5b75505Sopenharmony_cifirst argument selects the format of the output data and the second
344e5b75505Sopenharmony_ciargument selects which type of connection handover is requested (WPS =
345e5b75505Sopenharmony_ciWi-Fi handover as specified in WSC 2.0).
346e5b75505Sopenharmony_ci
347e5b75505Sopenharmony_ci"nfc_report_handover <INIT/RESP> WPS <carrier from handover request>
348e5b75505Sopenharmony_ci<carrier from handover select>" is used to report completed NFC
349e5b75505Sopenharmony_ciconnection handover. The first parameter indicates whether the local
350e5b75505Sopenharmony_cidevice initiated or responded to the connection handover and the carrier
351e5b75505Sopenharmony_cirecords are the selected carrier from the handover request and select
352e5b75505Sopenharmony_cimessages as a hexdump.
353