History

nl80211: support 4-way handshake offloading for WPA/WPA2-PSK in AP mode

Let drivers advertise support for AP-mode WPA/WPA2-PSK 4-way handshake offloading with a new NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK flag. Extend use of NL80211_ATTR_PMK attribute indicating it might be passed as part of NL80211_CMD_START_AP command, and contain the PSK (which is the PMK, hence the name). The driver is assumed to handle the 4-way handshake by itself in this case, instead of relying on userspace.

Chung-Hsien Hsu committed 6 years ago

Commit f9662271 parent 75e6b592 files · +31 −14Browse files

Unified · Split

2 files
  1. include/uapi/linux/nl80211.h +28 −13
  2. net/wireless/nl80211.c +3 −1
include/uapi/linux/nl80211.h+28−13
@@ -183,18 +183,27 @@ · 182 unmodified lines
183 *183 *
184 * By setting @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK flag drivers184 * By setting @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK flag drivers
185 * can indicate they support offloading EAPOL handshakes for WPA/WPA2185 * can indicate they support offloading EAPOL handshakes for WPA/WPA2
186 * preshared key authentication. In %NL80211_CMD_CONNECT the preshared186 * preshared key authentication in station mode. In %NL80211_CMD_CONNECT
187 * key should be specified using %NL80211_ATTR_PMK. Drivers supporting187 * the preshared key should be specified using %NL80211_ATTR_PMK. Drivers
188 * this offload may reject the %NL80211_CMD_CONNECT when no preshared188 * supporting this offload may reject the %NL80211_CMD_CONNECT when no
189 * key material is provided, for example when that driver does not189 * preshared key material is provided, for example when that driver does
190 * support setting the temporal keys through %CMD_NEW_KEY.190 * not support setting the temporal keys through %NL80211_CMD_NEW_KEY.
191 *191 *
192 * Similarly @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X flag can be192 * Similarly @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X flag can be
193 * set by drivers indicating offload support of the PTK/GTK EAPOL193 * set by drivers indicating offload support of the PTK/GTK EAPOL
194 * handshakes during 802.1X authentication. In order to use the offload194 * handshakes during 802.1X authentication in station mode. In order to
195 * the %NL80211_CMD_CONNECT should have %NL80211_ATTR_WANT_1X_4WAY_HS195 * use the offload the %NL80211_CMD_CONNECT should have
196 * attribute flag. Drivers supporting this offload may reject the196 * %NL80211_ATTR_WANT_1X_4WAY_HS attribute flag. Drivers supporting this
197 * %NL80211_CMD_CONNECT when the attribute flag is not present.197 * offload may reject the %NL80211_CMD_CONNECT when the attribute flag is
198 * not present.
199 *
200 * By setting @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK flag drivers
201 * can indicate they support offloading EAPOL handshakes for WPA/WPA2
202 * preshared key authentication in AP mode. In %NL80211_CMD_START_AP
203 * the preshared key should be specified using %NL80211_ATTR_PMK. Drivers
204 * supporting this offload may reject the %NL80211_CMD_START_AP when no
205 * preshared key material is provided, for example when that driver does
206 * not support setting the temporal keys through %NL80211_CMD_NEW_KEY.
198 *207 *
199 * For 802.1X the PMK or PMK-R0 are set by providing %NL80211_ATTR_PMK208 * For 802.1X the PMK or PMK-R0 are set by providing %NL80211_ATTR_PMK
200 * using %NL80211_CMD_SET_PMK. For offloaded FT support also209 * using %NL80211_CMD_SET_PMK. For offloaded FT support also
@@ -2362,10 +2371,11 @@ enum nl80211_commands { · 2161 unmodified lines
2362 *2371 *
2363 * @NL80211_ATTR_PMK: attribute for passing PMK key material. Used with2372 * @NL80211_ATTR_PMK: attribute for passing PMK key material. Used with
2364 * %NL80211_CMD_SET_PMKSA for the PMKSA identified by %NL80211_ATTR_PMKID.2373 * %NL80211_CMD_SET_PMKSA for the PMKSA identified by %NL80211_ATTR_PMKID.
2365 * For %NL80211_CMD_CONNECT it is used to provide PSK for offloading 4-way2374 * For %NL80211_CMD_CONNECT and %NL80211_CMD_START_AP it is used to provide
2366 * handshake for WPA/WPA2-PSK networks. For 802.1X authentication it is2375 * PSK for offloading 4-way handshake for WPA/WPA2-PSK networks. For 802.1X
2367 * used with %NL80211_CMD_SET_PMK. For offloaded FT support this attribute2376 * authentication it is used with %NL80211_CMD_SET_PMK. For offloaded FT
2368 * specifies the PMK-R0 if NL80211_ATTR_PMKR0_NAME is included as well.2377 * support this attribute specifies the PMK-R0 if NL80211_ATTR_PMKR0_NAME
2378 * is included as well.
2369 *2379 *
2370 * @NL80211_ATTR_SCHED_SCAN_MULTI: flag attribute which user-space shall use to2380 * @NL80211_ATTR_SCHED_SCAN_MULTI: flag attribute which user-space shall use to
2371 * indicate that it supports multiple active scheduled scan requests.2381 * indicate that it supports multiple active scheduled scan requests.
@@ -5807,6 +5817,10 @@ enum nl80211_feature_flags { · 3435 unmodified lines
5807 * @NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION: Driver supports Operating5817 * @NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION: Driver supports Operating
5808 * Channel Validation (OCV) when using driver's SME for RSNA handshakes.5818 * Channel Validation (OCV) when using driver's SME for RSNA handshakes.
5809 *5819 *
5820 * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK: Device wants to do 4-way
5821 * handshake with PSK in AP mode (PSK is passed as part of the start AP
5822 * command).
5823 *
5810 * @NUM_NL80211_EXT_FEATURES: number of extended features.5824 * @NUM_NL80211_EXT_FEATURES: number of extended features.
5811 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.5825 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
5812 */5826 */
@@ -5863,6 +5877,7 @@ enum nl80211_ext_feature_index { · 50 unmodified lines
5863 NL80211_EXT_FEATURE_SCAN_FREQ_KHZ,5877 NL80211_EXT_FEATURE_SCAN_FREQ_KHZ,
5864 NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS,5878 NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS,
5865 NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION,5879 NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION,
5880 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK,
5866 5881
5867 /* add new features before the definition below */5882 /* add new features before the definition below */
5868 NUM_NL80211_EXT_FEATURES,5883 NUM_NL80211_EXT_FEATURES,
net/wireless/nl80211.c+3−1
@@ -9442,7 +9442,9 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev, · 9441 unmodified lines
9442 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN)9442 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN)
9443 return -EINVAL;9443 return -EINVAL;
9444 if (!wiphy_ext_feature_isset(&rdev->wiphy,9444 if (!wiphy_ext_feature_isset(&rdev->wiphy,
9445 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK))9445 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK) &&
9446 !wiphy_ext_feature_isset(&rdev->wiphy,
9447 NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK))
9446 return -EINVAL;9448 return -EINVAL;
9447 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]);9449 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]);
9448 }9450 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t