Lines Matching full:data
62 static void eap_sake_state(struct eap_sake_data *data, int state)
65 eap_sake_state_txt(data->state),
67 data->state = state;
77 struct eap_sake_data *data;
91 data = os_zalloc(sizeof(*data));
92 if (data == NULL)
94 data->state = IDENTITY;
97 data->peerid = os_malloc(config->nai_len);
98 if (data->peerid == NULL) {
99 eap_sake_deinit(sm, data);
102 os_memcpy(data->peerid, config->nai, config->nai_len);
103 data->peerid_len = config->nai_len;
106 os_memcpy(data->root_secret_a, config->eappsk,
108 os_memcpy(data->root_secret_b,
112 return data;
118 struct eap_sake_data *data = priv;
119 os_free(data->serverid);
120 os_free(data->peerid);
121 os_free(data);
125 static u8 * eap_sake_build_msg(struct eap_sake_data *data, u8 **payload,
146 req->session_id = data->session_id;
155 struct eap_sake_data *data,
165 if (data->state != IDENTITY) {
183 *respDataLen = 2 + data->peerid_len;
184 resp = eap_sake_build_msg(data, &rpos, hdr->identifier, respDataLen,
191 *rpos++ = 2 + data->peerid_len;
192 if (data->peerid)
193 os_memcpy(rpos, data->peerid, data->peerid_len);
195 eap_sake_state(data, CHALLENGE);
202 struct eap_sake_data *data,
212 if (data->state != IDENTITY && data->state != CHALLENGE) {
214 "in unexpected state (%d)", data->state);
218 if (data->state == IDENTITY)
219 eap_sake_state(data, CHALLENGE);
232 os_memcpy(data->rand_s, attr.rand_s, EAP_SAKE_RAND_LEN);
234 data->rand_s, EAP_SAKE_RAND_LEN);
236 if (hostapd_get_rand(data->rand_p, EAP_SAKE_RAND_LEN)) {
237 wpa_printf(MSG_ERROR, "EAP-SAKE: Failed to get random data");
241 data->rand_p, EAP_SAKE_RAND_LEN);
243 os_free(data->serverid);
244 data->serverid = NULL;
245 data->serverid_len = 0;
249 data->serverid = os_malloc(attr.serverid_len);
250 if (data->serverid == NULL)
252 os_memcpy(data->serverid, attr.serverid, attr.serverid_len);
253 data->serverid_len = attr.serverid_len;
256 eap_sake_derive_keys(data->root_secret_a, data->root_secret_b,
257 data->rand_s, data->rand_p,
258 (u8 *) &data->tek, data->msk, data->emsk);
263 if (data->peerid)
264 *respDataLen += 2 + data->peerid_len;
265 resp = eap_sake_build_msg(data, &rpos, hdr->identifier, respDataLen,
273 os_memcpy(rpos, data->rand_p, EAP_SAKE_RAND_LEN);
276 if (data->peerid) {
279 *rpos++ = 2 + data->peerid_len;
280 os_memcpy(rpos, data->peerid, data->peerid_len);
281 rpos += data->peerid_len;
287 if (eap_sake_compute_mic(data->tek.auth, data->rand_s, data->rand_p,
288 data->serverid, data->serverid_len,
289 data->peerid, data->peerid_len, 1,
296 eap_sake_state(data, CONFIRM);
303 struct eap_sake_data *data,
314 if (data->state != CONFIRM) {
330 eap_sake_compute_mic(data->tek.auth, data->rand_s, data->rand_p,
331 data->serverid, data->serverid_len,
332 data->peerid, data->peerid_len, 0,
336 eap_sake_state(data, FAILURE);
343 return eap_sake_build_msg(data, &rpos, hdr->identifier,
351 resp = eap_sake_build_msg(data, &rpos, hdr->identifier, respDataLen,
359 if (eap_sake_compute_mic(data->tek.auth, data->rand_s, data->rand_p,
360 data->serverid, data->serverid_len,
361 data->peerid, data->peerid_len, 1,
368 eap_sake_state(data, SUCCESS);
382 struct eap_sake_data *data = priv;
407 if (data->session_id_set && data->session_id != session_id) {
409 session_id, data->session_id);
413 data->session_id = session_id;
414 data->session_id_set = 1;
423 resp = eap_sake_process_identity(sm, data, ret, reqData,
428 resp = eap_sake_process_challenge(sm, data, ret, reqData,
433 resp = eap_sake_process_confirm(sm, data, ret, reqData,
453 struct eap_sake_data *data = priv;
454 return data->state == SUCCESS;
460 struct eap_sake_data *data = priv;
463 if (data->state != SUCCESS)
469 os_memcpy(key, data->msk, EAP_MSK_LEN);
478 struct eap_sake_data *data = priv;
481 if (data->state != SUCCESS)
487 os_memcpy(key, data->emsk, EAP_EMSK_LEN);