]> git.ipfire.org Git - thirdparty/hostap.git/log
thirdparty/hostap.git
5 years agoDFS: Add support for 80+80 MHz when going through channel switch
Pravas Kumar Panda [Fri, 6 Mar 2020 09:36:42 +0000 (15:06 +0530)] 
DFS: Add support for 80+80 MHz when going through channel switch

After a radar signal is detected, the AP should switch to another
channel, but in the case of 80+80 MHz, channel switch failed because
hostapd did not select the secondary channel in the process. Fix this by
selecting a secondary channel in the case of 80+80 MHz.

Signed-off-by: Xin Wang <xwangw@codeaurora.org>
Signed-off-by: Pravas Kumar Panda <kumarpan@codeaurora.org>
5 years agotests: Automatic channel selection with fallback to 20 MHz
Jouni Malinen [Fri, 6 Mar 2020 18:50:21 +0000 (20:50 +0200)] 
tests: Automatic channel selection with fallback to 20 MHz

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: HT with 20 MHz channel width doing CSA to 40 MHz
Jouni Malinen [Fri, 6 Mar 2020 18:21:27 +0000 (20:21 +0200)] 
tests: HT with 20 MHz channel width doing CSA to 40 MHz

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: Make ap_ht_40mhz_intolerant_ap more robust
Jouni Malinen [Fri, 6 Mar 2020 15:27:40 +0000 (17:27 +0200)] 
tests: Make ap_ht_40mhz_intolerant_ap more robust

Some test case sequences seemed to prevent the station from completing
the first OBSS scan (that scan was aborted) and that resulted in failing
the test case because the AP had not received any report in time. Wait
for scan completion and allow additional scans before timing out to
avoid indicating incorrect AP behavior in cases where the report was not
even received.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoOWE: Fix PTK derivation workaround for interoperability
Hu Wang [Thu, 5 Mar 2020 11:20:38 +0000 (19:20 +0800)] 
OWE: Fix PTK derivation workaround for interoperability

The initial implementation of the PTK derivation workaround for
interoperability with older OWE implementations forced
WPA_KEY_MGMT_PSK_SHA256 to be used for all of PTK derivation. While that
is needed for selecting which hash algorithm to use, this was also
changing the length of the PTK components and by doing so, did not
actually address the backwards compatibility issue.

Fix this by forcing SHA256 as the hash algorithm in PTK derivation
without changing the PTK length calculation for OWE when
owe_ptk_workaround is enabled.

Fixes: 65a44e849af9 ("OWE: PTK derivation workaround in AP mode")
Fixes: 8b138d28264e ("OWE: PTK derivation workaround in STA mode")
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: wpa_supplicant SAVE_CONFIG without config file
Jouni Malinen [Fri, 6 Mar 2020 09:24:28 +0000 (11:24 +0200)] 
tests: wpa_supplicant SAVE_CONFIG without config file

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoFix segmentation fault for NULL confname in SAVE_CONFIG
Zhaoyang Liu [Thu, 5 Mar 2020 03:25:00 +0000 (11:25 +0800)] 
Fix segmentation fault for NULL confname in SAVE_CONFIG

When wpa_supplicant interface is added without a configuration file, the
SAVE_CONFIG command causes a segmentation fault due to referencing a
NULL pointer if the update_config parameter is first explicitly enabled.

Fix the issue by checking the confname for NULL before saving
configuration.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agonl80211: Migrate from set_tx to key_flag API
Alexander Wetzel [Wed, 4 Mar 2020 17:16:56 +0000 (18:16 +0100)] 
nl80211: Migrate from set_tx to key_flag API

Migrate nl80211 driver to key_flag API and add additional sanity checks.

I'm still not sure why we install unicast WEP keys also as default
unicast keys. Based on how I understand how mac80211 handles that it
should be pointless. I just stuck to how we do things prior to the patch
for WEP keys to not break anything. After all other drivers may need it.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agonl80211: Don't ignore when SET_KEY returns ENOENT
Alexander Wetzel [Wed, 4 Mar 2020 17:16:55 +0000 (18:16 +0100)] 
nl80211: Don't ignore when SET_KEY returns ENOENT

Always report an error when NL80211_CMD_SET_KEY can't set a key to
default.

The old ioctl-based design used a single command to add, set, and delete
a key and had to ignore ENOENT for key deletions. It looks like that
special handling was also ported for NL80211_CMD_NEW_KEY and
NL80211_CMD_SET_KEY instead only for NL80211_CMD_DEL_KEY.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agonl80211: Remove not needed netlink key attribute
Alexander Wetzel [Wed, 4 Mar 2020 17:16:54 +0000 (18:16 +0100)] 
nl80211: Remove not needed netlink key attribute

