Lines Matching refs:data

59 static int eap_peap_phase2_init(struct eap_sm *sm, struct eap_peap_data *data,
96 static void eap_peap_state(struct eap_peap_data *data, int state) in eap_peap_state() argument
99 eap_peap_state_txt(data->state), in eap_peap_state()
101 data->state = state; in eap_peap_state()
103 tls_connection_remove_session(data->ssl.conn); in eap_peap_state()
108 struct eap_peap_data *data) in eap_peap_valid_session() argument
113 tls_connection_resumed(sm->cfg->ssl_ctx, data->ssl.conn)) in eap_peap_valid_session()
132 tls_connection_set_success_data(data->ssl.conn, buf); in eap_peap_valid_session()
137 struct eap_peap_data *data) in eap_peap_req_success() argument
139 if (data->state == FAILURE || data->state == FAILURE_REQ) { in eap_peap_req_success()
140 eap_peap_state(data, FAILURE); in eap_peap_req_success()
144 if (data->peap_version == 0) { in eap_peap_req_success()
145 data->tlv_request = TLV_REQ_SUCCESS; in eap_peap_req_success()
146 eap_peap_state(data, PHASE2_TLV); in eap_peap_req_success()
148 eap_peap_state(data, SUCCESS_REQ); in eap_peap_req_success()
154 struct eap_peap_data *data) in eap_peap_req_failure() argument
156 if (data->state == FAILURE || data->state == FAILURE_REQ || in eap_peap_req_failure()
157 data->state == SUCCESS_REQ || data->tlv_request != TLV_REQ_NONE) { in eap_peap_req_failure()
158 eap_peap_state(data, FAILURE); in eap_peap_req_failure()
162 if (data->peap_version == 0) { in eap_peap_req_failure()
163 data->tlv_request = TLV_REQ_FAILURE; in eap_peap_req_failure()
164 eap_peap_state(data, PHASE2_TLV); in eap_peap_req_failure()
166 eap_peap_state(data, FAILURE_REQ); in eap_peap_req_failure()
173 struct eap_peap_data *data; in eap_peap_init() local
175 data = os_zalloc(sizeof(*data)); in eap_peap_init()
176 if (data == NULL) in eap_peap_init()
178 data->peap_version = EAP_PEAP_VERSION; in eap_peap_init()
179 data->force_version = -1; in eap_peap_init()
181 data->force_version = sm->user->force_version; in eap_peap_init()
183 data->force_version); in eap_peap_init()
184 data->peap_version = data->force_version; in eap_peap_init()
186 data->state = START; in eap_peap_init()
187 data->crypto_binding = OPTIONAL_BINDING; in eap_peap_init()
189 if (eap_server_tls_ssl_init(sm, &data->ssl, 0, EAP_TYPE_PEAP)) { in eap_peap_init()
191 eap_peap_reset(sm, data); in eap_peap_init()
195 return data; in eap_peap_init()
201 struct eap_peap_data *data = priv; in eap_peap_reset() local
202 if (data == NULL) in eap_peap_reset()
204 if (data->phase2_priv && data->phase2_method) in eap_peap_reset()
205 data->phase2_method->reset(sm, data->phase2_priv); in eap_peap_reset()
206 eap_server_tls_ssl_deinit(sm, &data->ssl); in eap_peap_reset()
207 wpabuf_free(data->pending_phase2_resp); in eap_peap_reset()
208 os_free(data->phase2_key); in eap_peap_reset()
209 wpabuf_free(data->soh_response); in eap_peap_reset()
210 bin_clear_free(data, sizeof(*data)); in eap_peap_reset()
215 struct eap_peap_data *data, u8 id) in eap_peap_build_start() argument
224 eap_peap_state(data, FAILURE); in eap_peap_build_start()
228 wpabuf_put_u8(req, EAP_TLS_FLAGS_START | data->peap_version); in eap_peap_build_start()
230 eap_peap_state(data, PHASE1); in eap_peap_build_start()
237 struct eap_peap_data *data, in eap_peap_build_phase2_req() argument
244 if (data->phase2_method == NULL || data->phase2_priv == NULL) { in eap_peap_build_phase2_req()
248 buf = data->phase2_method->buildReq(sm, data->phase2_priv, id); in eap_peap_build_phase2_req()
257 if (data->peap_version == 0 && in eap_peap_build_phase2_req()
258 data->phase2_method->method != EAP_TYPE_TLV) { in eap_peap_build_phase2_req()
264 encr_req = eap_server_tls_encrypt(sm, &data->ssl, &msgbuf); in eap_peap_build_phase2_req()
273 struct eap_peap_data *data, in eap_peap_build_phase2_soh() argument
303 encr_req = eap_server_tls_encrypt(sm, &data->ssl, &msgbuf); in eap_peap_build_phase2_soh()
311 static void eap_peap_get_isk(struct eap_peap_data *data, in eap_peap_get_isk() argument
317 if (data->phase2_key == NULL) in eap_peap_get_isk()
320 key_len = data->phase2_key_len; in eap_peap_get_isk()
323 os_memcpy(isk, data->phase2_key, key_len); in eap_peap_get_isk()
327 static int eap_peap_derive_cmk(struct eap_sm *sm, struct eap_peap_data *data) in eap_peap_derive_cmk() argument
337 if (data->ssl.tls_v13) { in eap_peap_derive_cmk()
350 tk = eap_server_tls_derive_key(sm, &data->ssl, label, in eap_peap_derive_cmk()
357 if (tls_connection_resumed(sm->cfg->ssl_ctx, data->ssl.conn)) { in eap_peap_derive_cmk()
359 os_memcpy(data->ipmk, tk, 40); in eap_peap_derive_cmk()
361 data->ipmk, 40); in eap_peap_derive_cmk()
362 os_memcpy(data->cmk, tk + 40, 20); in eap_peap_derive_cmk()
364 data->cmk, 20); in eap_peap_derive_cmk()
369 eap_peap_get_isk(data, isk, sizeof(isk)); in eap_peap_derive_cmk()
380 res = peap_prfplus(data->peap_version, tk, 40, in eap_peap_derive_cmk()
393 os_memcpy(data->ipmk, imck, 40); in eap_peap_derive_cmk()
394 wpa_hexdump_key(MSG_DEBUG, "EAP-PEAP: IPMK (S-IPMKj)", data->ipmk, 40); in eap_peap_derive_cmk()
395 os_memcpy(data->cmk, imck + 40, 20); in eap_peap_derive_cmk()
396 wpa_hexdump_key(MSG_DEBUG, "EAP-PEAP: CMK (CMKj)", data->cmk, 20); in eap_peap_derive_cmk()
404 struct eap_peap_data *data, in eap_peap_build_phase2_tlv() argument
411 if (data->peap_version == 0 && data->tlv_request == TLV_REQ_SUCCESS && in eap_peap_build_phase2_tlv()
412 data->crypto_binding != NO_BINDING) { in eap_peap_build_phase2_tlv()
415 if (data->soh_response) in eap_peap_build_phase2_tlv()
416 mlen += wpabuf_len(data->soh_response); in eap_peap_build_phase2_tlv()
430 wpabuf_put_be16(buf, data->tlv_request == TLV_REQ_SUCCESS ? in eap_peap_build_phase2_tlv()
433 if (data->peap_version == 0 && data->tlv_request == TLV_REQ_SUCCESS && in eap_peap_build_phase2_tlv()
434 data->crypto_binding != NO_BINDING) { in eap_peap_build_phase2_tlv()
442 if (data->soh_response) { in eap_peap_build_phase2_tlv()
445 wpabuf_put_buf(buf, data->soh_response); in eap_peap_build_phase2_tlv()
446 wpabuf_free(data->soh_response); in eap_peap_build_phase2_tlv()
447 data->soh_response = NULL; in eap_peap_build_phase2_tlv()
451 if (eap_peap_derive_cmk(sm, data) < 0 || in eap_peap_build_phase2_tlv()
452 random_get_bytes(data->binding_nonce, 32)) { in eap_peap_build_phase2_tlv()
468 wpabuf_put_u8(buf, data->peap_version); /* Version */ in eap_peap_build_phase2_tlv()
469 wpabuf_put_u8(buf, data->recv_version); /* RecvVersion */ in eap_peap_build_phase2_tlv()
471 wpabuf_put_data(buf, data->binding_nonce, 32); /* Nonce */ in eap_peap_build_phase2_tlv()
474 data->cmk, 20); in eap_peap_build_phase2_tlv()
479 hmac_sha1_vector(data->cmk, 20, 2, addr, len, mac); in eap_peap_build_phase2_tlv()
482 data->crypto_binding_sent = 1; in eap_peap_build_phase2_tlv()
488 encr_req = eap_server_tls_encrypt(sm, &data->ssl, buf); in eap_peap_build_phase2_tlv()
496 struct eap_peap_data *data, in eap_peap_build_phase2_term() argument
516 encr_req = eap_server_tls_encrypt(sm, &data->ssl, &msgbuf); in eap_peap_build_phase2_term()
519 if (!data->ssl.tls_v13 || in eap_peap_build_phase2_term()
520 !tls_connection_resumed(sm->cfg->ssl_ctx, data->ssl.conn)) { in eap_peap_build_phase2_term()
521 wpabuf_free(data->ssl.tls_out); in eap_peap_build_phase2_term()
522 data->ssl.tls_out_pos = 0; in eap_peap_build_phase2_term()
526 if (wpabuf_resize(&data->ssl.tls_out, wpabuf_len(encr_req)) < 0) { in eap_peap_build_phase2_term()
532 wpabuf_put_buf(data->ssl.tls_out, encr_req); in eap_peap_build_phase2_term()
537 return data->ssl.tls_out; in eap_peap_build_phase2_term()
543 struct eap_peap_data *data = priv; in eap_peap_buildReq() local
545 if (data->ssl.state == FRAG_ACK) { in eap_peap_buildReq()
547 data->peap_version); in eap_peap_buildReq()
550 if (data->ssl.state == WAIT_FRAG_ACK) { in eap_peap_buildReq()
551 return eap_server_tls_build_msg(&data->ssl, EAP_TYPE_PEAP, in eap_peap_buildReq()
552 data->peap_version, id); in eap_peap_buildReq()
555 switch (data->state) { in eap_peap_buildReq()
557 return eap_peap_build_start(sm, data, id); in eap_peap_buildReq()
561 data->ssl.conn)) { in eap_peap_buildReq()
564 eap_peap_state(data, PHASE2_START); in eap_peap_buildReq()
565 if (data->ssl.tls_v13 && data->ssl.tls_out && in eap_peap_buildReq()
566 wpabuf_len(data->ssl.tls_out) == 0) { in eap_peap_buildReq()
573 eap_peap_state(data, PHASE2_ID); in eap_peap_buildReq()
574 eap_peap_phase2_init(sm, data, EAP_VENDOR_IETF, in eap_peap_buildReq()
583 wpabuf_free(data->ssl.tls_out); in eap_peap_buildReq()
584 data->ssl.tls_out_pos = 0; in eap_peap_buildReq()
585 data->ssl.tls_out = eap_peap_build_phase2_req(sm, data, id); in eap_peap_buildReq()
589 wpabuf_free(data->ssl.tls_out); in eap_peap_buildReq()
590 data->ssl.tls_out_pos = 0; in eap_peap_buildReq()
591 data->ssl.tls_out = eap_peap_build_phase2_soh(sm, data, id); in eap_peap_buildReq()
595 wpabuf_free(data->ssl.tls_out); in eap_peap_buildReq()
596 data->ssl.tls_out_pos = 0; in eap_peap_buildReq()
597 data->ssl.tls_out = eap_peap_build_phase2_tlv(sm, data, id); in eap_peap_buildReq()
600 data->ssl.tls_out = eap_peap_build_phase2_term(sm, data, id, in eap_peap_buildReq()
604 wpabuf_free(data->ssl.tls_out); in eap_peap_buildReq()
605 data->ssl.tls_out_pos = 0; in eap_peap_buildReq()
606 data->ssl.tls_out = eap_peap_build_phase2_term(sm, data, id, in eap_peap_buildReq()
611 __func__, data->state); in eap_peap_buildReq()
615 return eap_server_tls_build_msg(&data->ssl, EAP_TYPE_PEAP, in eap_peap_buildReq()
616 data->peap_version, id); in eap_peap_buildReq()
636 static int eap_peap_phase2_init(struct eap_sm *sm, struct eap_peap_data *data, in eap_peap_phase2_init() argument
639 if (data->phase2_priv && data->phase2_method) { in eap_peap_phase2_init()
640 data->phase2_method->reset(sm, data->phase2_priv); in eap_peap_phase2_init()
641 data->phase2_method = NULL; in eap_peap_phase2_init()
642 data->phase2_priv = NULL; in eap_peap_phase2_init()
644 data->phase2_method = eap_server_get_eap_method(vendor, eap_type); in eap_peap_phase2_init()
645 if (!data->phase2_method) in eap_peap_phase2_init()
649 data->phase2_priv = data->phase2_method->init(sm); in eap_peap_phase2_init()
656 struct eap_peap_data *data, in eap_tlv_validate_cryptobinding() argument
671 if (pos[1] != data->peap_version) { in eap_tlv_validate_cryptobinding()
674 pos[1], data->peap_version); in eap_tlv_validate_cryptobinding()
690 hmac_sha1(data->cmk, 20, buf, sizeof(buf), mac); in eap_tlv_validate_cryptobinding()
695 wpa_hexdump_key(MSG_DEBUG, "EAP-PEAP: CMK", data->cmk, 20); in eap_tlv_validate_cryptobinding()
708 struct eap_peap_data *data, in eap_peap_process_phase2_tlv() argument
736 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
753 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
766 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
771 if (crypto_tlv && data->crypto_binding_sent) { in eap_peap_process_phase2_tlv()
774 if (eap_tlv_validate_cryptobinding(sm, data, crypto_tlv - 4, in eap_peap_process_phase2_tlv()
776 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
779 data->crypto_binding_used = 1; in eap_peap_process_phase2_tlv()
780 } else if (!crypto_tlv && data->crypto_binding_sent && in eap_peap_process_phase2_tlv()
781 data->crypto_binding == REQUIRE_BINDING) { in eap_peap_process_phase2_tlv()
783 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
797 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
800 requested = data->tlv_request == TLV_REQ_SUCCESS ? "Success" : in eap_peap_process_phase2_tlv()
806 if (data->tlv_request == TLV_REQ_SUCCESS) { in eap_peap_process_phase2_tlv()
807 eap_peap_state(data, SUCCESS); in eap_peap_process_phase2_tlv()
808 eap_peap_valid_session(sm, data); in eap_peap_process_phase2_tlv()
810 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
816 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
820 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_tlv()
828 struct eap_peap_data *data, in eap_peap_process_phase2_soh() argument
859 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
868 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
875 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
890 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
904 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
914 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
927 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
934 wpabuf_free(data->soh_response); in eap_peap_process_phase2_soh()
935 data->soh_response = tncs_process_soh(soh_tlv, soh_tlv_len, in eap_peap_process_phase2_soh()
938 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
943 eap_peap_state(data, FAILURE); in eap_peap_process_phase2_soh()
948 eap_peap_state(data, PHASE2_METHOD); in eap_peap_process_phase2_soh()
953 eap_peap_phase2_init(sm, data, sm->user->methods[0].vendor, next_type); in eap_peap_process_phase2_soh()
959 struct eap_peap_data *data, in eap_peap_process_phase2_response() argument
968 if (data->state == PHASE2_TLV) { in eap_peap_process_phase2_response()
969 eap_peap_process_phase2_tlv(sm, data, in_data); in eap_peap_process_phase2_response()
974 if (data->state == PHASE2_SOH) { in eap_peap_process_phase2_response()
975 eap_peap_process_phase2_soh(sm, data, in_data); in eap_peap_process_phase2_response()
980 if (data->phase2_priv == NULL) { in eap_peap_process_phase2_response()
1007 eap_peap_req_failure(sm, data); in eap_peap_process_phase2_response()
1011 eap_peap_phase2_init(sm, data, next_vendor, next_type); in eap_peap_process_phase2_response()
1015 if (data->phase2_method->check(sm, data->phase2_priv, in_data)) { in eap_peap_process_phase2_response()
1021 data->phase2_method->process(sm, data->phase2_priv, in_data); in eap_peap_process_phase2_response()
1026 wpabuf_free(data->pending_phase2_resp); in eap_peap_process_phase2_response()
1027 data->pending_phase2_resp = wpabuf_dup(in_data); in eap_peap_process_phase2_response()
1030 if (!data->phase2_method->isDone(sm, data->phase2_priv)) in eap_peap_process_phase2_response()
1033 if (!data->phase2_method->isSuccess(sm, data->phase2_priv)) { in eap_peap_process_phase2_response()
1035 eap_peap_req_failure(sm, data); in eap_peap_process_phase2_response()
1038 eap_peap_phase2_init(sm, data, next_vendor, next_type); in eap_peap_process_phase2_response()
1042 os_free(data->phase2_key); in eap_peap_process_phase2_response()
1043 if (data->phase2_method->getKey) { in eap_peap_process_phase2_response()
1044 data->phase2_key = data->phase2_method->getKey( in eap_peap_process_phase2_response()
1045 sm, data->phase2_priv, &data->phase2_key_len); in eap_peap_process_phase2_response()
1046 if (data->phase2_key == NULL) { in eap_peap_process_phase2_response()
1049 eap_peap_req_failure(sm, data); in eap_peap_process_phase2_response()
1050 eap_peap_phase2_init(sm, data, EAP_VENDOR_IETF, in eap_peap_process_phase2_response()
1056 switch (data->state) { in eap_peap_process_phase2_response()
1065 eap_peap_req_failure(sm, data); in eap_peap_process_phase2_response()
1072 if (data->state != PHASE2_SOH && sm->cfg->tnc && in eap_peap_process_phase2_response()
1073 data->peap_version == 0) { in eap_peap_process_phase2_response()
1074 eap_peap_state(data, PHASE2_SOH); in eap_peap_process_phase2_response()
1083 eap_peap_state(data, PHASE2_METHOD); in eap_peap_process_phase2_response()
1091 eap_peap_req_success(sm, data); in eap_peap_process_phase2_response()
1099 __func__, data->state); in eap_peap_process_phase2_response()
1103 eap_peap_phase2_init(sm, data, next_vendor, next_type); in eap_peap_process_phase2_response()
1108 struct eap_peap_data *data, in eap_peap_process_phase2() argument
1119 if (data->pending_phase2_resp) { in eap_peap_process_phase2()
1122 eap_peap_process_phase2_response(sm, data, in eap_peap_process_phase2()
1123 data->pending_phase2_resp); in eap_peap_process_phase2()
1124 wpabuf_free(data->pending_phase2_resp); in eap_peap_process_phase2()
1125 data->pending_phase2_resp = NULL; in eap_peap_process_phase2()
1129 in_decrypted = tls_connection_decrypt(sm->cfg->ssl_ctx, data->ssl.conn, in eap_peap_process_phase2()
1134 eap_peap_state(data, FAILURE); in eap_peap_process_phase2()
1141 if (data->peap_version == 0 && data->state != PHASE2_TLV) { in eap_peap_process_phase2()
1170 eap_peap_req_failure(sm, data); in eap_peap_process_phase2()
1180 eap_peap_req_failure(sm, data); in eap_peap_process_phase2()
1188 eap_peap_process_phase2_response(sm, data, in_decrypted); in eap_peap_process_phase2()
1192 if (data->state == SUCCESS_REQ) { in eap_peap_process_phase2()
1193 eap_peap_state(data, SUCCESS); in eap_peap_process_phase2()
1194 eap_peap_valid_session(sm, data); in eap_peap_process_phase2()
1199 eap_peap_state(data, FAILURE); in eap_peap_process_phase2()
1214 struct eap_peap_data *data = priv; in eap_peap_process_version() local
1216 data->recv_version = peer_version; in eap_peap_process_version()
1217 if (data->force_version >= 0 && peer_version != data->force_version) { in eap_peap_process_version()
1220 data->force_version, peer_version); in eap_peap_process_version()
1223 if (peer_version < data->peap_version) { in eap_peap_process_version()
1226 peer_version, data->peap_version, peer_version); in eap_peap_process_version()
1227 data->peap_version = peer_version; in eap_peap_process_version()
1237 struct eap_peap_data *data = priv; in eap_peap_process_msg() local
1239 switch (data->state) { in eap_peap_process_msg()
1241 if (eap_server_tls_phase1(sm, &data->ssl) < 0) { in eap_peap_process_msg()
1242 eap_peap_state(data, FAILURE); in eap_peap_process_msg()
1247 eap_peap_state(data, PHASE2_ID); in eap_peap_process_msg()
1248 eap_peap_phase2_init(sm, data, EAP_VENDOR_IETF, in eap_peap_process_msg()
1256 eap_peap_process_phase2(sm, data, respData, data->ssl.tls_in); in eap_peap_process_msg()
1259 eap_peap_state(data, SUCCESS); in eap_peap_process_msg()
1260 eap_peap_valid_session(sm, data); in eap_peap_process_msg()
1263 eap_peap_state(data, FAILURE); in eap_peap_process_msg()
1267 data->state, __func__); in eap_peap_process_msg()
1276 struct eap_peap_data *data = priv; in eap_peap_process() local
1281 if (eap_server_tls_process(sm, &data->ssl, respData, data, in eap_peap_process()
1284 eap_peap_state(data, FAILURE); in eap_peap_process()
1288 if (data->state == SUCCESS || in eap_peap_process()
1289 !tls_connection_established(sm->cfg->ssl_ctx, data->ssl.conn) || in eap_peap_process()
1290 !tls_connection_resumed(sm->cfg->ssl_ctx, data->ssl.conn)) in eap_peap_process()
1293 buf = tls_connection_get_success_data(data->ssl.conn); in eap_peap_process()
1297 eap_peap_state(data, FAILURE); in eap_peap_process()
1306 eap_peap_state(data, FAILURE); in eap_peap_process()
1318 eap_peap_state(data, FAILURE); in eap_peap_process()
1328 eap_peap_state(data, FAILURE); in eap_peap_process()
1334 eap_peap_req_success(sm, data); in eap_peap_process()
1335 if (data->state == SUCCESS_REQ) in eap_peap_process()
1336 tls_connection_set_success_data_resumed(data->ssl.conn); in eap_peap_process()
1342 struct eap_peap_data *data = priv; in eap_peap_isDone() local
1343 return data->state == SUCCESS || data->state == FAILURE; in eap_peap_isDone()
1349 struct eap_peap_data *data = priv; in eap_peap_getKey() local
1356 if (data->state != SUCCESS) in eap_peap_getKey()
1359 if (data->crypto_binding_used) { in eap_peap_getKey()
1366 if (peap_prfplus(data->peap_version, data->ipmk, 40, in eap_peap_getKey()
1387 if (data->ssl.tls_v13) { in eap_peap_getKey()
1396 eapKeyData = eap_server_tls_derive_key(sm, &data->ssl, in eap_peap_getKey()
1414 struct eap_peap_data *data = priv; in eap_peap_get_emsk() local
1421 if (data->state != SUCCESS) in eap_peap_get_emsk()
1424 if (data->crypto_binding_used) { in eap_peap_get_emsk()
1429 if (data->ssl.tls_v13) { in eap_peap_get_emsk()
1438 eapKeyData = eap_server_tls_derive_key(sm, &data->ssl, in eap_peap_get_emsk()
1460 struct eap_peap_data *data = priv; in eap_peap_isSuccess() local
1461 return data->state == SUCCESS; in eap_peap_isSuccess()
1467 struct eap_peap_data *data = priv; in eap_peap_get_session_id() local
1469 if (data->state != SUCCESS) in eap_peap_get_session_id()
1472 return eap_server_tls_derive_session_id(sm, &data->ssl, EAP_TYPE_PEAP, in eap_peap_get_session_id()