Lines Matching refs:data
56 static void eap_gpsk_state(struct eap_gpsk_data *data, int state) in eap_gpsk_state() argument
59 eap_gpsk_state_txt(data->state), in eap_gpsk_state()
61 data->state = state; in eap_gpsk_state()
67 struct eap_gpsk_data *data; in eap_gpsk_init() local
69 data = os_zalloc(sizeof(*data)); in eap_gpsk_init()
70 if (data == NULL) in eap_gpsk_init()
72 data->state = GPSK_1; in eap_gpsk_init()
74 data->csuite_count = 0; in eap_gpsk_init()
77 WPA_PUT_BE32(data->csuite_list[data->csuite_count].vendor, in eap_gpsk_init()
79 WPA_PUT_BE16(data->csuite_list[data->csuite_count].specifier, in eap_gpsk_init()
81 data->csuite_count++; in eap_gpsk_init()
85 WPA_PUT_BE32(data->csuite_list[data->csuite_count].vendor, in eap_gpsk_init()
87 WPA_PUT_BE16(data->csuite_list[data->csuite_count].specifier, in eap_gpsk_init()
89 data->csuite_count++; in eap_gpsk_init()
92 return data; in eap_gpsk_init()
98 struct eap_gpsk_data *data = priv; in eap_gpsk_reset() local
99 os_free(data->id_peer); in eap_gpsk_reset()
100 bin_clear_free(data, sizeof(*data)); in eap_gpsk_reset()
105 struct eap_gpsk_data *data, u8 id) in eap_gpsk_build_gpsk_1() argument
112 if (random_get_bytes(data->rand_server, EAP_GPSK_RAND_LEN)) { in eap_gpsk_build_gpsk_1()
114 eap_gpsk_state(data, FAILURE); in eap_gpsk_build_gpsk_1()
118 data->rand_server, EAP_GPSK_RAND_LEN); in eap_gpsk_build_gpsk_1()
121 data->csuite_count * sizeof(struct eap_gpsk_csuite); in eap_gpsk_build_gpsk_1()
127 eap_gpsk_state(data, FAILURE); in eap_gpsk_build_gpsk_1()
134 wpabuf_put_data(req, data->rand_server, EAP_GPSK_RAND_LEN); in eap_gpsk_build_gpsk_1()
136 data->csuite_count * sizeof(struct eap_gpsk_csuite)); in eap_gpsk_build_gpsk_1()
137 wpabuf_put_data(req, data->csuite_list, in eap_gpsk_build_gpsk_1()
138 data->csuite_count * sizeof(struct eap_gpsk_csuite)); in eap_gpsk_build_gpsk_1()
145 struct eap_gpsk_data *data, u8 id) in eap_gpsk_build_gpsk_3() argument
154 miclen = eap_gpsk_mic_len(data->vendor, data->specifier); in eap_gpsk_build_gpsk_3()
162 eap_gpsk_state(data, FAILURE); in eap_gpsk_build_gpsk_3()
169 wpabuf_put_data(req, data->rand_peer, EAP_GPSK_RAND_LEN); in eap_gpsk_build_gpsk_3()
170 wpabuf_put_data(req, data->rand_server, EAP_GPSK_RAND_LEN); in eap_gpsk_build_gpsk_3()
174 WPA_PUT_BE32(csuite->vendor, data->vendor); in eap_gpsk_build_gpsk_3()
175 WPA_PUT_BE16(csuite->specifier, data->specifier); in eap_gpsk_build_gpsk_3()
181 if (eap_gpsk_compute_mic(data->sk, data->sk_len, data->vendor, in eap_gpsk_build_gpsk_3()
182 data->specifier, start, pos - start, pos) < 0) in eap_gpsk_build_gpsk_3()
185 eap_gpsk_state(data, FAILURE); in eap_gpsk_build_gpsk_3()
195 struct eap_gpsk_data *data = priv; in eap_gpsk_buildReq() local
197 switch (data->state) { in eap_gpsk_buildReq()
199 return eap_gpsk_build_gpsk_1(sm, data, id); in eap_gpsk_buildReq()
201 return eap_gpsk_build_gpsk_3(sm, data, id); in eap_gpsk_buildReq()
204 data->state); in eap_gpsk_buildReq()
214 struct eap_gpsk_data *data = priv; in eap_gpsk_check() local
226 if (data->state == GPSK_1 && *pos == EAP_GPSK_OPCODE_GPSK_2) in eap_gpsk_check()
229 if (data->state == GPSK_3 && *pos == EAP_GPSK_OPCODE_GPSK_4) in eap_gpsk_check()
233 *pos, data->state); in eap_gpsk_check()
240 struct eap_gpsk_data *data, in eap_gpsk_process_gpsk_2() argument
249 if (data->state != GPSK_1) in eap_gpsk_process_gpsk_2()
260 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
268 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
271 os_free(data->id_peer); in eap_gpsk_process_gpsk_2()
272 data->id_peer = os_memdup(pos, alen); in eap_gpsk_process_gpsk_2()
273 if (data->id_peer == NULL) { in eap_gpsk_process_gpsk_2()
278 data->id_peer_len = alen; in eap_gpsk_process_gpsk_2()
280 data->id_peer, data->id_peer_len); in eap_gpsk_process_gpsk_2()
286 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
294 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
301 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
309 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
312 os_memcpy(data->rand_peer, pos, EAP_GPSK_RAND_LEN); in eap_gpsk_process_gpsk_2()
314 data->rand_peer, EAP_GPSK_RAND_LEN); in eap_gpsk_process_gpsk_2()
320 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
323 if (os_memcmp(data->rand_server, pos, EAP_GPSK_RAND_LEN) != 0) { in eap_gpsk_process_gpsk_2()
327 data->rand_server, EAP_GPSK_RAND_LEN); in eap_gpsk_process_gpsk_2()
330 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
338 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
346 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
349 if (alen != data->csuite_count * sizeof(struct eap_gpsk_csuite) || in eap_gpsk_process_gpsk_2()
350 os_memcmp(pos, data->csuite_list, alen) != 0) { in eap_gpsk_process_gpsk_2()
353 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
361 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
365 for (i = 0; i < data->csuite_count; i++) { in eap_gpsk_process_gpsk_2()
366 if (os_memcmp(csuite, &data->csuite_list[i], sizeof(*csuite)) in eap_gpsk_process_gpsk_2()
370 if (i == data->csuite_count) { in eap_gpsk_process_gpsk_2()
375 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
378 data->vendor = WPA_GET_BE32(csuite->vendor); in eap_gpsk_process_gpsk_2()
379 data->specifier = WPA_GET_BE16(csuite->specifier); in eap_gpsk_process_gpsk_2()
381 data->vendor, data->specifier); in eap_gpsk_process_gpsk_2()
387 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
395 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
404 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
409 data->vendor, data->specifier, in eap_gpsk_process_gpsk_2()
410 data->rand_peer, data->rand_server, in eap_gpsk_process_gpsk_2()
411 data->id_peer, data->id_peer_len, in eap_gpsk_process_gpsk_2()
413 data->msk, data->emsk, in eap_gpsk_process_gpsk_2()
414 data->sk, &data->sk_len, in eap_gpsk_process_gpsk_2()
415 data->pk, &data->pk_len) < 0) { in eap_gpsk_process_gpsk_2()
417 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
423 data->vendor, data->specifier, in eap_gpsk_process_gpsk_2()
424 data->rand_peer, data->rand_server, in eap_gpsk_process_gpsk_2()
425 data->id_peer, data->id_peer_len, in eap_gpsk_process_gpsk_2()
429 data->session_id, &data->id_len) < 0) { in eap_gpsk_process_gpsk_2()
431 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
435 data->session_id, data->id_len); in eap_gpsk_process_gpsk_2()
437 miclen = eap_gpsk_mic_len(data->vendor, data->specifier); in eap_gpsk_process_gpsk_2()
443 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
446 if (eap_gpsk_compute_mic(data->sk, data->sk_len, data->vendor, in eap_gpsk_process_gpsk_2()
447 data->specifier, payload, pos - payload, mic) in eap_gpsk_process_gpsk_2()
450 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
457 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_2()
468 eap_gpsk_state(data, GPSK_3); in eap_gpsk_process_gpsk_2()
473 struct eap_gpsk_data *data, in eap_gpsk_process_gpsk_4() argument
481 if (data->state != GPSK_3) in eap_gpsk_process_gpsk_4()
492 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_4()
500 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_4()
506 miclen = eap_gpsk_mic_len(data->vendor, data->specifier); in eap_gpsk_process_gpsk_4()
512 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_4()
515 if (eap_gpsk_compute_mic(data->sk, data->sk_len, data->vendor, in eap_gpsk_process_gpsk_4()
516 data->specifier, payload, pos - payload, mic) in eap_gpsk_process_gpsk_4()
519 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_4()
526 eap_gpsk_state(data, FAILURE); in eap_gpsk_process_gpsk_4()
537 eap_gpsk_state(data, SUCCESS); in eap_gpsk_process_gpsk_4()
544 struct eap_gpsk_data *data = priv; in eap_gpsk_process() local
554 eap_gpsk_process_gpsk_2(sm, data, pos + 1, len - 1); in eap_gpsk_process()
557 eap_gpsk_process_gpsk_4(sm, data, pos + 1, len - 1); in eap_gpsk_process()
565 struct eap_gpsk_data *data = priv; in eap_gpsk_isDone() local
566 return data->state == SUCCESS || data->state == FAILURE; in eap_gpsk_isDone()
572 struct eap_gpsk_data *data = priv; in eap_gpsk_getKey() local
575 if (data->state != SUCCESS) in eap_gpsk_getKey()
578 key = os_memdup(data->msk, EAP_MSK_LEN); in eap_gpsk_getKey()
589 struct eap_gpsk_data *data = priv; in eap_gpsk_get_emsk() local
592 if (data->state != SUCCESS) in eap_gpsk_get_emsk()
595 key = os_memdup(data->emsk, EAP_EMSK_LEN); in eap_gpsk_get_emsk()
606 struct eap_gpsk_data *data = priv; in eap_gpsk_isSuccess() local
607 return data->state == SUCCESS; in eap_gpsk_isSuccess()
613 struct eap_gpsk_data *data = priv; in eap_gpsk_get_session_id() local
616 if (data->state != SUCCESS) in eap_gpsk_get_session_id()
619 sid = os_memdup(data->session_id, data->id_len); in eap_gpsk_get_session_id()
622 *len = data->id_len; in eap_gpsk_get_session_id()