Calling NL80211_CMD_NEW_KEY with NL80211_KEY_DEFAULT_TYPES attributes is
pointless. The information is not expected and therefore the kernel
never forwards it to the drivers. That attribute is used with
NL80211_CMD_SET_KEY.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agonl80211: Fix wrong return code in set_key error path
Alexander Wetzel [Wed, 4 Mar 2020 17:16:53 +0000 (18:16 +0100)] 
nl80211: Fix wrong return code in set_key error path

Allow to abort key installations with different error codes and fix one
misleading return code.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agonl80211: Ignore seq number for key deletion
Alexander Wetzel [Wed, 4 Mar 2020 17:16:52 +0000 (18:16 +0100)] 
nl80211: Ignore seq number for key deletion

Turns out we are sometime providing a seq when deleting the key. Since
that makes no sense on key deletion let's stop forwarding that to the
driver at least.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoValidity checking function for key_flag API
Alexander Wetzel [Wed, 4 Mar 2020 17:16:51 +0000 (18:16 +0100)] 
Validity checking function for key_flag API

Add masks for each key type to define which flags can be combined and
add a helper function to validate key_flag values.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agonl80211: Add a missing key_flag for WEP shared key authentication
Alexander Wetzel [Wed, 4 Mar 2020 17:16:51 +0000 (18:16 +0100)] 
nl80211: Add a missing key_flag for WEP shared key authentication

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoRemove the not yet needed KEY_FLAG_MODIFY
Alexander Wetzel [Wed, 4 Mar 2020 17:16:51 +0000 (18:16 +0100)] 
Remove the not yet needed KEY_FLAG_MODIFY

I decided to drop KEY_FLAG_MODIFY instead of allowing flag combinations not
yet used in the code and will simply recreate it with the Extended Key
ID patches once we get there. For that reason I also did not renumber
the flags.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoFix a wrong key_flag when deleting 802.1X WEP keys
Alexander Wetzel [Wed, 4 Mar 2020 17:16:51 +0000 (18:16 +0100)] 
Fix a wrong key_flag when deleting 802.1X WEP keys

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoAP: Don't try to set NULL WEP default key
Alexander Wetzel [Wed, 4 Mar 2020 17:16:50 +0000 (18:16 +0100)] 
AP: Don't try to set NULL WEP default key

hostapd_broadcast_wep_set() can be called without a WEP key set.
Don't try to install a default key in that case.

This patch is not critical for the new API. With key_flag we just would
report an (ignored) error and do nothing. With the patch we simply do
nothing.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoFix unicast argument for set_wep_key() from EAPOL supplicant
Alexander Wetzel [Wed, 4 Mar 2020 17:16:49 +0000 (18:16 +0100)] 
Fix unicast argument for set_wep_key() from EAPOL supplicant

The unicast parameter in set_wep_key() is only expected to be set to 0
or 1. Without this patch we set unicast to 0x80 instead of 1. Since
unicast is used as boolean that is working fine but violates the
documented API.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agotests: WPS PBC/PIN timeout on AP
Jouni Malinen [Wed, 4 Mar 2020 21:28:45 +0000 (23:28 +0200)] 
tests: WPS PBC/PIN timeout on AP

Verify that AuthorizedMACs advertisement is removed when a PBC session
or a PIN times out.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoWPS: Remove expired PINs on Selected Registrar timeout
Jouni Malinen [Wed, 4 Mar 2020 21:26:02 +0000 (23:26 +0200)] 
WPS: Remove expired PINs on Selected Registrar timeout

This clears the AuthorizedMACs advertisement immediately when the
Selected Registrar timeout is hit and no more active PINs are present.
Previously, the AuthorizedMACs advertisement could remain in place
indefinitely since expired PINs were removed only when actually trying
to find a PIN for a new WPS exchange.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: sigma_dut special case for SAE Password Identifier with PWE looping
Jouni Malinen [Wed, 4 Mar 2020 19:23:43 +0000 (21:23 +0200)] 
tests: sigma_dut special case for SAE Password Identifier with PWE looping

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoDFS: More debug prints on channel selection after radar detection
Jouni Malinen [Tue, 3 Mar 2020 16:45:42 +0000 (18:45 +0200)] 
DFS: More debug prints on channel selection after radar detection

This makes it easier to understand what is happening when a new channel
needs to be selected based on a radar detection event.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: DFS channel bandwidth downgrade from VHT80 to VHT40
Jouni Malinen [Tue, 3 Mar 2020 16:36:10 +0000 (18:36 +0200)] 
tests: DFS channel bandwidth downgrade from VHT80 to VHT40

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agohostapd: Fix to downgrade bandwidth in radar detection
Seevalamuthu Mariappan [Fri, 13 Dec 2019 10:16:41 +0000 (15:46 +0530)] 
hostapd: Fix to downgrade bandwidth in radar detection

