diff options
author | Jouni Malinen <j@w1.fi> | 2012-09-30 12:29:39 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-10-17 05:02:11 -0400 |
commit | e39e5b5e7206767a0f1be0e5cb7acbd0db87ae60 (patch) | |
tree | e2c8641581e3ff336586bd08fbf978da72c9a514 /net/wireless/mlme.c | |
parent | 0f4126e8918985ccc1beb936efd4b9d1e9005a63 (diff) |
cfg80211: Allow user space to specify non-IEs to SAE Authentication
SAE extends Authentication frames with fields that are not information
elements. NL80211_ATTR_IE is not suitable for these, so introduce a new
attribute that can be used to specify the fields needed for SAE in
station mode.
Signed-off-by: Jouni Malinen <j@w1.fi>
[change to verify that SAE is only used with authenticate command]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r-- | net/wireless/mlme.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 8016fee0752b..460d49325741 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -273,7 +273,8 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, | |||
273 | const u8 *bssid, | 273 | const u8 *bssid, |
274 | const u8 *ssid, int ssid_len, | 274 | const u8 *ssid, int ssid_len, |
275 | const u8 *ie, int ie_len, | 275 | const u8 *ie, int ie_len, |
276 | const u8 *key, int key_len, int key_idx) | 276 | const u8 *key, int key_len, int key_idx, |
277 | const u8 *sae_data, int sae_data_len) | ||
277 | { | 278 | { |
278 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 279 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
279 | struct cfg80211_auth_request req; | 280 | struct cfg80211_auth_request req; |
@@ -293,6 +294,8 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, | |||
293 | 294 | ||
294 | req.ie = ie; | 295 | req.ie = ie; |
295 | req.ie_len = ie_len; | 296 | req.ie_len = ie_len; |
297 | req.sae_data = sae_data; | ||
298 | req.sae_data_len = sae_data_len; | ||
296 | req.auth_type = auth_type; | 299 | req.auth_type = auth_type; |
297 | req.bss = cfg80211_get_bss(&rdev->wiphy, chan, bssid, ssid, ssid_len, | 300 | req.bss = cfg80211_get_bss(&rdev->wiphy, chan, bssid, ssid, ssid_len, |
298 | WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); | 301 | WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); |
@@ -319,7 +322,8 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, | |||
319 | enum nl80211_auth_type auth_type, const u8 *bssid, | 322 | enum nl80211_auth_type auth_type, const u8 *bssid, |
320 | const u8 *ssid, int ssid_len, | 323 | const u8 *ssid, int ssid_len, |
321 | const u8 *ie, int ie_len, | 324 | const u8 *ie, int ie_len, |
322 | const u8 *key, int key_len, int key_idx) | 325 | const u8 *key, int key_len, int key_idx, |
326 | const u8 *sae_data, int sae_data_len) | ||
323 | { | 327 | { |
324 | int err; | 328 | int err; |
325 | 329 | ||
@@ -327,7 +331,8 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, | |||
327 | wdev_lock(dev->ieee80211_ptr); | 331 | wdev_lock(dev->ieee80211_ptr); |
328 | err = __cfg80211_mlme_auth(rdev, dev, chan, auth_type, bssid, | 332 | err = __cfg80211_mlme_auth(rdev, dev, chan, auth_type, bssid, |
329 | ssid, ssid_len, ie, ie_len, | 333 | ssid, ssid_len, ie, ie_len, |
330 | key, key_len, key_idx); | 334 | key, key_len, key_idx, |
335 | sae_data, sae_data_len); | ||
331 | wdev_unlock(dev->ieee80211_ptr); | 336 | wdev_unlock(dev->ieee80211_ptr); |
332 | mutex_unlock(&rdev->devlist_mtx); | 337 | mutex_unlock(&rdev->devlist_mtx); |
333 | 338 | ||