WPS patches for hostapd/wpa_supplicant

Jouni Malinen j at w1.fi
Thu Nov 22 22:47:03 EST 2007

I converted the submitted patches from Atheros, Intel, and Metalink into
form that shows what exactly is changed in hostapd and wpa_supplicant to
make it easier to review the different designs. These patches are
available at http://w1.fi/contrib/wps-patches/

The Intel patches (hostapd-0.4.8-intel.patch and
wpa_supplicant-0.4.8-intel.patch) are against the 0.4.8. The
Metalink patches (hostapd-0.4.10-intel-metalink.patch and
wpa_supplicant-0.4.10-intel-metalink.patch) are based on the Intel
version, but are against 0.4.10 (I combined the submitted patches and
re-diffed them against the 0.4.10 releases). Atheros patches
(hostapd-wps-atheros.patch and wpa_supplicant-wps-atheros.patch) are
against the 0.6.x branch in the git tree.

The Intel patches are mainly included for reference. In practice, I'm
planning on only reviewing Metalink and Atheros patches since the
Metalink version includes all the Intel changes and additional
functionality and fixes.

Based on a quick browse through the patches, I would note couple of
differences in the patches. Metalink versions are against an old, stable
branch (0.4.x) while Atheros patches are against the current development
tree (0.6.x). In practice, the changes will need to go to the
development tree, so any changes against 0.4.x will need to be updated
before they can be merged.

As far as the hostapd changes are concerned, both Atheros and Metalink
versions are based on the Intel WSC reference code and both are using an
external program, Intel wsc daemon, to process the EAP-WSC messages.

wpa_supplicant changes are using different approach. Metalink patch is
based on the Intel WSC reference changes and is using the Intel wsc
daemon to process the EAP-WSC messages. Atheros version is adding a new
implementation for EAP-WSC processing for an WPA enrollee and it does
not use the Intel wsc daemon.

Couple of generic comments that apply to all versions:

The coding style will need to be cleaned up to match with the one used
in hostapd/wpa_supplicant for any changes that would be included in
either of these programs. If needed, I will do this when applying
changes to my git tree. This will produce relatively large number of
whitespace changes which should be kept in mind since other patches will
most likely not apply after this type of cleanup.

There were number of #ifdef EAP_WSC/EAP_WPS blocks in generic code
(e.g., eap.c or eapol_sm.c) that changed behavior depending on whether
WPS was included in the build or not. If these changes would cause
different behavior when WPS is disabled at runtime, they will not be
acceptable and will need to be modified to use runtime information
(i.e., whether WPS was enabled or not) to determine what should be done.
In other words, just enabling WPS in the build, but not enabling it in
the runtime configuration should not change behavior.

Jouni Malinen                                            PGP id EFC895FA

More information about the HostAP mailing list