Upon radar detection we used to search channels with the same bandwidth.
This way we might not find any other channels. If there are no channels
available with that bandwidth the AP service will be stopped. To avoid
this problem, also search a suitable channel by downgrading the
bandwidth. This scenario is applicable during CAC as well.

Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
5 years agoDFS: Do not process radar event while disabling an interface
Seevalamuthu Mariappan [Fri, 13 Dec 2019 10:16:41 +0000 (15:46 +0530)] 
DFS: Do not process radar event while disabling an interface

In the normal case hostapd_disable_iface() and hostapd_enable_iface()
will be done while switching to another DFS channel upon radar
detection. In certain scenarios radar detected event can come while
hostapd_disable_iface() is in progress and iface->current_mode will be
NULL in that scenario. Previously, we did not check for this scenario
and proceeded with the radar detection logic which can trigger a
segmentation fault. To fix this, avoid proceeding the radar detection
event if iface->current_mode is NULL.

Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
5 years agotests: Specific vs. wildcard SSID in Probe Request frame in BSSID-scan
Jouni Malinen [Mon, 2 Mar 2020 18:44:23 +0000 (20:44 +0200)] 
tests: Specific vs. wildcard SSID in Probe Request frame in BSSID-scan

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoAllow wildcard SSID to be enforced for a specific BSSID scan
Veerendranath Jakkam [Sat, 29 Feb 2020 06:56:36 +0000 (12:26 +0530)] 
Allow wildcard SSID to be enforced for a specific BSSID scan

Specific BSSID scan was replacing wildcard SSID with the known SSID if
any BSS with the specified BSSID is available in the known BSSes list.

Add control interface support to force use of a wildcard SSID in a
specific BSSID scan by user with the new "wildcard_ssid=1" argument to
the SCAN command.

Signed-off-by: Veerendranath Jakkam <vjakkam@codeaurora.org>
5 years agotests: Verify that HE gets fully enabled for mesh
Jouni Malinen [Mon, 2 Mar 2020 17:56:27 +0000 (19:56 +0200)] 
tests: Verify that HE gets fully enabled for mesh

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agomesh: Fix HE enablement on 5 GHz with VHT
Pradeep Kumar Chitrapu [Thu, 5 Dec 2019 02:57:28 +0000 (02:57 +0000)] 
mesh: Fix HE enablement on 5 GHz with VHT

Incorrect he_enabled parameter was being passed to
hostapd_set_freq_params() in mesh which caused HE to be not fully
enabled on the 5 GHz band. Fix this by setting freq->he_enabled instead
of vht_freq.he_enabled so that the hostapd_set_freq_params() uses the
correct he_enabled value (and then ends up copying this to
vht_freq.he_enabled in the success case).

Fixes: 6e711e7ab32 ("mesh: Do not enable HE on 5 GHz without VHT")
Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
5 years agotests: wpa_supplicant config file writing with SAE
Jouni Malinen [Mon, 2 Mar 2020 09:51:38 +0000 (11:51 +0200)] 
tests: wpa_supplicant config file writing with SAE

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoSAE: Allow SAE-only network profile with sae_password to be written
Sachin Shelke [Sun, 1 Mar 2020 23:48:41 +0000 (05:18 +0530)] 
SAE: Allow SAE-only network profile with sae_password to be written

The commit a34ca59e (SAE: Allow SAE password to be configured separately
(STA)) added sae_password configuration option. We should also consider
sae_password in the wpa_config_write() function which stores the valid
network block details to an external database.

Fixes: a34ca59e4db0 ("SAE: Allow SAE password to be configured separately (STA)")
Signed-off-by: Sachin Shelke <sachin.shelke@nxp.com>
Signed-off-by: Cathy Luo <xiaohua.luo@nxp.com>
Signed-off-by: Ganapathi Bhat <ganapathi.bhat@nxp.com>
5 years agoprivsep: Mask out control port capability flag
Jouni Malinen [Sun, 1 Mar 2020 19:31:07 +0000 (21:31 +0200)] 
privsep: Mask out control port capability flag

There is no support for using the control port for sending out EAPOL
frames through privsep yet, so mask out this capability to fall back to
the l2_packet based design.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoprivsep: Add key_flag to set_key()
Alexander Wetzel [Thu, 9 Jan 2020 23:04:59 +0000 (00:04 +0100)] 
privsep: Add key_flag to set_key()

