]> git.ipfire.org Git - thirdparty/hostap.git/blame - wpa_supplicant/README-DPP
Fix the dpp_configurator_sign example command
[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)
6c2f70cc
JM
121> dpp_auth_init peer=<qr-code-id> conf=<ap-dpp|sta-dpp> ssid=<SSID hexdump> configurator=<configurator-id>
122or for legacy (PSK/SAE) provisioning for a station Enrollee:
123> dpp_auth_init peer=<qr-code-id> conf=sta-psk ssid=<SSID hexdump> pass=<passphrase hexdump>
ee98dd63
DRC
124
125The DPP values will be printed in the console. Save this values into the
126config file. If the enrollee is an AP, we need to manually write these
127values to the hostapd config file. If the enrollee is a client device,
128these details can be automatically saved to config file using the
129following command.
130
131> save_config
132
133To set values in runtime for AP enrollees
134
135> set dpp_connector <Connector-value-printed-on-console>
136> set dpp_csign <csign-value-on-console>
137> set dpp_netaccesskey <netaccess-value-on-console>
138
139To set values in runtime for client enrollees, set dpp_config_processing
140to 2 in wpa_supplicant conf file.
141
142Once the values are set in run-time (if not set in run-time, but saved
143in config files, they are taken up in next restart), the client device
144will automatically connect to the already provisioned AP and connection
145will be established.
146
147
148Self-configuring a device
149-------------------------
150
151It is possible for a device to configure itself if it is the
152Configurator for the network.
153
154Create a Configurator in the device and use the dpp_configurator_sign
155command to get DPP credentials.
156
157> dpp_configurator_add
158(returns configurator id)
66e20bb1 159> dpp_configurator_sign conf=<ap-dpp|sta-dpp> configurator=<configurator-id> ssid=<SSID hexdump>
ee98dd63
DRC
160
161
162Sample AP configuration files after provisioning
163------------------------------------------------
164
165interface=wlan0
166driver=nl80211
167ctrl_interface=/var/run/hostapd
168ssid=test
169channel=1
170wpa=2
171wpa_key_mgmt=DPP
172ieee80211w=1
173wpa_pairwise=CCMP
174rsn_pairwise=CCMP
175dpp_connector=<Connector value provided by Configurator>
176dpp_csign=<C-Sign-Key value provided by Configurator>
177dpp_netaccesskey=<Net access key provided by Configurator>
178
179
180Sample station configuration file after provisioning
181----------------------------------------------------
182
183ctrl_interface=DIR=/var/run/wpa_supplicant
184ctrl_interface_group=0
185update_config=1
186pmf=2
187dpp_config_processing=2
188network={
189 ssid="test"
190 key_mgmt=DPP
191 ieee80211w=2
192 dpp_connector="<Connector value provided by Configurator>"
193 dpp_netaccesskey=<Net access key provided by Configurator>
194 dpp_csign=<C-sign-key value provided by Configurator>
195}