aboutsummaryrefslogtreecommitdiffstats
path: root/src/wps
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2015-04-28 10:34:29 -0700
committerDmitry Shmidt <dimitrysh@google.com>2015-04-28 10:34:29 -0700
commit1d755d025b206e22b06aeb322e25a79f98ca7777 (patch)
tree64b3363a5e8e9fa8ee1f52b868300030584cc109 /src/wps
parent1eb02edb319d462031f0c2f1f3548498558e95a5 (diff)
downloadandroid_external_wpa_supplicant_8-1d755d025b206e22b06aeb322e25a79f98ca7777.tar.gz
android_external_wpa_supplicant_8-1d755d025b206e22b06aeb322e25a79f98ca7777.tar.bz2
android_external_wpa_supplicant_8-1d755d025b206e22b06aeb322e25a79f98ca7777.zip
Cumulative patch from commit 01a025937c67f0eca6021d94b8ec3b144f8b1730
01a0259 WPS: Add support for 60 GHz band 0ef1e29 WPS: Fix shorter authentication timeout during no-SelReg iteration 3465176 nl80211: Verify that cipher suite conversion succeeds a250722 Try to set PMK only with key mgmt offload support in the driver 4a7ce98 Make IPv6 NA multicast-to-unicast conversion configurable 9f390f4 Interworking: Fix network selection warning without SIM/USIM support a0ad9e8 Remove WPA per-VLAN groups when no more stations remain 87b5b53 Make VLAN ID available in STA info over control interface 5678a2d P2P: Allow wpa_supplicant to start if social channels are not supported 209214b vlan: Move CONFIG_FULL_DYNAMIC_VLAN includes to proper places a6da824 Do not use C++ reserved words as variable names eaa3728 wpa_gui: Themed icon loader 9a3cb41 Fix wpa_priv (CONFIG_PRIVSEP=y) build 8b423ed Declare all read only data structures as const fd4fb28 OpenSSL: Try to ensure we don't throw away the PIN unnecessarily fabc6dd mesh: Retransmit the last Commit Message in the Committed state 068669f vlan: Verify RADIUS returned VLAN-ID and dynamic_vlan=required 5add410 WPS: Use shorter authentication timeout during no-SelReg iteration e7d2034 WPS: Enforce five second minimum time before AP iteration bd143cc Remove trailing whitespace from Makefile 74802c0 P2P: Do not create a P2P Device interface if P2P is disabled 579674e Document p2p_disabled option in wpa_supplicant.conf 8ea8a89 nl80211: Extend unique MAC address assignment for station iftype Change-Id: I8bc8a63f37c0892b83376b9d5a5859827ae50554 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'src/wps')
-rw-r--r--src/wps/ndef.c6
-rw-r--r--src/wps/wps.h2
-rw-r--r--src/wps/wps_common.c2
-rw-r--r--src/wps/wps_defs.h1
-rw-r--r--src/wps/wps_module_tests.c4
-rw-r--r--src/wps/wps_registrar.c9
-rw-r--r--src/wps/wps_validate.c2
7 files changed, 18 insertions, 8 deletions
diff --git a/src/wps/ndef.c b/src/wps/ndef.c
index d45dfc8e..8d1ce1ea 100644
--- a/src/wps/ndef.c
+++ b/src/wps/ndef.c
@@ -29,8 +29,8 @@ struct ndef_record {
u32 total_length;
};
-static char wifi_handover_type[] = "application/vnd.wfa.wsc";
-static char p2p_handover_type[] = "application/vnd.wfa.p2p";
+static const char wifi_handover_type[] = "application/vnd.wfa.wsc";
+static const char p2p_handover_type[] = "application/vnd.wfa.p2p";
static int ndef_parse_record(const u8 *data, u32 size,
struct ndef_record *record)
@@ -97,7 +97,7 @@ static struct wpabuf * ndef_parse_records(const struct wpabuf *buf,
}
-static struct wpabuf * ndef_build_record(u8 flags, void *type,
+static struct wpabuf * ndef_build_record(u8 flags, const void *type,
u8 type_length, void *id,
u8 id_length,
const struct wpabuf *payload)
diff --git a/src/wps/wps.h b/src/wps/wps.h
index c88aaa45..2c91d167 100644
--- a/src/wps/wps.h
+++ b/src/wps/wps.h
@@ -79,7 +79,7 @@ struct wps_credential {
* @sec_dev_type: Array of secondary device types
* @num_sec_dev_type: Number of secondary device types
* @os_version: OS Version
- * @rf_bands: RF bands (WPS_RF_24GHZ, WPS_RF_50GHZ flags)
+ * @rf_bands: RF bands (WPS_RF_24GHZ, WPS_RF_50GHZ, WPS_RF_60GHZ flags)
* @p2p: Whether the device is a P2P device
*/
struct wps_device_data {
diff --git a/src/wps/wps_common.c b/src/wps/wps_common.c
index c1ede6a9..16d466e0 100644
--- a/src/wps/wps_common.c
+++ b/src/wps/wps_common.c
@@ -764,6 +764,8 @@ static int wps_build_ap_freq(struct wpabuf *msg, int freq)
rf_band = WPS_RF_24GHZ;
else if (mode == HOSTAPD_MODE_IEEE80211A)
rf_band = WPS_RF_50GHZ;
+ else if (mode == HOSTAPD_MODE_IEEE80211AD)
+ rf_band = WPS_RF_60GHZ;
else
return 0; /* Unknown band */
ap_channel = channel;
diff --git a/src/wps/wps_defs.h b/src/wps/wps_defs.h
index 43341559..a23b979d 100644
--- a/src/wps/wps_defs.h
+++ b/src/wps/wps_defs.h
@@ -237,6 +237,7 @@ enum wps_error_indication {
/* RF Bands */
#define WPS_RF_24GHZ 0x01
#define WPS_RF_50GHZ 0x02
+#define WPS_RF_60GHZ 0x04
/* Config Methods */
#define WPS_CONFIG_USBA 0x0001
diff --git a/src/wps/wps_module_tests.c b/src/wps/wps_module_tests.c
index 6800e86d..35063076 100644
--- a/src/wps/wps_module_tests.c
+++ b/src/wps/wps_module_tests.c
@@ -17,7 +17,7 @@ struct wps_attr_parse_test {
int extra;
};
-struct wps_attr_parse_test wps_attr_parse_test_cases[] = {
+const struct wps_attr_parse_test wps_attr_parse_test_cases[] = {
/* Empty message */
{ "", 0, 0 },
/* Truncated attribute header */
@@ -271,7 +271,7 @@ static int wps_attr_parse_tests(void)
for (i = 0; i < ARRAY_SIZE(wps_attr_parse_test_cases); i++) {
struct wpabuf *buf;
size_t len;
- struct wps_attr_parse_test *test =
+ const struct wps_attr_parse_test *test =
&wps_attr_parse_test_cases[i];
len = os_strlen(test->data) / 2;
diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c
index 48b7e128..8bcf2b34 100644
--- a/src/wps/wps_registrar.c
+++ b/src/wps/wps_registrar.c
@@ -3226,8 +3226,13 @@ static enum wps_process_res wps_process_wsc_done(struct wps_data *wps,
os_memset(&cred, 0, sizeof(cred));
os_memcpy(cred.ssid, wps->wps->ssid, wps->wps->ssid_len);
cred.ssid_len = wps->wps->ssid_len;
- cred.auth_type = WPS_AUTH_WPAPSK | WPS_AUTH_WPA2PSK;
- cred.encr_type = WPS_ENCR_TKIP | WPS_ENCR_AES;
+ if (wps->wps->rf_band_cb(wps->wps->cb_ctx) == WPS_RF_60GHZ) {
+ cred.auth_type = WPS_AUTH_WPA2PSK;
+ cred.encr_type = WPS_ENCR_AES;
+ } else {
+ cred.auth_type = WPS_AUTH_WPAPSK | WPS_AUTH_WPA2PSK;
+ cred.encr_type = WPS_ENCR_TKIP | WPS_ENCR_AES;
+ }
os_memcpy(cred.key, wps->new_psk, wps->new_psk_len);
cred.key_len = wps->new_psk_len;
diff --git a/src/wps/wps_validate.c b/src/wps/wps_validate.c
index 1c6a14bc..267b565e 100644
--- a/src/wps/wps_validate.c
+++ b/src/wps/wps_validate.c
@@ -224,6 +224,8 @@ static int wps_validate_rf_bands(const u8 *rf_bands, int mandatory)
return 0;
}
if (*rf_bands != WPS_RF_24GHZ && *rf_bands != WPS_RF_50GHZ &&
+ *rf_bands != WPS_RF_60GHZ &&
+ *rf_bands != (WPS_RF_24GHZ | WPS_RF_50GHZ | WPS_RF_60GHZ) &&
*rf_bands != (WPS_RF_24GHZ | WPS_RF_50GHZ)) {
wpa_printf(MSG_INFO, "WPS-STRICT: Invalid Rf Bands "
"attribute value 0x%x", *rf_bands);