Pass through the new key_flag to wpa_priv.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoSilence a compiler warning in no-WEP and no-EAP builds
Jouni Malinen [Sun, 1 Mar 2020 18:57:14 +0000 (20:57 +0200)] 
Silence a compiler warning in no-WEP and no-EAP builds

wep_keys_set was not used in wpas_start_assoc_cb() without
IEEE8021X_EAPOL, so need to make this local variable conditional on
build options.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: SAE and PSK with multiple passwords/passphrases
Jouni Malinen [Sun, 1 Mar 2020 17:53:16 +0000 (19:53 +0200)] 
tests: SAE and PSK with multiple passwords/passphrases

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agocommon: Add support for element defragmentation
Ilan Peer [Mon, 24 Feb 2020 09:14:33 +0000 (11:14 +0200)] 
common: Add support for element defragmentation

Add support for element defragmentation as defined in IEEE
P802.11-REVmd/D3.0, 10.28.12 (Element defragmentation).

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
5 years agoWPA: Rename FILS wrapped data
Ilan Peer [Mon, 24 Feb 2020 09:14:32 +0000 (11:14 +0200)] 
WPA: Rename FILS wrapped data

IEEE P802.11az/D2.0 renamed the FILS Wrapped Data element,
removing the FILS prefix. Change the code accordingly.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
5 years agocrypto: Add a function to get the ECDH prime length
Ilan Peer [Mon, 24 Feb 2020 09:14:31 +0000 (11:14 +0200)] 
crypto: Add a function to get the ECDH prime length

crypto_ecdh_prime_len() can now be used to fetch the length (in octets)
of the prime used in ECDH.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
5 years agonl80211: Allow TX status for Authentication frames
Ilan Peer [Mon, 24 Feb 2020 09:14:29 +0000 (11:14 +0200)] 
nl80211: Allow TX status for Authentication frames

To support PASN authentication flow, where Authentication frames are
sent by wpa_supplicant using the send_mlme() callback, modify the logic
to also send EVENT_TX_STATUS for Authentication frames.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
5 years agodriver: Extend send_mlme() with wait option
Ilan Peer [Mon, 24 Feb 2020 09:14:27 +0000 (11:14 +0200)] 
driver: Extend send_mlme() with wait option

PASN authentication can be performed while a station interface is
connected to an AP. To allow sending PASN frames while connected, extend
the send_mlme() driver callback to also allow a wait option. Update the
relevant drivers and wpa_supplicant accordingly.

hostapd calls for send_mlme() are left unchanged, since the wait option
is not required there.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
5 years agonl80211: Register for SAE Authentication frames more strictly
Andrei Otcheretianski [Mon, 24 Feb 2020 09:14:26 +0000 (11:14 +0200)] 
nl80211: Register for SAE Authentication frames more strictly

If the driver requires external SAE authentication, it would result in
registration for all Authentication frames, so even non-SAE
Authentication frames might be forwarded to user space instead of being
handled internally. Fix this by using a more strict match pattern,
limiting the registration to the SAE authentication algorithm only.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
5 years agoDBus: Add "sae" to interface key_mgmt capabilities
Brian Norris [Fri, 28 Feb 2020 23:50:47 +0000 (15:50 -0800)] 
DBus: Add "sae" to interface key_mgmt capabilities

This will be present when the driver supports SAE and it's included in
the wpa_supplicant build.

Signed-off-by: Brian Norris <briannorris@chromium.org>
5 years agoMake WEP functionality an optional build parameter
Jouni Malinen [Sat, 29 Feb 2020 14:52:39 +0000 (16:52 +0200)] 
Make WEP functionality an optional build parameter

WEP should not be used for anything anymore. As a step towards removing
it completely, move all WEP related functionality to be within
CONFIG_WEP blocks. This will be included in builds only if CONFIG_WEP=y
is explicitly set in build configuration.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoWPS: Remove static-WEP-only workaround
Jouni Malinen [Sat, 29 Feb 2020 14:56:01 +0000 (16:56 +0200)] 
WPS: Remove static-WEP-only workaround

WEP provisioning was removed from WPS v2, so this workaround
functionality has not been applicable. Remove it completely.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Automatic channel selection with hw_mode=any
Jouni Malinen [Fri, 28 Feb 2020 14:15:24 +0000 (16:15 +0200)] 
tests: Automatic channel selection with hw_mode=any

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoACS: Allow hw_mode=any to be used with internal ACS algorithm
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Allow hw_mode=any to be used with internal ACS algorithm

This was already supported in the offload ACS case and this commit
completes support for this with the internal ACS algorithm.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Determine mode when using hw_mode=any
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Determine mode when using hw_mode=any

Set iface->current_mode and iface->conf->hw_mode when completing ACS
based on the selected channel in the hw_mode=any case.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Extend acs_find_ideal_chan() to support multiple modes
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Extend acs_find_ideal_chan() to support multiple modes

