network: set handshake SSID based on BSS, not network

This is being added to support OWE transition mode. For these
type of networks the OWE BSS may contain a different SSID than
that of the network, but the WFA spec requires this be hidden
from the user. This means we need to set the handshake SSID based
on the BSS rather than the network object.
This commit is contained in:
James Prestwood 2021-09-15 10:36:16 -07:00 committed by Denis Kenzior
parent 4329b669d0
commit 926dc608af
3 changed files with 4 additions and 5 deletions

View File

@ -465,7 +465,7 @@ static int network_set_handshake_secrets_psk(struct network *network,
return 0;
}
int network_handshake_setup(struct network *network,
int network_handshake_setup(struct network *network, struct scan_bss *bss,
struct handshake_state *hs)
{
struct station *station = network->station;
@ -492,8 +492,7 @@ int network_handshake_setup(struct network *network,
return -ENOTSUP;
}
handshake_state_set_ssid(hs, (void *) network->ssid,
strlen(network->ssid));
handshake_state_set_ssid(hs, bss->ssid, bss->ssid_len);
if (settings && l_settings_get_uint(settings, "EAPoL",
"ProtocolVersion",

View File

@ -50,7 +50,7 @@ bool network_set_psk(struct network *network, const uint8_t *psk);
int network_set_transition_disable(struct network *network,
const uint8_t *td, size_t len);
int network_handshake_setup(struct network *network,
int network_handshake_setup(struct network *network, struct scan_bss *bss,
struct handshake_state *hs);
void network_sync_settings(struct network *network);

View File

@ -935,7 +935,7 @@ static struct handshake_state *station_handshake_setup(struct station *station,
handshake_state_set_authenticator_rsnxe(hs, bss->rsnxe);
if (network_handshake_setup(network, hs) < 0)
if (network_handshake_setup(network, bss, hs) < 0)
goto not_supported;
vendor_ies = network_info_get_extra_ies(info, bss, &iov_elems);