static int mesh_rsn_build_sae_commit(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, struct sta_info *sta) { if (ssid->passphrase == NULL) { wpa_msg(wpa_s, MSG_DEBUG, "SAE: No password available"); return -1; } if (mesh_rsn_sae_group(wpa_s, sta->sae) < 0) { wpa_msg(wpa_s, MSG_DEBUG, "SAE: Failed to select group"); return -1; } return sae_prepare_commit(wpa_s->own_addr, sta->addr, (u8 *) ssid->passphrase, os_strlen(ssid->passphrase), sta->sae); }
static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, const u8 *bssid) { struct wpabuf *buf; size_t len; if (ssid->passphrase == NULL) { wpa_printf(MSG_DEBUG, "SAE: No password available"); return NULL; } if (sme_set_sae_group(wpa_s) < 0) { wpa_printf(MSG_DEBUG, "SAE: Failed to select group"); return NULL; } if (sae_prepare_commit(wpa_s->own_addr, bssid, (u8 *) ssid->passphrase, os_strlen(ssid->passphrase), &wpa_s->sme.sae) < 0) { wpa_printf(MSG_DEBUG, "SAE: Could not pick PWE"); return NULL; } len = wpa_s->sme.sae_token ? wpabuf_len(wpa_s->sme.sae_token) : 0; buf = wpabuf_alloc(4 + SAE_COMMIT_MAX_LEN + len); if (buf == NULL) return NULL; wpabuf_put_le16(buf, 1); /* Transaction seq# */ wpabuf_put_le16(buf, WLAN_STATUS_SUCCESS); sae_write_commit(&wpa_s->sme.sae, buf, wpa_s->sme.sae_token); return buf; }