P2P: Use PSK format in WPS Credential
This commit is contained in:
parent
6e3f4b89ea
commit
f684e608af
7 changed files with 16 additions and 5 deletions
|
@ -652,7 +652,7 @@ ieee802_1x_alloc_eapol_sm(struct hostapd_data *hapd, struct sta_info *sta)
|
|||
flags |= EAPOL_SM_FROM_PMKSA_CACHE;
|
||||
}
|
||||
return eapol_auth_alloc(hapd->eapol_auth, sta->addr, flags,
|
||||
sta->wps_ie, sta);
|
||||
sta->wps_ie, sta->p2p_ie, sta);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@ struct eap_config {
|
|||
int tnc;
|
||||
struct wps_context *wps;
|
||||
const struct wpabuf *assoc_wps_ie;
|
||||
const struct wpabuf *assoc_p2p_ie;
|
||||
const u8 *peer_addr;
|
||||
int fragment_size;
|
||||
};
|
||||
|
|
|
@ -183,6 +183,7 @@ struct eap_sm {
|
|||
int tnc;
|
||||
struct wps_context *wps;
|
||||
struct wpabuf *assoc_wps_ie;
|
||||
struct wpabuf *assoc_p2p_ie;
|
||||
|
||||
Boolean start_reauth;
|
||||
|
||||
|
|
|
@ -1255,6 +1255,8 @@ struct eap_sm * eap_server_sm_init(void *eapol_ctx,
|
|||
sm->wps = conf->wps;
|
||||
if (conf->assoc_wps_ie)
|
||||
sm->assoc_wps_ie = wpabuf_dup(conf->assoc_wps_ie);
|
||||
if (conf->assoc_p2p_ie)
|
||||
sm->assoc_p2p_ie = wpabuf_dup(conf->assoc_p2p_ie);
|
||||
if (conf->peer_addr)
|
||||
os_memcpy(sm->peer_addr, conf->peer_addr, ETH_ALEN);
|
||||
sm->fragment_size = conf->fragment_size;
|
||||
|
@ -1292,6 +1294,7 @@ void eap_server_sm_deinit(struct eap_sm *sm)
|
|||
os_free(sm->eap_if.aaaEapKeyData);
|
||||
eap_user_free(sm->user);
|
||||
wpabuf_free(sm->assoc_wps_ie);
|
||||
wpabuf_free(sm->assoc_p2p_ie);
|
||||
os_free(sm);
|
||||
}
|
||||
|
||||
|
|
|
@ -135,8 +135,11 @@ static void * eap_wsc_init(struct eap_sm *sm)
|
|||
}
|
||||
cfg.assoc_wps_ie = sm->assoc_wps_ie;
|
||||
cfg.peer_addr = sm->peer_addr;
|
||||
if (0 /* TODO: could provide option for forcing PSK format */)
|
||||
if (sm->assoc_p2p_ie) {
|
||||
wpa_printf(MSG_DEBUG, "EAP-WSC: Prefer PSK format for P2P "
|
||||
"client");
|
||||
cfg.use_psk_key = 1;
|
||||
}
|
||||
data->wps = wps_init(&cfg);
|
||||
if (data->wps == NULL) {
|
||||
os_free(data);
|
||||
|
|
|
@ -762,7 +762,8 @@ SM_STEP(CTRL_DIR)
|
|||
|
||||
struct eapol_state_machine *
|
||||
eapol_auth_alloc(struct eapol_authenticator *eapol, const u8 *addr,
|
||||
int flags, const struct wpabuf *assoc_wps_ie, void *sta_ctx)
|
||||
int flags, const struct wpabuf *assoc_wps_ie,
|
||||
const struct wpabuf *assoc_p2p_ie, void *sta_ctx)
|
||||
{
|
||||
struct eapol_state_machine *sm;
|
||||
struct eap_config eap_conf;
|
||||
|
@ -829,6 +830,7 @@ eapol_auth_alloc(struct eapol_authenticator *eapol, const u8 *addr,
|
|||
eap_conf.tnc = eapol->conf.tnc;
|
||||
eap_conf.wps = eapol->conf.wps;
|
||||
eap_conf.assoc_wps_ie = assoc_wps_ie;
|
||||
eap_conf.assoc_p2p_ie = assoc_p2p_ie;
|
||||
eap_conf.peer_addr = addr;
|
||||
eap_conf.fragment_size = eapol->conf.fragment_size;
|
||||
sm->eap = eap_server_sm_init(sm, &eapol_cb, &eap_conf);
|
||||
|
|
|
@ -80,7 +80,8 @@ struct eapol_authenticator * eapol_auth_init(struct eapol_auth_config *conf,
|
|||
void eapol_auth_deinit(struct eapol_authenticator *eapol);
|
||||
struct eapol_state_machine *
|
||||
eapol_auth_alloc(struct eapol_authenticator *eapol, const u8 *addr,
|
||||
int flags, const struct wpabuf *assoc_wps_ie, void *sta_ctx);
|
||||
int flags, const struct wpabuf *assoc_wps_ie,
|
||||
const struct wpabuf *assoc_p2p_ie, void *sta_ctx);
|
||||
void eapol_auth_free(struct eapol_state_machine *sm);
|
||||
void eapol_auth_step(struct eapol_state_machine *sm);
|
||||
void eapol_auth_dump_state(FILE *f, const char *prefix,
|
||||
|
|
Loading…
Reference in a new issue