static int sme_set_sae_group(struct wpa_supplicant *wpa_s) { int *groups = wpa_s->conf->sae_groups; int default_groups[] = { 19, 20, 21, 25, 26, 0 }; if (!groups || groups[0] <= 0) groups = default_groups; /* Configuration may have changed, so validate current index */ if (!index_within_array(groups, wpa_s->sme.sae_group_index)) return -1; for (;;) { int group = groups[wpa_s->sme.sae_group_index]; if (group < 0) break; if (sae_set_group(&wpa_s->sme.sae, group) == 0) { wpa_dbg(wpa_s, MSG_DEBUG, "SME: Selected SAE group %d", wpa_s->sme.sae.group); return 0; } wpa_s->sme.sae_group_index++; } return -1; }
static int mesh_rsn_sae_group(struct wpa_supplicant *wpa_s, struct sae_data *sae) { int *groups = wpa_s->ifmsh->bss[0]->conf->sae_groups; /* Configuration may have changed, so validate current index */ if (!index_within_array(groups, wpa_s->mesh_rsn->sae_group_index)) return -1; for (;;) { int group = groups[wpa_s->mesh_rsn->sae_group_index]; if (group <= 0) break; if (sae_set_group(sae, group) == 0) { wpa_dbg(wpa_s, MSG_DEBUG, "SME: Selected SAE group %d", sae->group); return 0; } wpa_s->mesh_rsn->sae_group_index++; } return -1; }