Comments

Currently, the kernel exchanges Open System Auth frames
and wpa_supplicant exchanges EAPOL frames at the same time,
in violation of the 802.11 standard, which specifies that
Open System Authentication must optionally take place
before starting the Four Way Handshake, but not at the
same time.
The kernel takes further steps and will reset a station entry
when it sends an 1/2 open system authentication frame.
Doing this after wpa_supplicant have already exchanged frames
will break the Four Way Handshake, as the other party
is uninformed about our reset.
The solution is to make wpa_supplicant handle auth frames,
and not send EAPOL until either Open System Authentication
has completed, or until wpa_supplicant decides that
it will not do Open System Authentication.
This patch will make wpasupplicant register for auth frames,
handle them using the existing AP event code and will
defer the initialization of the authenticator until we
authenticated the remote station with Open System Authentication
or the remote station sent a Open System Authentication or a EAPOL
to us.
Signed-hostap: Nicolas Cavallari <cavallar@lri.fr>
---
src/drivers/driver_nl80211.c | 9 ++
wpa_supplicant/events.c | 26 +++++-
wpa_supplicant/ibss_rsn.c | 197 +++++++++++++++++++++++++++++++++++++-----
wpa_supplicant/ibss_rsn.h | 14 +++
4 files changed, 224 insertions(+), 22 deletions(-)