diff options
author | Anirban Sirkhell <anirban@qca.qualcomm.com> | 2012-04-04 00:08:57 +0300 |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2012-04-04 00:08:57 +0300 |
commit | 71dd3b78f90a5ca4d5f56966df024c676af177be (patch) | |
tree | 2fc4104d83c6ce9f428633dfaa515dc1d88548a7 /src/wps | |
parent | 2e9f078c8dde5abfe7025513deb417c679502e99 (diff) | |
download | external_wpa_supplicant_8_ti-71dd3b78f90a5ca4d5f56966df024c676af177be.zip external_wpa_supplicant_8_ti-71dd3b78f90a5ca4d5f56966df024c676af177be.tar.gz external_wpa_supplicant_8_ti-71dd3b78f90a5ca4d5f56966df024c676af177be.tar.bz2 |
WPS: Allow vendor specific attribute to be added into M1
wps_vendor_ext_m1 configuration parameter can now be used to add a
vendor specific attribute into the WPS M1 message, e.g., for
Windows Vertical Pairing.
Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'src/wps')
-rw-r--r-- | src/wps/wps.h | 1 | ||||
-rw-r--r-- | src/wps/wps_dev_attr.c | 14 | ||||
-rw-r--r-- | src/wps/wps_dev_attr.h | 1 | ||||
-rw-r--r-- | src/wps/wps_enrollee.c | 3 |
4 files changed, 18 insertions, 1 deletions
diff --git a/src/wps/wps.h b/src/wps/wps.h index 435f36a..10a45f2 100644 --- a/src/wps/wps.h +++ b/src/wps/wps.h @@ -94,6 +94,7 @@ struct wps_device_data { u32 os_version; u8 rf_bands; u16 config_methods; + struct wpabuf *vendor_ext_m1; struct wpabuf *vendor_ext[MAX_WPS_VENDOR_EXTENSIONS]; int p2p; diff --git a/src/wps/wps_dev_attr.c b/src/wps/wps_dev_attr.c index 559582d..3c94a43 100644 --- a/src/wps/wps_dev_attr.c +++ b/src/wps/wps_dev_attr.c @@ -203,6 +203,20 @@ int wps_build_os_version(struct wps_device_data *dev, struct wpabuf *msg) } +int wps_build_vendor_ext_m1(struct wps_device_data *dev, struct wpabuf *msg) +{ + if (dev->vendor_ext_m1 != NULL) { + wpa_hexdump(MSG_DEBUG, "WPS: * Vendor Extension M1", + wpabuf_head_u8(dev->vendor_ext_m1), + wpabuf_len(dev->vendor_ext_m1)); + wpabuf_put_be16(msg, ATTR_VENDOR_EXT); + wpabuf_put_be16(msg, wpabuf_len(dev->vendor_ext_m1)); + wpabuf_put_buf(msg, dev->vendor_ext_m1); + } + return 0; +} + + int wps_build_rf_bands(struct wps_device_data *dev, struct wpabuf *msg) { wpa_printf(MSG_DEBUG, "WPS: * RF Bands (%x)", dev->rf_bands); diff --git a/src/wps/wps_dev_attr.h b/src/wps/wps_dev_attr.h index 7ca81ad..200c9c4 100644 --- a/src/wps/wps_dev_attr.h +++ b/src/wps/wps_dev_attr.h @@ -17,6 +17,7 @@ int wps_build_model_number(struct wps_device_data *dev, struct wpabuf *msg); int wps_build_dev_name(struct wps_device_data *dev, struct wpabuf *msg); int wps_build_device_attrs(struct wps_device_data *dev, struct wpabuf *msg); int wps_build_os_version(struct wps_device_data *dev, struct wpabuf *msg); +int wps_build_vendor_ext_m1(struct wps_device_data *dev, struct wpabuf *msg); int wps_build_rf_bands(struct wps_device_data *dev, struct wpabuf *msg); int wps_build_primary_dev_type(struct wps_device_data *dev, struct wpabuf *msg); diff --git a/src/wps/wps_enrollee.c b/src/wps/wps_enrollee.c index 85d2e95..da0c101 100644 --- a/src/wps/wps_enrollee.c +++ b/src/wps/wps_enrollee.c @@ -163,7 +163,8 @@ static struct wpabuf * wps_build_m1(struct wps_data *wps) wps_build_dev_password_id(msg, wps->dev_pw_id) || wps_build_config_error(msg, WPS_CFG_NO_ERROR) || wps_build_os_version(&wps->wps->dev, msg) || - wps_build_wfa_ext(msg, 0, NULL, 0)) { + wps_build_wfa_ext(msg, 0, NULL, 0) || + wps_build_vendor_ext_m1(&wps->wps->dev, msg)) { wpabuf_free(msg); return NULL; } |