This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Extend acs_request_scan() to support multiple modes
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Extend acs_request_scan() to support multiple modes

Add suitable channel frequencies from all modes into the scan parameters
when a single mode is not specified for ACS. This is preparation for
being able to support hw_mode=any to select the best channel from any
supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Extend interference factor calculation for all modes
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Extend interference factor calculation for all modes

This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Extend acs_find_chan() for all modes
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Extend acs_find_chan() for all modes

This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Extend acs_surveys_are_sufficient() for all modes
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Extend acs_surveys_are_sufficient() for all modes

This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Clear all modes in acs_cleanup()
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Clear all modes in acs_cleanup()

This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Extend hostapd_get_mode_channel() to find from any mode
Neo Jou [Mon, 13 Jan 2020 08:31:28 +0000 (16:31 +0800)] 
ACS: Extend hostapd_get_mode_channel() to find from any mode

This is preparation for being able to support hw_mode=any to select the
best channel from any supported mode.

Signed-off-by: Neo Jou <neojou@gmail.com>
5 years agoACS: Fix spelling of "interference"
Jouni Malinen [Fri, 28 Feb 2020 22:32:13 +0000 (00:32 +0200)] 
ACS: Fix spelling of "interference"

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Initialize wlantest with passphrase for ap_wpa2_ptk_rekey
Jouni Malinen [Fri, 28 Feb 2020 21:19:52 +0000 (23:19 +0200)] 
tests: Initialize wlantest with passphrase for ap_wpa2_ptk_rekey

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agowlantest: Try to decrypt frame with zero TK
Jouni Malinen [Fri, 28 Feb 2020 21:18:59 +0000 (23:18 +0200)] 
wlantest: Try to decrypt frame with zero TK

If none of the known PTKs have a working TK, check whether an encrypted
frame is encrypted with all zeros TK.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoos_unix: Seed random() for os_random()
Jouni Malinen [Fri, 28 Feb 2020 20:54:36 +0000 (22:54 +0200)] 
os_unix: Seed random() for os_random()

While the users of os_random() do not really need strong pseudo random
numebrs, there is no significant harm in seeding random() with data from
os_get_random(), i.e., /dev/urandom, to get different sequence of not so
strong pseudo random values from os_random() for each time the process
is started.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: sigma_dut controlled AP with SAE H2E and anti-clogging token
Jouni Malinen [Fri, 28 Feb 2020 17:53:45 +0000 (19:53 +0200)] 
tests: sigma_dut controlled AP with SAE H2E and anti-clogging token

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: SAE and opportunistic key caching and PMK lifetime
Jouni Malinen [Fri, 28 Feb 2020 14:45:36 +0000 (16:45 +0200)] 
tests: SAE and opportunistic key caching and PMK lifetime

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoSAE: Do not use PMKSA entry after its reauth threshold
Jouni Malinen [Fri, 28 Feb 2020 15:41:07 +0000 (17:41 +0200)] 
SAE: Do not use PMKSA entry after its reauth threshold

Since SAE PMK can be updated only by going through a new SAE
authentication instead of being able to update it during an association
like EAP authentication, do not allow PMKSA entries to be used for
caching after the reauthentication threshold has been reached. This
allows the PMK to be updated without having to force a disassociation
when the PMK expires if the station roams between the reauthentication
threshold and expiration timeout.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoSAE: Do not clone PMKSA entry for OKC after its reauth threshold
Jouni Malinen [Fri, 28 Feb 2020 15:26:36 +0000 (17:26 +0200)] 
SAE: Do not clone PMKSA entry for OKC after its reauth threshold

Since SAE PMK can be updated only by going through a new SAE
authentication instead of being able to update it during an association
like EAP authentication, do not allow PMKSA entries to be used for OKC
after the reauthentication threshold has been reached. This allows the
PMK to be updated without having to force a disassociation when the PMK
expires if the station roams between the reauthentication threshold and
expiration timeout.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoSAE: Fix PMKID derivation for OKC
Jouni Malinen [Fri, 28 Feb 2020 14:37:28 +0000 (16:37 +0200)] 
SAE: Fix PMKID derivation for OKC

SAE authentication derives PMKID differently from the EAP cases. The
value comes from information exchanged during SAE authentication and
does not bind in the MAC addresses of the STAs. As such, the same PMKID
is used with different BSSIDs. Fix both the hostapd and wpa_supplicant
to use the previous PMKID as is for OKC instead of deriving a new PMKID
using an incorrect derivation method when using an SAE AKM.

