static u8 * eap_gpsk_process_gpsk_1(struct eap_sm *sm, struct eap_gpsk_data *data, struct eap_method_ret *ret, const u8 *reqData, size_t reqDataLen, const u8 *payload, size_t payload_len, size_t *respDataLen) { size_t csuite_list_len; const u8 *csuite_list, *pos, *end; const struct eap_hdr *req; u8 *resp; if (data->state != GPSK_1) { ret->ignore = TRUE; return NULL; } wpa_printf(MSG_DEBUG, "EAP-GPSK: Received Request/GPSK-1"); end = payload + payload_len; pos = eap_gpsk_process_id_server(data, payload, end); pos = eap_gpsk_process_rand_server(data, pos, end); pos = eap_gpsk_process_csuite_list(sm, data, &csuite_list, &csuite_list_len, pos, end); if (pos == NULL) { eap_gpsk_state(data, FAILURE); return NULL; } req = (const struct eap_hdr *) reqData; resp = eap_gpsk_send_gpsk_2(data, req->identifier, csuite_list, csuite_list_len, respDataLen); if (resp == NULL) return NULL; eap_gpsk_state(data, GPSK_3); return (u8 *) resp; }
static struct wpabuf * eap_gpsk_process_gpsk_1(struct eap_sm *sm, struct eap_gpsk_data *data, struct eap_method_ret *ret, const struct wpabuf *reqData, const u8 *payload, size_t payload_len) { size_t csuite_list_len; const u8 *csuite_list, *pos, *end; struct wpabuf *resp; if (data->state != GPSK_1) { ret->ignore = TRUE; return NULL; } wpa_printf(MSG_DEBUG, "EAP-GPSK: Received Request/GPSK-1"); end = payload + payload_len; pos = eap_gpsk_process_id_server(data, payload, end); pos = eap_gpsk_process_rand_server(data, pos, end); pos = eap_gpsk_process_csuite_list(sm, data, &csuite_list, &csuite_list_len, pos, end); if (pos == NULL) { ret->methodState = METHOD_DONE; eap_gpsk_state(data, FAILURE); return NULL; } resp = eap_gpsk_send_gpsk_2(data, eap_get_id(reqData), csuite_list, csuite_list_len); if (resp == NULL) return NULL; eap_gpsk_state(data, GPSK_3); return resp; }