]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/README-DPP
tests: DPP configuration saving
[thirdparty/hostap.git] / wpa_supplicant / README-DPP
CommitLineData
ee98dd63
DRC
1Device Provisioning Protocol (DPP)
2==================================
3
4This document describes how the Device Provisioning Protocol (DPP)
5implementation in wpa_supplicant and hostapd can be configured and how
6the STA device and AP can be configured to connect each other using DPP
7Connector mechanism.
8
9Introduction to DPP
10-------------------
11
12Device provisioning Protocol allows enrolling of interface-less devices
13in a secure Wi-Fi network using many methods like QR code based
14authentication( detailed below ), PKEX based authentication etc. In DPP
15a Configurator is used to provide network credentials to the devices.
16The three phases of DPP connection are authentication, configuration and
17network introduction.
18
19Build config setup
20------------------
21
22The following changes must go in the config file used to compile hostapd
23and wpa_supplicant.
24
25wpa_supplicant build config
26---------------------------
27
28Enable DPP and protected management frame in wpa_supplicant build config
29file
30
ee98dd63
DRC
31CONFIG_DPP=y
32
33hostapd build config
34--------------------
35
36Enable DPP and protected management frame in hostapd build config file
37
ee98dd63
DRC
38CONFIG_DPP=y
39
40Configurator build config
41-------------------------
42
43Any STA or AP device can act as a Configurator. Enable DPP and protected
44managment frames in build config. For an AP to act as Configurator,
45Interworking needs to be enabled. For wpa_supplicant it is not required.
46
47CONFIG_INTERWORKING=y
48
49
50Sample supplicant config file before provisioning
51-------------------------------------------------
52
53ctrl_interface=DIR=/var/run/wpa_supplicant
54ctrl_interface_group=0
55update_config=1
56pmf=2
57dpp_config_processing=2
58
59Sample hostapd config file before provisioning
60----------------------------------------------
61
62interface=wlan0
63driver=nl80211
64ctrl_interface=/var/run/hostapd
65ssid=test
66channel=1
67wpa=2
68wpa_key_mgmt=DPP
69ieee80211w=1
70wpa_pairwise=CCMP
71rsn_pairwise=CCMP
72
73
74Pre-requisites
75--------------
76
77It is assumed that an AP and client station are up by running hostapd
78and wpa_supplicant using respective config files.
79
80
81Creating Configurator
82---------------------
83
84Add a Configurator over the control interface (wpa_cli/hostapd_cli)
85
86> dpp_configurator_add
87(returns id)
88
89To get key of Configurator
90> dpp_configurator_get_key <id>
91
92
93How to configure an enrollee using Configurator
94-----------------------------------------------
95
96On enrollee side:
97
98Generate QR code for the device. Store the qr code id returned by the
99command.
100
30bbff14 101> dpp_bootstrap_gen type=qrcode mac=<mac-address-of-device> chan=<operating-class/operating-channel> key=<key of the device>
ee98dd63
DRC
102(returns bootstrapping info id)
103
104Get QR Code of device using the bootstrap info id.
105> dpp_bootstrap_get_uri <bootstrap-id>
106
107Make device listen to DPP request (The central frequency of channel 1 is
1082412) in case if enrollee is a client device.
109
110> dpp_listen <frequency>
111
112On Configurator side:
113
114Enter the QR Code in the Configurator.
115> dpp_qr_code "<QR-Code-read-from-enrollee>"
116
117On successfully adding QR Code, a bootstrapping info id is returned.
118
119Send provisioning request to enrollee. (conf is ap-dpp if enrollee is an
120AP. conf is sta-dpp if enrollee is a client)
121> dpp_auth_init peer=<qr-code-id> conf=<ap-dpp|sta-dpp> configurator=<configurator-id>
122
123The DPP values will be printed in the console. Save this values into the
124config file. If the enrollee is an AP, we need to manually write these
125values to the hostapd config file. If the enrollee is a client device,
126these details can be automatically saved to config file using the
127following command.
128
129> save_config
130
131To set values in runtime for AP enrollees
132
133> set dpp_connector <Connector-value-printed-on-console>
134> set dpp_csign <csign-value-on-console>
135> set dpp_netaccesskey <netaccess-value-on-console>
136
137To set values in runtime for client enrollees, set dpp_config_processing
138to 2 in wpa_supplicant conf file.
139
140Once the values are set in run-time (if not set in run-time, but saved
141in config files, they are taken up in next restart), the client device
142will automatically connect to the already provisioned AP and connection
143will be established.
144
145
146Self-configuring a device
147-------------------------
148
149It is possible for a device to configure itself if it is the
150Configurator for the network.
151
152Create a Configurator in the device and use the dpp_configurator_sign
153command to get DPP credentials.
154
155> dpp_configurator_add
156(returns configurator id)
157> dpp_configurator_sign conf=<ap-dpp|sta-dpp> configurator=<configurator-id>
158
159
160Sample AP configuration files after provisioning
161------------------------------------------------
162
163interface=wlan0
164driver=nl80211
165ctrl_interface=/var/run/hostapd
166ssid=test
167channel=1
168wpa=2
169wpa_key_mgmt=DPP
170ieee80211w=1
171wpa_pairwise=CCMP
172rsn_pairwise=CCMP
173dpp_connector=<Connector value provided by Configurator>
174dpp_csign=<C-Sign-Key value provided by Configurator>
175dpp_netaccesskey=<Net access key provided by Configurator>
176
177
178Sample station configuration file after provisioning
179----------------------------------------------------
180
181ctrl_interface=DIR=/var/run/wpa_supplicant
182ctrl_interface_group=0
183update_config=1
184pmf=2
185dpp_config_processing=2
186network={
187 ssid="test"
188 key_mgmt=DPP
189 ieee80211w=2
190 dpp_connector="<Connector value provided by Configurator>"
191 dpp_netaccesskey=<Net access key provided by Configurator>
192 dpp_csign=<C-sign-key value provided by Configurator>
193}