This fixes use of opportunistic key caching with SAE.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agocommon: Provide the BIT() macro locally
Andrej Shadura [Tue, 25 Feb 2020 16:08:32 +0000 (17:08 +0100)] 
common: Provide the BIT() macro locally

wpa_ctrl.h can be installed separately with libwpa_client, so
utils/common.h won't be available to its users.

Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
5 years agowlantest: Add more notes about decryption into pcapng
Jouni Malinen [Thu, 27 Feb 2020 23:30:00 +0000 (01:30 +0200)] 
wlantest: Add more notes about decryption into pcapng

Note the used TK/GTK and KeyID in frame notes when writing decrypted
frames to a PCAPNG file.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agowlantest: Update BSS IEs based on EAPOL-Key msg 3/4
Jouni Malinen [Thu, 27 Feb 2020 22:51:07 +0000 (00:51 +0200)] 
wlantest: Update BSS IEs based on EAPOL-Key msg 3/4

If no Beacon or Probe Response frame has been seen in the capture, use
the IEs from EAPOL-Key msg 3/4 to set up BSS information.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agowlantest: Get STA IEs based on EAPOL-Key msg 2/4 before PTK derivation
Jouni Malinen [Thu, 27 Feb 2020 22:31:33 +0000 (00:31 +0200)] 
wlantest: Get STA IEs based on EAPOL-Key msg 2/4 before PTK derivation

The previous implementation tried to update STA IE information based on
EAPOL-Key msg 2/4 to be able to handle captures that do not include the
(Re)Association Request frame. This was not sufficient (OSEN was not
included) and was done too late (the parsed information is needed for
PMK-to-PTK derivation).

Move the IE update step to happen before trying to derive the PTK if no
(Re)Association Request frame has been seen.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoAdd attribute for dwell time in QCA vendor scan
Krishna Rao [Fri, 14 Feb 2020 12:25:40 +0000 (17:55 +0530)] 
Add attribute for dwell time in QCA vendor scan

Add an attribute QCA_WLAN_VENDOR_ATTR_SCAN_DWELL_TIME for specifying
dwell time in the QCA vendor scan command. This is a common value which
applies across all frequencies requested in the scan.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests/fuzzing: Update WPA set_key() handler prototype
Jouni Malinen [Tue, 25 Feb 2020 11:13:06 +0000 (13:13 +0200)] 
tests/fuzzing: Update WPA set_key() handler prototype

Update the fizzing test tools to use the new set_key() prototype, i.e.,
add the new key_flag argument, to get rid of compiler warnings.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests/fuzzing: Fix build after CONFIG_IEEE80211N=y removal
Jouni Malinen [Tue, 25 Feb 2020 11:08:00 +0000 (13:08 +0200)] 
tests/fuzzing: Fix build after CONFIG_IEEE80211N=y removal

Commit f3bcd6960346 ("Remove CONFIG_IEEE80211N build option") broke
couple of fuzzing test tools due to missing wpa_scan_results_free(). Fix
that by pulling in driver_common.o.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoIntroduce QCA_WLAN_VENDOR_ATTR_CONFIG_ROAM_REASON
Sunil Dutt [Thu, 20 Feb 2020 09:39:38 +0000 (15:09 +0530)] 
Introduce QCA_WLAN_VENDOR_ATTR_CONFIG_ROAM_REASON

This attribute enables/disables the host driver to send roam reason
information in the Reassociation Request frame to the AP in the same
ESS.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoFix enum qca_wlan_vendor_attr_config value prefix
Sunil Dutt [Thu, 20 Feb 2020 09:39:38 +0000 (15:09 +0530)] 
Fix enum qca_wlan_vendor_attr_config value prefix

Couple of the attributes were defined with inconsistent prefix in the
name (missing "CONFIG_"). Fix these to use the common prefix for all
enum qca_wlan_vendor_attr_config values. Add defined values for the
incorrect names to avoid issues with existing users.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agotests: WPS PBC session overlap detection with single BSSID selected
Jouni Malinen [Mon, 24 Feb 2020 18:04:21 +0000 (20:04 +0200)] 
tests: WPS PBC session overlap detection with single BSSID selected

Update grpform_pbc_overlap not to require PBC session overlap to be
detected since in this sequence a single BSSID is specified and other
APs can be ignored while checking for session overlap. Add other test
cases to explicitly check for the PBC session overlap detection in
non-P2P and P2P cases when the BSSID is specified.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoWPS: Ignore other APs if PBC is used with a specific BSSID
Jouni Malinen [Mon, 24 Feb 2020 17:53:49 +0000 (19:53 +0200)] 
WPS: Ignore other APs if PBC is used with a specific BSSID

