Lines Matching refs:data
72 struct eap_fast_data *data);
102 static void eap_fast_state(struct eap_fast_data *data, int state) in eap_fast_state() argument
105 eap_fast_state_txt(data->state), in eap_fast_state()
107 data->state = state; in eap_fast_state()
112 struct eap_fast_data *data) in eap_fast_req_failure() argument
115 eap_fast_state(data, FAILURE); in eap_fast_req_failure()
125 struct eap_fast_data *data = ctx; in eap_fast_session_ticket_cb() local
164 if (aes_unwrap(data->pac_opaque_encr, sizeof(data->pac_opaque_encr), in eap_fast_session_ticket_cb()
237 os_free(data->identity); in eap_fast_session_ticket_cb()
238 data->identity = os_malloc(identity_len); in eap_fast_session_ticket_cb()
239 if (data->identity) { in eap_fast_session_ticket_cb()
240 os_memcpy(data->identity, identity, identity_len); in eap_fast_session_ticket_cb()
241 data->identity_len = identity_len; in eap_fast_session_ticket_cb()
248 data->send_new_pac = 2; in eap_fast_session_ticket_cb()
257 } else if (lifetime - now.sec < data->pac_key_refresh_time) { in eap_fast_session_ticket_cb()
260 data->send_new_pac = 1; in eap_fast_session_ticket_cb()
273 struct eap_fast_data *data) in eap_fast_derive_key_auth() argument
281 sks = eap_fast_derive_key(sm->cfg->ssl_ctx, data->ssl.conn, in eap_fast_derive_key_auth()
296 data->simck_idx = 0; in eap_fast_derive_key_auth()
297 os_memcpy(data->simck, sks, EAP_FAST_SIMCK_LEN); in eap_fast_derive_key_auth()
303 struct eap_fast_data *data) in eap_fast_derive_key_provisioning() argument
305 os_free(data->key_block_p); in eap_fast_derive_key_provisioning()
306 data->key_block_p = (struct eap_fast_key_block_provisioning *) in eap_fast_derive_key_provisioning()
307 eap_fast_derive_key(sm->cfg->ssl_ctx, data->ssl.conn, in eap_fast_derive_key_provisioning()
308 sizeof(*data->key_block_p)); in eap_fast_derive_key_provisioning()
309 if (data->key_block_p == NULL) { in eap_fast_derive_key_provisioning()
319 data->key_block_p->session_key_seed, in eap_fast_derive_key_provisioning()
320 sizeof(data->key_block_p->session_key_seed)); in eap_fast_derive_key_provisioning()
321 data->simck_idx = 0; in eap_fast_derive_key_provisioning()
322 os_memcpy(data->simck, data->key_block_p->session_key_seed, in eap_fast_derive_key_provisioning()
325 data->key_block_p->server_challenge, in eap_fast_derive_key_provisioning()
326 sizeof(data->key_block_p->server_challenge)); in eap_fast_derive_key_provisioning()
328 data->key_block_p->client_challenge, in eap_fast_derive_key_provisioning()
329 sizeof(data->key_block_p->client_challenge)); in eap_fast_derive_key_provisioning()
334 struct eap_fast_data *data, in eap_fast_get_phase2_key() argument
342 if (data->phase2_method == NULL || data->phase2_priv == NULL) { in eap_fast_get_phase2_key()
348 if (data->phase2_method->getKey == NULL) in eap_fast_get_phase2_key()
351 if ((key = data->phase2_method->getKey(sm, data->phase2_priv, in eap_fast_get_phase2_key()
367 static int eap_fast_update_icmk(struct eap_sm *sm, struct eap_fast_data *data) in eap_fast_update_icmk() argument
372 data->simck_idx + 1); in eap_fast_update_icmk()
382 if (eap_fast_get_phase2_key(sm, data, isk, sizeof(isk)) < 0) in eap_fast_update_icmk()
385 sha1_t_prf(data->simck, EAP_FAST_SIMCK_LEN, in eap_fast_update_icmk()
388 data->simck_idx++; in eap_fast_update_icmk()
389 os_memcpy(data->simck, imck, EAP_FAST_SIMCK_LEN); in eap_fast_update_icmk()
391 data->simck, EAP_FAST_SIMCK_LEN); in eap_fast_update_icmk()
392 os_memcpy(data->cmk, imck + EAP_FAST_SIMCK_LEN, EAP_FAST_CMK_LEN); in eap_fast_update_icmk()
394 data->cmk, EAP_FAST_CMK_LEN); in eap_fast_update_icmk()
402 struct eap_fast_data *data; in eap_fast_init() local
413 data = os_zalloc(sizeof(*data)); in eap_fast_init()
414 if (data == NULL) in eap_fast_init()
416 data->fast_version = EAP_FAST_VERSION; in eap_fast_init()
417 data->force_version = -1; in eap_fast_init()
419 data->force_version = sm->user->force_version; in eap_fast_init()
421 data->force_version); in eap_fast_init()
422 data->fast_version = data->force_version; in eap_fast_init()
424 data->state = START; in eap_fast_init()
426 if (eap_server_tls_ssl_init(sm, &data->ssl, 0, EAP_TYPE_FAST)) { in eap_fast_init()
428 eap_fast_reset(sm, data); in eap_fast_init()
432 if (tls_connection_set_cipher_list(sm->cfg->ssl_ctx, data->ssl.conn, in eap_fast_init()
436 eap_fast_reset(sm, data); in eap_fast_init()
441 data->ssl.conn, in eap_fast_init()
443 data) < 0) { in eap_fast_init()
446 eap_fast_reset(sm, data); in eap_fast_init()
453 eap_fast_reset(sm, data); in eap_fast_init()
456 os_memcpy(data->pac_opaque_encr, sm->cfg->pac_opaque_encr_key, in eap_fast_init()
457 sizeof(data->pac_opaque_encr)); in eap_fast_init()
461 eap_fast_reset(sm, data); in eap_fast_init()
464 data->srv_id = os_memdup(sm->cfg->eap_fast_a_id, in eap_fast_init()
466 if (data->srv_id == NULL) { in eap_fast_init()
467 eap_fast_reset(sm, data); in eap_fast_init()
470 data->srv_id_len = sm->cfg->eap_fast_a_id_len; in eap_fast_init()
474 eap_fast_reset(sm, data); in eap_fast_init()
477 data->srv_id_info = os_strdup(sm->cfg->eap_fast_a_id_info); in eap_fast_init()
478 if (data->srv_id_info == NULL) { in eap_fast_init()
479 eap_fast_reset(sm, data); in eap_fast_init()
484 data->pac_key_lifetime = sm->cfg->pac_key_lifetime; in eap_fast_init()
491 data->pac_key_refresh_time = sm->cfg->pac_key_refresh_time; in eap_fast_init()
493 return data; in eap_fast_init()
499 struct eap_fast_data *data = priv; in eap_fast_reset() local
500 if (data == NULL) in eap_fast_reset()
502 if (data->phase2_priv && data->phase2_method) in eap_fast_reset()
503 data->phase2_method->reset(sm, data->phase2_priv); in eap_fast_reset()
504 eap_server_tls_ssl_deinit(sm, &data->ssl); in eap_fast_reset()
505 os_free(data->srv_id); in eap_fast_reset()
506 os_free(data->srv_id_info); in eap_fast_reset()
507 os_free(data->key_block_p); in eap_fast_reset()
508 wpabuf_free(data->pending_phase2_resp); in eap_fast_reset()
509 os_free(data->identity); in eap_fast_reset()
510 bin_clear_free(data, sizeof(*data)); in eap_fast_reset()
515 struct eap_fast_data *data, u8 id) in eap_fast_build_start() argument
520 1 + sizeof(struct pac_tlv_hdr) + data->srv_id_len, in eap_fast_build_start()
525 eap_fast_state(data, FAILURE); in eap_fast_build_start()
529 wpabuf_put_u8(req, EAP_TLS_FLAGS_START | data->fast_version); in eap_fast_build_start()
532 eap_fast_put_tlv(req, PAC_TYPE_A_ID, data->srv_id, data->srv_id_len); in eap_fast_build_start()
534 eap_fast_state(data, PHASE1); in eap_fast_build_start()
540 static int eap_fast_phase1_done(struct eap_sm *sm, struct eap_fast_data *data) in eap_fast_phase1_done() argument
546 if (tls_get_cipher(sm->cfg->ssl_ctx, data->ssl.conn, in eap_fast_phase1_done()
550 eap_fast_state(data, FAILURE); in eap_fast_phase1_done()
553 data->anon_provisioning = os_strstr(cipher, "ADH") != NULL; in eap_fast_phase1_done()
555 if (data->anon_provisioning) { in eap_fast_phase1_done()
557 eap_fast_derive_key_provisioning(sm, data); in eap_fast_phase1_done()
559 eap_fast_derive_key_auth(sm, data); in eap_fast_phase1_done()
561 eap_fast_state(data, PHASE2_START); in eap_fast_phase1_done()
568 struct eap_fast_data *data, in eap_fast_build_phase2_req() argument
573 if (data->phase2_priv == NULL) { in eap_fast_build_phase2_req()
578 req = data->phase2_method->buildReq(sm, data->phase2_priv, id); in eap_fast_build_phase2_req()
588 struct eap_sm *sm, struct eap_fast_data *data) in eap_fast_build_crypto_binding() argument
598 if (data->send_new_pac || data->anon_provisioning || in eap_fast_build_crypto_binding()
599 data->phase2_method) in eap_fast_build_crypto_binding()
600 data->final_result = 0; in eap_fast_build_crypto_binding()
602 data->final_result = 1; in eap_fast_build_crypto_binding()
604 if (!data->final_result || data->eap_seq > 1) { in eap_fast_build_crypto_binding()
616 if (data->final_result) { in eap_fast_build_crypto_binding()
634 binding->received_version = data->peer_version; in eap_fast_build_crypto_binding()
647 os_memcpy(data->crypto_binding_nonce, binding->nonce, in eap_fast_build_crypto_binding()
656 hmac_sha1(data->cmk, EAP_FAST_CMK_LEN, in eap_fast_build_crypto_binding()
674 struct eap_fast_data *data) in eap_fast_build_pac() argument
698 srv_id_info_len = os_strlen(data->srv_id_info); in eap_fast_build_pac()
708 WPA_PUT_BE32(pos, now.sec + data->pac_key_lifetime); in eap_fast_build_pac()
729 if (aes_wrap(data->pac_opaque_encr, sizeof(data->pac_opaque_encr), in eap_fast_build_pac()
744 data->srv_id_len + srv_id_info_len + 100 + sizeof(*result); in eap_fast_build_pac()
778 wpabuf_put_be32(buf, now.sec + data->pac_key_lifetime); in eap_fast_build_pac()
781 eap_fast_put_tlv(buf, PAC_TYPE_A_ID, data->srv_id, data->srv_id_len); in eap_fast_build_pac()
791 eap_fast_put_tlv(buf, PAC_TYPE_A_ID_INFO, data->srv_id_info, in eap_fast_build_pac()
808 struct eap_fast_data *data, in eap_fast_encrypt_phase2() argument
815 encr = eap_server_tls_encrypt(sm, &data->ssl, plain); in eap_fast_encrypt_phase2()
821 if (data->ssl.tls_out && piggyback) { in eap_fast_encrypt_phase2()
826 (int) wpabuf_len(data->ssl.tls_out), in eap_fast_encrypt_phase2()
827 (int) data->ssl.tls_out_pos); in eap_fast_encrypt_phase2()
828 if (wpabuf_resize(&data->ssl.tls_out, wpabuf_len(encr)) < 0) { in eap_fast_encrypt_phase2()
834 wpabuf_put_buf(data->ssl.tls_out, encr); in eap_fast_encrypt_phase2()
837 wpabuf_free(data->ssl.tls_out); in eap_fast_encrypt_phase2()
838 data->ssl.tls_out_pos = 0; in eap_fast_encrypt_phase2()
839 data->ssl.tls_out = encr; in eap_fast_encrypt_phase2()
848 struct eap_fast_data *data = priv; in eap_fast_buildReq() local
852 if (data->ssl.state == FRAG_ACK) { in eap_fast_buildReq()
854 data->fast_version); in eap_fast_buildReq()
857 if (data->ssl.state == WAIT_FRAG_ACK) { in eap_fast_buildReq()
858 return eap_server_tls_build_msg(&data->ssl, EAP_TYPE_FAST, in eap_fast_buildReq()
859 data->fast_version, id); in eap_fast_buildReq()
862 switch (data->state) { in eap_fast_buildReq()
864 return eap_fast_build_start(sm, data, id); in eap_fast_buildReq()
867 data->ssl.conn)) { in eap_fast_buildReq()
868 if (eap_fast_phase1_done(sm, data) < 0) in eap_fast_buildReq()
870 if (data->state == PHASE2_START) { in eap_fast_buildReq()
878 if (eap_fast_process_phase2_start(sm, data)) in eap_fast_buildReq()
880 req = eap_fast_build_phase2_req(sm, data, id); in eap_fast_buildReq()
887 req = eap_fast_build_phase2_req(sm, data, id); in eap_fast_buildReq()
890 req = eap_fast_build_crypto_binding(sm, data); in eap_fast_buildReq()
891 if (data->phase2_method) { in eap_fast_buildReq()
898 eap = eap_fast_build_phase2_req(sm, data, id); in eap_fast_buildReq()
900 eap_fast_state(data, PHASE2_METHOD); in eap_fast_buildReq()
904 req = eap_fast_build_pac(sm, data); in eap_fast_buildReq()
908 __func__, data->state); in eap_fast_buildReq()
913 eap_fast_encrypt_phase2(sm, data, req, piggyback) < 0) in eap_fast_buildReq()
916 return eap_server_tls_build_msg(&data->ssl, EAP_TYPE_FAST, in eap_fast_buildReq()
917 data->fast_version, id); in eap_fast_buildReq()
937 static int eap_fast_phase2_init(struct eap_sm *sm, struct eap_fast_data *data, in eap_fast_phase2_init() argument
940 if (data->phase2_priv && data->phase2_method) { in eap_fast_phase2_init()
941 data->phase2_method->reset(sm, data->phase2_priv); in eap_fast_phase2_init()
942 data->phase2_method = NULL; in eap_fast_phase2_init()
943 data->phase2_priv = NULL; in eap_fast_phase2_init()
945 data->phase2_method = eap_server_get_eap_method(vendor, eap_type); in eap_fast_phase2_init()
946 if (!data->phase2_method) in eap_fast_phase2_init()
949 if (data->key_block_p) { in eap_fast_phase2_init()
950 sm->auth_challenge = data->key_block_p->server_challenge; in eap_fast_phase2_init()
951 sm->peer_challenge = data->key_block_p->client_challenge; in eap_fast_phase2_init()
955 data->phase2_priv = data->phase2_method->init(sm); in eap_fast_phase2_init()
960 return data->phase2_priv == NULL ? -1 : 0; in eap_fast_phase2_init()
965 struct eap_fast_data *data, in eap_fast_process_phase2_response() argument
974 const struct eap_method *m = data->phase2_method; in eap_fast_process_phase2_response()
975 void *priv = data->phase2_priv; in eap_fast_process_phase2_response()
996 next_type = eap_fast_req_failure(sm, data); in eap_fast_process_phase2_response()
997 eap_fast_phase2_init(sm, data, next_vendor, next_type); in eap_fast_process_phase2_response()
1013 next_type = eap_fast_req_failure(sm, data); in eap_fast_process_phase2_response()
1015 eap_fast_phase2_init(sm, data, next_vendor, next_type); in eap_fast_process_phase2_response()
1024 eap_fast_req_failure(sm, data); in eap_fast_process_phase2_response()
1036 next_type = eap_fast_req_failure(sm, data); in eap_fast_process_phase2_response()
1037 eap_fast_phase2_init(sm, data, next_vendor, next_type); in eap_fast_process_phase2_response()
1041 switch (data->state) { in eap_fast_process_phase2_response()
1049 next_type = eap_fast_req_failure(sm, data); in eap_fast_process_phase2_response()
1053 eap_fast_state(data, PHASE2_METHOD); in eap_fast_process_phase2_response()
1054 if (data->anon_provisioning) { in eap_fast_process_phase2_response()
1072 eap_fast_update_icmk(sm, data); in eap_fast_process_phase2_response()
1073 eap_fast_state(data, CRYPTO_BINDING); in eap_fast_process_phase2_response()
1074 data->eap_seq++; in eap_fast_process_phase2_response()
1078 if (sm->cfg->tnc && !data->tnc_started) { in eap_fast_process_phase2_response()
1082 data->tnc_started = 1; in eap_fast_process_phase2_response()
1090 __func__, data->state); in eap_fast_process_phase2_response()
1094 eap_fast_phase2_init(sm, data, next_vendor, next_type); in eap_fast_process_phase2_response()
1099 struct eap_fast_data *data, in eap_fast_process_phase2_eap() argument
1109 eap_fast_req_failure(sm, data); in eap_fast_process_phase2_eap()
1117 eap_fast_req_failure(sm, data); in eap_fast_process_phase2_eap()
1125 eap_fast_process_phase2_response(sm, data, (u8 *) hdr, len); in eap_fast_process_phase2_eap()
1135 static int eap_fast_parse_tlvs(struct wpabuf *data, in eap_fast_parse_tlvs() argument
1144 pos = wpabuf_mhead(data); in eap_fast_parse_tlvs()
1145 end = pos + wpabuf_len(data); in eap_fast_parse_tlvs()
1185 struct eap_fast_data *data, struct eap_tlv_crypto_binding_tlv *b, in eap_fast_validate_crypto_binding() argument
1213 if (os_memcmp_const(data->crypto_binding_nonce, b->nonce, 31) != 0 || in eap_fast_validate_crypto_binding()
1214 (data->crypto_binding_nonce[31] | 1) != b->nonce[31]) { in eap_fast_validate_crypto_binding()
1225 hmac_sha1(data->cmk, EAP_FAST_CMK_LEN, (u8 *) b, bind_len, in eap_fast_validate_crypto_binding()
1256 struct eap_fast_data *data, in eap_fast_process_phase2_tlvs() argument
1260 int check_crypto_binding = data->state == CRYPTO_BINDING; in eap_fast_process_phase2_tlvs()
1271 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1275 if (data->state == REQUEST_PAC) { in eap_fast_process_phase2_tlvs()
1280 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1292 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1298 eap_fast_state(data, (data->anon_provisioning || in eap_fast_process_phase2_tlvs()
1299 data->send_new_pac == 2) ? in eap_fast_process_phase2_tlvs()
1308 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1312 if (data->final_result && in eap_fast_process_phase2_tlvs()
1316 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1320 if (!data->final_result && in eap_fast_process_phase2_tlvs()
1324 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1328 if (eap_fast_validate_crypto_binding(data, tlv.crypto_binding, in eap_fast_process_phase2_tlvs()
1330 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1336 if (data->final_result) { in eap_fast_process_phase2_tlvs()
1341 if (data->anon_provisioning && in eap_fast_process_phase2_tlvs()
1347 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1359 eap_fast_state(data, FAILURE); in eap_fast_process_phase2_tlvs()
1363 if (data->anon_provisioning || in eap_fast_process_phase2_tlvs()
1369 eap_fast_state(data, REQUEST_PAC); in eap_fast_process_phase2_tlvs()
1370 } else if (data->send_new_pac) { in eap_fast_process_phase2_tlvs()
1373 eap_fast_state(data, REQUEST_PAC); in eap_fast_process_phase2_tlvs()
1374 } else if (data->final_result) in eap_fast_process_phase2_tlvs()
1375 eap_fast_state(data, SUCCESS); in eap_fast_process_phase2_tlvs()
1379 eap_fast_process_phase2_eap(sm, data, tlv.eap_payload_tlv, in eap_fast_process_phase2_tlvs()
1386 struct eap_fast_data *data, in eap_fast_process_phase2() argument
1394 if (data->pending_phase2_resp) { in eap_fast_process_phase2()
1397 eap_fast_process_phase2_tlvs(sm, data, in eap_fast_process_phase2()
1398 data->pending_phase2_resp); in eap_fast_process_phase2()
1399 wpabuf_free(data->pending_phase2_resp); in eap_fast_process_phase2()
1400 data->pending_phase2_resp = NULL; in eap_fast_process_phase2()
1404 in_decrypted = tls_connection_decrypt(sm->cfg->ssl_ctx, data->ssl.conn, in eap_fast_process_phase2()
1409 eap_fast_state(data, FAILURE); in eap_fast_process_phase2()
1416 eap_fast_process_phase2_tlvs(sm, data, in_decrypted); in eap_fast_process_phase2()
1421 wpabuf_free(data->pending_phase2_resp); in eap_fast_process_phase2()
1422 data->pending_phase2_resp = in_decrypted; in eap_fast_process_phase2()
1433 struct eap_fast_data *data = priv; in eap_fast_process_version() local
1435 data->peer_version = peer_version; in eap_fast_process_version()
1437 if (data->force_version >= 0 && peer_version != data->force_version) { in eap_fast_process_version()
1440 data->force_version, peer_version); in eap_fast_process_version()
1444 if (peer_version < data->fast_version) { in eap_fast_process_version()
1447 peer_version, data->fast_version, peer_version); in eap_fast_process_version()
1448 data->fast_version = peer_version; in eap_fast_process_version()
1456 struct eap_fast_data *data) in eap_fast_process_phase1() argument
1458 if (eap_server_tls_phase1(sm, &data->ssl) < 0) { in eap_fast_process_phase1()
1460 eap_fast_state(data, FAILURE); in eap_fast_process_phase1()
1464 if (!tls_connection_established(sm->cfg->ssl_ctx, data->ssl.conn) || in eap_fast_process_phase1()
1465 wpabuf_len(data->ssl.tls_out) > 0) in eap_fast_process_phase1()
1474 return eap_fast_phase1_done(sm, data); in eap_fast_process_phase1()
1479 struct eap_fast_data *data) in eap_fast_process_phase2_start() argument
1484 if (data->identity) { in eap_fast_process_phase2_start()
1486 sm->identity = data->identity; in eap_fast_process_phase2_start()
1487 data->identity = NULL; in eap_fast_process_phase2_start()
1488 sm->identity_len = data->identity_len; in eap_fast_process_phase2_start()
1489 data->identity_len = 0; in eap_fast_process_phase2_start()
1497 next_type = eap_fast_req_failure(sm, data); in eap_fast_process_phase2_start()
1506 eap_fast_state(data, PHASE2_METHOD); in eap_fast_process_phase2_start()
1508 eap_fast_state(data, PHASE2_ID); in eap_fast_process_phase2_start()
1513 return eap_fast_phase2_init(sm, data, next_vendor, next_type); in eap_fast_process_phase2_start()
1520 struct eap_fast_data *data = priv; in eap_fast_process_msg() local
1522 switch (data->state) { in eap_fast_process_msg()
1524 if (eap_fast_process_phase1(sm, data)) in eap_fast_process_msg()
1529 eap_fast_process_phase2_start(sm, data); in eap_fast_process_msg()
1535 eap_fast_process_phase2(sm, data, data->ssl.tls_in); in eap_fast_process_msg()
1539 data->state, __func__); in eap_fast_process_msg()
1548 struct eap_fast_data *data = priv; in eap_fast_process() local
1549 if (eap_server_tls_process(sm, &data->ssl, respData, data, in eap_fast_process()
1552 eap_fast_state(data, FAILURE); in eap_fast_process()
1558 struct eap_fast_data *data = priv; in eap_fast_isDone() local
1559 return data->state == SUCCESS || data->state == FAILURE; in eap_fast_isDone()
1565 struct eap_fast_data *data = priv; in eap_fast_getKey() local
1568 if (data->state != SUCCESS) in eap_fast_getKey()
1575 if (eap_fast_derive_eap_msk(data->simck, eapKeyData) < 0) { in eap_fast_getKey()
1587 struct eap_fast_data *data = priv; in eap_fast_get_emsk() local
1590 if (data->state != SUCCESS) in eap_fast_get_emsk()
1597 if (eap_fast_derive_eap_emsk(data->simck, eapKeyData) < 0) { in eap_fast_get_emsk()
1609 struct eap_fast_data *data = priv; in eap_fast_isSuccess() local
1610 return data->state == SUCCESS; in eap_fast_isSuccess()
1616 struct eap_fast_data *data = priv; in eap_fast_get_session_id() local
1618 if (data->state != SUCCESS) in eap_fast_get_session_id()
1621 return eap_server_tls_derive_session_id(sm, &data->ssl, EAP_TYPE_FAST, in eap_fast_get_session_id()