SAE: Allow commit fields to be overridden for testing purposes (STA)
The new "SET sae_commit_override <hexdump>" control interface command can be used to force wpa_supplicant to override SAE commit message fields for testing purposes. This is included only in CONFIG_TESTING_OPTIONS=y builds. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
cd06e2663b
commit
a0f19e9c74
3 changed files with 22 additions and 0 deletions
|
@ -636,6 +636,12 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s,
|
||||||
wpa_s->get_pref_freq_list_override = NULL;
|
wpa_s->get_pref_freq_list_override = NULL;
|
||||||
else
|
else
|
||||||
wpa_s->get_pref_freq_list_override = os_strdup(value);
|
wpa_s->get_pref_freq_list_override = os_strdup(value);
|
||||||
|
} else if (os_strcasecmp(cmd, "sae_commit_override") == 0) {
|
||||||
|
wpabuf_free(wpa_s->sae_commit_override);
|
||||||
|
if (value[0] == '\0')
|
||||||
|
wpa_s->sae_commit_override = NULL;
|
||||||
|
else
|
||||||
|
wpa_s->sae_commit_override = wpabuf_parse_bin(value);
|
||||||
#ifdef CONFIG_DPP
|
#ifdef CONFIG_DPP
|
||||||
} else if (os_strcasecmp(cmd, "dpp_config_obj_override") == 0) {
|
} else if (os_strcasecmp(cmd, "dpp_config_obj_override") == 0) {
|
||||||
os_free(wpa_s->dpp_config_obj_override);
|
os_free(wpa_s->dpp_config_obj_override);
|
||||||
|
@ -7766,6 +7772,8 @@ static void wpa_supplicant_ctrl_iface_flush(struct wpa_supplicant *wpa_s)
|
||||||
wpa_sm_set_test_assoc_ie(wpa_s->wpa, NULL);
|
wpa_sm_set_test_assoc_ie(wpa_s->wpa, NULL);
|
||||||
os_free(wpa_s->get_pref_freq_list_override);
|
os_free(wpa_s->get_pref_freq_list_override);
|
||||||
wpa_s->get_pref_freq_list_override = NULL;
|
wpa_s->get_pref_freq_list_override = NULL;
|
||||||
|
wpabuf_free(wpa_s->sae_commit_override);
|
||||||
|
wpa_s->sae_commit_override = NULL;
|
||||||
#endif /* CONFIG_TESTING_OPTIONS */
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
|
|
||||||
wpa_s->disconnected = 0;
|
wpa_s->disconnected = 0;
|
||||||
|
|
|
@ -88,6 +88,19 @@ static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s,
|
||||||
struct wpabuf *buf;
|
struct wpabuf *buf;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
|
#ifdef CONFIG_TESTING_OPTIONS
|
||||||
|
if (wpa_s->sae_commit_override) {
|
||||||
|
wpa_printf(MSG_DEBUG, "SAE: TESTING - commit override");
|
||||||
|
buf = wpabuf_alloc(4 + wpabuf_len(wpa_s->sae_commit_override));
|
||||||
|
if (!buf)
|
||||||
|
return NULL;
|
||||||
|
wpabuf_put_le16(buf, 1); /* Transaction seq# */
|
||||||
|
wpabuf_put_le16(buf, WLAN_STATUS_SUCCESS);
|
||||||
|
wpabuf_put_buf(buf, wpa_s->sae_commit_override);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
|
|
||||||
if (ssid->passphrase == NULL) {
|
if (ssid->passphrase == NULL) {
|
||||||
wpa_printf(MSG_DEBUG, "SAE: No password available");
|
wpa_printf(MSG_DEBUG, "SAE: No password available");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -1076,6 +1076,7 @@ struct wpa_supplicant {
|
||||||
unsigned int p2p_go_csa_on_inv:1;
|
unsigned int p2p_go_csa_on_inv:1;
|
||||||
unsigned int ignore_auth_resp:1;
|
unsigned int ignore_auth_resp:1;
|
||||||
unsigned int ignore_assoc_disallow:1;
|
unsigned int ignore_assoc_disallow:1;
|
||||||
|
struct wpabuf *sae_commit_override;
|
||||||
#endif /* CONFIG_TESTING_OPTIONS */
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
|
|
||||||
struct wmm_ac_assoc_data *wmm_ac_assoc_info;
|
struct wmm_ac_assoc_data *wmm_ac_assoc_info;
|
||||||
|
|
Loading…
Reference in a new issue