While the WSC specification requires the Enrollee to stop PBC
provisioning if the scan sees multiple APs in active PBC mode, this is
problematic due to some deployed devices continuing to advertise PBC
mode for extended duration (or even permanently). Such an environment
will still need to prevent wildcard AP selection with PBC since an
incorrect device could be selected. However, if the Enrollee device has
been explicitly requested to connect to a specific AP based on its
BSSID, the other APs in scan results can be ignored without affecting
which AP would be selected (only the one matching the specified BSSID is
acceptable).

Start filtering scan results for PBC session overlap check based on the
locally specified constraint on the BSSID, if one is set. This allows
PBC to be used with "WPS_PBC <BSSID>" command in environment where
another AP device is claiming to be in active PBC mode while "WPS_PBC"
command will still continue to reject provisioning since the correct AP
cannot be selected.

This will also cover the P2P cases where P2P_CONNECT is used to start or
authorize GO Negotiation and joining-a-GO with a specific P2P GO
Interface Address (BSSID).

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agonl80211: Beacon protection capability flag and default key type
Jouni Malinen [Fri, 21 Feb 2020 16:19:04 +0000 (18:19 +0200)] 
nl80211: Beacon protection capability flag and default key type

Add a new capability flag based on the nl80211 feature advertisement and
start using the new default key type for Beacon protection. This enables
AP mode functionality to allow Beacon protection to be enabled. This is
also enabling the previously added ap_pmf_beacon_protection_* hwsim test
cases.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
5 years agoSync with mac80211-next.git include/uapi/linux/nl80211.h
Jouni Malinen [Mon, 24 Feb 2020 10:20:05 +0000 (12:20 +0200)] 
Sync with mac80211-next.git include/uapi/linux/nl80211.h

This brings in nl80211 definitions as of 2020-02-24.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoFix a type in wpa_supplicant defconfig
Jouni Malinen [Sun, 23 Feb 2020 22:05:20 +0000 (00:05 +0200)] 
Fix a type in wpa_supplicant defconfig

ap_mode=1 explanation in CONFIG_NO_SCAN_PROCESSING=y was really supposed
to be talking about ap_scan=1.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agoSimplify wpa_deny_ptk0_rekey documentation
Alexander Wetzel [Sun, 23 Feb 2020 21:15:52 +0000 (22:15 +0100)] 
Simplify wpa_deny_ptk0_rekey documentation

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agoAdd wpa_deny_ptk0_rekey to AP get_config() output
Alexander Wetzel [Sun, 23 Feb 2020 21:15:52 +0000 (22:15 +0100)] 
Add wpa_deny_ptk0_rekey to AP get_config() output

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agocommon: Add missing driver flag strings
Alexander Wetzel [Sun, 23 Feb 2020 21:15:53 +0000 (22:15 +0100)] 
common: Add missing driver flag strings

Add SAFE_PTK0_REKEYS and some other missing strings.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agotests: Use proper temp files for dynamically created config
Jouni Malinen [Sun, 23 Feb 2020 15:38:23 +0000 (17:38 +0200)] 
tests: Use proper temp files for dynamically created config

Replace the hardcoded /tmp filenames for generated ACL and BSS
configuration files with proper temporary files from tempfile.mkstemp()
to avoid conflicts with existing files or with parallel uses. Remove ACL
files from the local directory at the end of each test case. BSS files
are currently left behind, but can be cleaned up separately if needed
for non-VM testing (VM testing has those on ramdrive so they get dropped
automatically at the end) and for remote devices.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Remove unused BSS configuration files
Jouni Malinen [Sun, 23 Feb 2020 15:00:25 +0000 (17:00 +0200)] 
tests: Remove unused BSS configuration files

These are now generated dynamically.

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Generate BSS config files in ap_bss_add_remove_during_ht_scan
Jouni Malinen [Sun, 23 Feb 2020 15:13:04 +0000 (17:13 +0200)] 
tests: Generate BSS config files in ap_bss_add_remove_during_ht_scan

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Generate BSS configuration files in ap_bss_add_out_of_memory
Jouni Malinen [Sun, 23 Feb 2020 15:05:43 +0000 (17:05 +0200)] 
tests: Generate BSS configuration files in ap_bss_add_out_of_memory

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Generate BSS configuration files in ap_bss_config_file
Jouni Malinen [Sun, 23 Feb 2020 14:58:43 +0000 (16:58 +0200)] 
tests: Generate BSS configuration files in ap_bss_config_file

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: remove: Fix a typo in a comment
Jouni Malinen [Sun, 23 Feb 2020 13:19:59 +0000 (15:19 +0200)] 
tests: remove: Fix a typo in a comment

Signed-off-by: Jouni Malinen <j@w1.fi>
5 years agotests: Extend wpas_ctrl_bssid_filter for remote testing
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:26 +0000 (23:02 +0100)] 
tests: Extend wpas_ctrl_bssid_filter for remote testing

When this test case is ran in remote test environment, there could be
additional APs in scan results after bssid_filter has been disabled.
That breaks the check on SCAN_RESULTS output. Extend this to cover the
remote testing case by using bssid_filter with both known APs listed
instead of full wildcard.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: Fix multi_check() for remote testing
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:25 +0000 (23:02 +0100)] 
tests: Fix multi_check() for remote testing

Don't use hardcoded BSSID; instead use the real BSSID from the device.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remote: Generate and send BSS configuration files
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:24 +0000 (23:02 +0100)] 
tests: remote: Generate and send BSS configuration files

Instead of hardcoded bss-[1-6]*.conf files, generate them using the
correct BSSID for each AP device and send/install them on the remote
client as well if needed.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agohostapd: Replace UDP ctrl_iface global cookies with per-instance ones
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:23 +0000 (23:02 +0100)] 
hostapd: Replace UDP ctrl_iface global cookies with per-instance ones

The cookie values for UDP control interface commands was defined as a
static global array. This did not allow multi-BSS test cases to be
executed with UDP control interface. For example, after
    hapd1 = hostapd.add_bss(apdev[0], ifname1, 'bss-1.conf')
    hapd2 = hostapd.add_bss(apdev[0], ifname2, 'bss-2.conf')

hapd1->ping() did not work.

Move those cookie values to per-instance location in struct
hapd_interfaces and struct hostapd_data to fix this.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: Generate ACL files
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:22 +0000 (23:02 +0100)] 
tests: Generate ACL files

Generate ACL files instead of using files with hardcoded values for the
STA MAC addresses. Send the generated files also to the remote client if
required.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remotehost: Add send_file()
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:21 +0000 (23:02 +0100)] 
tests: remotehost: Add send_file()

Some hostapd test cases use configuration files, e.g., ACLs in BSS
configuration. When executing remote tests (udp), we have to first send
these configuration files to the appropriate remote device. The new
send_file() helper can be used for that.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agoUse IFNAME= prefix for global UDP control interface events
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:20 +0000 (23:02 +0100)] 
Use IFNAME= prefix for global UDP control interface events

There does not seem to be a good reason for using the different IFACE=
prefix on the UDP control interface. This got added when the UDP
interface in wpa_supplicant was extended in commit f0e5d3b5c6c7
("wpa_supplicant: Share attach/detach/send UDP ctrl_iface functions")
and that was then extended to hostapd in commit e9208056856c ("hostapd:
Extend global control interface notifications").

Replace the IFACE= prefix in UDP case with IFNAME= to be consistent with
the UNIX domain socket based control interface.

This fixes a problem when at least one test case fail (hapd_ctrl_sta)
when remote/udp used. This also fixes test_connectivity().

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remote: Handle different ifconfig output formats
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:19 +0000 (23:02 +0100)] 
tests: remote: Handle different ifconfig output formats

We could have different ifconfig output formats on the remote devices,
so make the parser more flexible to handle such cases.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remote: Allow hwsim test cases with more than two arguments
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:18 +0000 (23:02 +0100)] 
tests: remote: Allow hwsim test cases with more than two arguments

This allows more test cases to be run in remote setup. Previously, we
used to block all test cases that required more than two arguments
(i.e., that needed the params argument).

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remote: Show dev/apdev for hwsim
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:17 +0000 (23:02 +0100)] 
tests: remote: Show dev/apdev for hwsim

In case the hwsim wrapper is used in remote tests, show also which
device will be used as
apdev - hostapd
dev - wpa_supplicant

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remote: Kill correct hostapd/wpa_supplicant process
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:16 +0000 (23:02 +0100)] 
tests: remote: Kill correct hostapd/wpa_supplicant process

Kill hostapd and wpa_supplicant based on the configuration parameters.
Previously, we could have killed wrong processes.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agotests: remote: Switch to python3
Janusz Dziedzic [Sun, 12 Jan 2020 22:02:15 +0000 (23:02 +0100)] 
tests: remote: Switch to python3

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
5 years agoIBSS RSN: Coding style cleanup
Alexander Wetzel [Fri, 10 Jan 2020 22:19:10 +0000 (23:19 +0100)] 
IBSS RSN: Coding style cleanup

Use consistent style for pointers.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>
5 years agotests: Allow PTK0 rekey for tests
Alexander Wetzel [Fri, 10 Jan 2020 22:19:10 +0000 (23:19 +0100)] 
tests: Allow PTK0 rekey for tests

Verify PTK0 rekey blocking is working as intended.

Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de>