亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? eap_sim.c

?? 最新的Host AP 新添加了許多pcmcia 的驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
	if (attr->identity) {		os_free(sm->identity);		sm->identity = os_malloc(attr->identity_len);		if (sm->identity) {			os_memcpy(sm->identity, attr->identity,				  attr->identity_len);			sm->identity_len = attr->identity_len;		}	}	identity = NULL;	identity_len = 0;	if (sm->identity && sm->identity_len > 0 &&	    sm->identity[0] == EAP_SIM_PERMANENT_PREFIX) {		identity = sm->identity;		identity_len = sm->identity_len;	} else {		identity = eap_sim_db_get_permanent(sm->eap_sim_db_priv,						    sm->identity,						    sm->identity_len,						    &identity_len);		if (identity == NULL) {			data->reauth = eap_sim_db_get_reauth_entry(				sm->eap_sim_db_priv, sm->identity,				sm->identity_len);			if (data->reauth) {				wpa_printf(MSG_DEBUG, "EAP-SIM: Using fast "					   "re-authentication");				identity = data->reauth->identity;				identity_len = data->reauth->identity_len;				data->counter = data->reauth->counter;				os_memcpy(data->mk, data->reauth->mk,					  EAP_SIM_MK_LEN);			}		}	}	if (identity == NULL) {		wpa_printf(MSG_DEBUG, "EAP-SIM: Could not get proper permanent"			   " user name");		eap_sim_state(data, FAILURE);		return;	}	wpa_hexdump_ascii(MSG_DEBUG, "EAP-SIM: Identity",			  identity, identity_len);	if (data->reauth) {		eap_sim_state(data, REAUTH);		return;	}	if (attr->nonce_mt == NULL || attr->selected_version < 0) {		wpa_printf(MSG_DEBUG, "EAP-SIM: Start/Response missing "			   "required attributes");		eap_sim_state(data, FAILURE);		return;	}	if (!eap_sim_supported_ver(data, attr->selected_version)) {		wpa_printf(MSG_DEBUG, "EAP-SIM: Peer selected unsupported "			   "version %d", attr->selected_version);		eap_sim_state(data, FAILURE);		return;	}	data->counter = 0; /* reset re-auth counter since this is full auth */	data->reauth = NULL;	data->num_chal = eap_sim_db_get_gsm_triplets(		sm->eap_sim_db_priv, identity, identity_len,		EAP_SIM_MAX_CHAL,		(u8 *) data->rand, (u8 *) data->kc, (u8 *) data->sres, sm);	if (data->num_chal == EAP_SIM_DB_PENDING) {		wpa_printf(MSG_DEBUG, "EAP-SIM: GSM authentication triplets "			   "not yet available - pending request");		sm->method_pending = METHOD_PENDING_WAIT;		return;	}	if (data->num_chal < 2) {		wpa_printf(MSG_INFO, "EAP-SIM: Failed to get GSM "			   "authentication triplets for the peer");		eap_sim_state(data, FAILURE);		return;	}	identity_len = sm->identity_len;	while (identity_len > 0 && sm->identity[identity_len - 1] == '\0') {		wpa_printf(MSG_DEBUG, "EAP-SIM: Workaround - drop last null "			   "character from identity");		identity_len--;	}	wpa_hexdump_ascii(MSG_DEBUG, "EAP-SIM: Identity for MK derivation",			  sm->identity, identity_len);	os_memcpy(data->nonce_mt, attr->nonce_mt, EAP_SIM_NONCE_MT_LEN);	WPA_PUT_BE16(ver_list, EAP_SIM_VERSION);	eap_sim_derive_mk(sm->identity, identity_len, attr->nonce_mt,			  attr->selected_version, ver_list, sizeof(ver_list),			  data->num_chal, (const u8 *) data->kc, data->mk);	eap_sim_derive_keys(data->mk, data->k_encr, data->k_aut, data->msk,			    data->emsk);	eap_sim_state(data, CHALLENGE);}static void eap_sim_process_challenge(struct eap_sm *sm,				      struct eap_sim_data *data,				      struct wpabuf *respData,				      struct eap_sim_attrs *attr){	const u8 *identity;	size_t identity_len;	if (attr->mac == NULL ||	    eap_sim_verify_mac(data->k_aut, respData, attr->mac,			       (u8 *) data->sres,			       data->num_chal * EAP_SIM_SRES_LEN)) {		wpa_printf(MSG_WARNING, "EAP-SIM: Challenge message "			   "did not include valid AT_MAC");		eap_sim_state(data, FAILURE);		return;	}	wpa_printf(MSG_DEBUG, "EAP-SIM: Challenge response includes the "		   "correct AT_MAC");	if (sm->eap_sim_aka_result_ind && attr->result_ind) {		data->use_result_ind = 1;		data->notification = EAP_SIM_SUCCESS;		eap_sim_state(data, NOTIFICATION);	} else		eap_sim_state(data, SUCCESS);	identity = eap_sim_db_get_permanent(sm->eap_sim_db_priv, sm->identity,					    sm->identity_len, &identity_len);	if (identity == NULL) {		identity = sm->identity;		identity_len = sm->identity_len;	}	if (data->next_pseudonym) {		eap_sim_db_add_pseudonym(sm->eap_sim_db_priv, identity,					 identity_len,					 data->next_pseudonym);		data->next_pseudonym = NULL;	}	if (data->next_reauth_id) {		eap_sim_db_add_reauth(sm->eap_sim_db_priv, identity,				      identity_len,				      data->next_reauth_id, data->counter + 1,				      data->mk);		data->next_reauth_id = NULL;	}}static void eap_sim_process_reauth(struct eap_sm *sm,				   struct eap_sim_data *data,				   struct wpabuf *respData,				   struct eap_sim_attrs *attr){	struct eap_sim_attrs eattr;	u8 *decrypted = NULL;	const u8 *identity, *id2;	size_t identity_len, id2_len;	if (attr->mac == NULL ||	    eap_sim_verify_mac(data->k_aut, respData, attr->mac, data->nonce_s,			       EAP_SIM_NONCE_S_LEN)) {		wpa_printf(MSG_WARNING, "EAP-SIM: Re-authentication message "			   "did not include valid AT_MAC");		goto fail;	}	if (attr->encr_data == NULL || attr->iv == NULL) {		wpa_printf(MSG_WARNING, "EAP-SIM: Reauthentication "			   "message did not include encrypted data");		goto fail;	}	decrypted = eap_sim_parse_encr(data->k_encr, attr->encr_data,				       attr->encr_data_len, attr->iv, &eattr,				       0);	if (decrypted == NULL) {		wpa_printf(MSG_WARNING, "EAP-SIM: Failed to parse encrypted "			   "data from reauthentication message");		goto fail;	}	if (eattr.counter != data->counter) {		wpa_printf(MSG_WARNING, "EAP-SIM: Re-authentication message "			   "used incorrect counter %u, expected %u",			   eattr.counter, data->counter);		goto fail;	}	os_free(decrypted);	decrypted = NULL;	wpa_printf(MSG_DEBUG, "EAP-SIM: Re-authentication response includes "		   "the correct AT_MAC");	if (sm->eap_sim_aka_result_ind && attr->result_ind) {		data->use_result_ind = 1;		data->notification = EAP_SIM_SUCCESS;		eap_sim_state(data, NOTIFICATION);	} else		eap_sim_state(data, SUCCESS);	if (data->reauth) {		identity = data->reauth->identity;		identity_len = data->reauth->identity_len;	} else {		identity = sm->identity;		identity_len = sm->identity_len;	}	id2 = eap_sim_db_get_permanent(sm->eap_sim_db_priv, identity,				       identity_len, &id2_len);	if (id2) {		identity = id2;		identity_len = id2_len;	}	if (data->next_pseudonym) {		eap_sim_db_add_pseudonym(sm->eap_sim_db_priv, identity,					 identity_len, data->next_pseudonym);		data->next_pseudonym = NULL;	}	if (data->next_reauth_id) {		eap_sim_db_add_reauth(sm->eap_sim_db_priv, identity,				      identity_len, data->next_reauth_id,				      data->counter + 1, data->mk);		data->next_reauth_id = NULL;	} else {		eap_sim_db_remove_reauth(sm->eap_sim_db_priv, data->reauth);		data->reauth = NULL;	}	return;fail:	eap_sim_state(data, FAILURE);	eap_sim_db_remove_reauth(sm->eap_sim_db_priv, data->reauth);	data->reauth = NULL;	os_free(decrypted);}static void eap_sim_process_client_error(struct eap_sm *sm,					 struct eap_sim_data *data,					 struct wpabuf *respData,					 struct eap_sim_attrs *attr){	wpa_printf(MSG_DEBUG, "EAP-SIM: Client reported error %d",		   attr->client_error_code);	if (data->notification == EAP_SIM_SUCCESS && data->use_result_ind)		eap_sim_state(data, SUCCESS);	else		eap_sim_state(data, FAILURE);}static void eap_sim_process_notification(struct eap_sm *sm,					 struct eap_sim_data *data,					 struct wpabuf *respData,					 struct eap_sim_attrs *attr){	wpa_printf(MSG_DEBUG, "EAP-SIM: Client replied to notification");	if (data->notification == EAP_SIM_SUCCESS && data->use_result_ind)		eap_sim_state(data, SUCCESS);	else		eap_sim_state(data, FAILURE);}static void eap_sim_process(struct eap_sm *sm, void *priv,			    struct wpabuf *respData){	struct eap_sim_data *data = priv;	const u8 *pos, *end;	u8 subtype;	size_t len;	struct eap_sim_attrs attr;	pos = eap_hdr_validate(EAP_VENDOR_IETF, EAP_TYPE_SIM, respData, &len);	if (pos == NULL || len < 3)		return;	end = pos + len;	subtype = *pos;	pos += 3;	if (eap_sim_parse_attr(pos, end, &attr, 0, 0)) {		wpa_printf(MSG_DEBUG, "EAP-SIM: Failed to parse attributes");		eap_sim_state(data, FAILURE);		return;	}	if (subtype == EAP_SIM_SUBTYPE_CLIENT_ERROR) {		eap_sim_process_client_error(sm, data, respData, &attr);		return;	}	switch (data->state) {	case START:		eap_sim_process_start(sm, data, respData, &attr);		break;	case CHALLENGE:		eap_sim_process_challenge(sm, data, respData, &attr);		break;	case REAUTH:		eap_sim_process_reauth(sm, data, respData, &attr);		break;	case NOTIFICATION:		eap_sim_process_notification(sm, data, respData, &attr);		break;	default:		wpa_printf(MSG_DEBUG, "EAP-SIM: Unknown state %d in "			   "process", data->state);		break;	}}static Boolean eap_sim_isDone(struct eap_sm *sm, void *priv){	struct eap_sim_data *data = priv;	return data->state == SUCCESS || data->state == FAILURE;}static u8 * eap_sim_getKey(struct eap_sm *sm, void *priv, size_t *len){	struct eap_sim_data *data = priv;	u8 *key;	if (data->state != SUCCESS)		return NULL;	key = os_malloc(EAP_SIM_KEYING_DATA_LEN);	if (key == NULL)		return NULL;	os_memcpy(key, data->msk, EAP_SIM_KEYING_DATA_LEN);	*len = EAP_SIM_KEYING_DATA_LEN;	return key;}static u8 * eap_sim_get_emsk(struct eap_sm *sm, void *priv, size_t *len){	struct eap_sim_data *data = priv;	u8 *key;	if (data->state != SUCCESS)		return NULL;	key = os_malloc(EAP_EMSK_LEN);	if (key == NULL)		return NULL;	os_memcpy(key, data->emsk, EAP_EMSK_LEN);	*len = EAP_EMSK_LEN;	return key;}static Boolean eap_sim_isSuccess(struct eap_sm *sm, void *priv){	struct eap_sim_data *data = priv;	return data->state == SUCCESS;}int eap_server_sim_register(void){	struct eap_method *eap;	int ret;	eap = eap_server_method_alloc(EAP_SERVER_METHOD_INTERFACE_VERSION,				      EAP_VENDOR_IETF, EAP_TYPE_SIM, "SIM");	if (eap == NULL)		return -1;	eap->init = eap_sim_init;	eap->reset = eap_sim_reset;	eap->buildReq = eap_sim_buildReq;	eap->check = eap_sim_check;	eap->process = eap_sim_process;	eap->isDone = eap_sim_isDone;	eap->getKey = eap_sim_getKey;	eap->isSuccess = eap_sim_isSuccess;	eap->get_emsk = eap_sim_get_emsk;	ret = eap_server_method_register(eap);	if (ret)		eap_server_method_free(eap);	return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品成人悠悠色影视| 日韩精品一级二级 | 91原创在线视频| 欧美一区二区在线不卡| 最新日韩在线视频| 国产精品66部| 日韩精品一区二区三区在线观看 | 欧美蜜桃一区二区三区| 国产精品素人一区二区| 美腿丝袜亚洲一区| 欧美猛男男办公室激情| 一区二区三区中文在线观看| 国产91在线|亚洲| 欧美成人伊人久久综合网| 亚洲综合区在线| 91美女在线看| 中文字幕综合网| 99久久亚洲一区二区三区青草| 精品国产91洋老外米糕| 久久超碰97中文字幕| 欧美精品日日鲁夜夜添| 亚洲图片欧美视频| 91亚洲精品乱码久久久久久蜜桃| 欧美国产在线观看| 成人午夜大片免费观看| 国产午夜精品一区二区三区嫩草| 激情小说欧美图片| 亚洲最大的成人av| 91亚洲精品乱码久久久久久蜜桃| 国产精品麻豆一区二区| www.欧美.com| 亚洲手机成人高清视频| 一本大道久久a久久综合| 亚洲精品高清视频在线观看| 久久人人97超碰com| 狠狠v欧美v日韩v亚洲ⅴ| 欧美午夜精品一区二区三区| 一区二区三区丝袜| 在线观看视频一区| 亚洲午夜久久久久久久久久久| 一本大道综合伊人精品热热| 亚洲精品久久嫩草网站秘色| 日本韩国一区二区| 亚洲二区视频在线| 欧美一区2区视频在线观看| 免费成人在线播放| 欧美成人伊人久久综合网| 国内精品伊人久久久久av一坑| 久久久亚洲精华液精华液精华液 | 国产精品伦理一区二区| 99久久久精品免费观看国产蜜| 亚洲免费在线播放| 日韩一区二区三| 国产盗摄视频一区二区三区| 国产精品久久三| 欧美亚洲国产一区二区三区va| 爽爽淫人综合网网站| 精品理论电影在线观看| 成人激情免费电影网址| 亚洲国产精品一区二区www在线| 91精品国产综合久久久久久久久久 | 亚洲综合激情网| 91精品国产一区二区三区香蕉| 久久精品国产成人一区二区三区| 国产视频一区二区三区在线观看| 91在线观看下载| 奇米影视一区二区三区| 国产精品短视频| 91精品国产入口| 成a人片国产精品| 蜜臀久久99精品久久久久久9| 国产精品乱码一区二区三区软件| 在线不卡中文字幕播放| 成人毛片在线观看| 男女视频一区二区| 一区二区三区在线免费| 久久九九99视频| 欧美精品乱人伦久久久久久| 成人爱爱电影网址| 久久99精品久久久久久| 一区二区欧美精品| 国产无人区一区二区三区| 欧美撒尿777hd撒尿| 国产一区二区三区不卡在线观看 | 国产精品每日更新在线播放网址 | 91亚洲午夜精品久久久久久| 国产一区在线看| 日韩精品久久理论片| 最新国产精品久久精品| 精品久久久久久久久久久久久久久 | 五月天中文字幕一区二区| 国产精品久久久久影视| 久久久久久免费毛片精品| 3d动漫精品啪啪| 欧美在线你懂得| 99国产精品国产精品毛片| 国产一二三精品| 激情丁香综合五月| 毛片av中文字幕一区二区| 午夜久久久久久久久久一区二区| 亚洲免费观看高清完整| 国产精品久久久久久久裸模| 欧美极品xxx| 久久精品水蜜桃av综合天堂| 精品少妇一区二区三区视频免付费| 欧美日韩高清不卡| 欧美日韩情趣电影| 欧美精品vⅰdeose4hd| 91福利精品视频| 欧美在线一二三四区| 欧美性猛交xxxx黑人交| 在线中文字幕一区| 欧美性感一类影片在线播放| 日本久久精品电影| 欧美色涩在线第一页| 欧美日韩激情一区| 欧美高清一级片在线| 欧美高清视频一二三区 | 国产日韩欧美麻豆| 国产丝袜美腿一区二区三区| 国产亚洲欧美在线| 亚洲欧洲日韩女同| 亚洲日本在线天堂| 亚洲午夜在线电影| 日本亚洲三级在线| 国产一区二区不卡老阿姨| 高清在线不卡av| 一本大道久久a久久综合| 欧洲一区二区三区免费视频| 欧美伦理视频网站| 欧美mv日韩mv国产网站app| 2021中文字幕一区亚洲| 欧美韩国一区二区| 亚洲黄色av一区| 日本va欧美va欧美va精品| 国内不卡的二区三区中文字幕| 国产一区二区在线电影| 99re这里只有精品视频首页| 欧美亚洲综合另类| 欧美电影精品一区二区| 欧美国产精品劲爆| 亚洲二区视频在线| 国产伦精品一区二区三区视频青涩| 懂色av一区二区三区蜜臀| 91麻豆国产精品久久| 91麻豆精品久久久久蜜臀| 久久久久久久久伊人| 亚洲一区中文日韩| 九九九久久久精品| 色综合久久综合| 欧美不卡一区二区三区| 日韩伦理免费电影| 午夜精品成人在线视频| 国产成人亚洲精品青草天美| 91久久一区二区| 精品噜噜噜噜久久久久久久久试看| 中文字幕日本不卡| 免费观看一级欧美片| 成人动漫视频在线| 日韩精品一区二区在线观看| 亚洲男人的天堂在线aⅴ视频| 美腿丝袜亚洲三区| 日本精品裸体写真集在线观看| 精品国产伦一区二区三区观看方式 | 国产一区二区h| 欧美三级电影在线看| 国产精品欧美久久久久无广告| 日韩二区三区在线观看| 在线精品国精品国产尤物884a | 日韩欧美亚洲另类制服综合在线 | 中文字幕一区在线观看| 韩国理伦片一区二区三区在线播放| 91丨porny丨首页| 久久九九全国免费| 精久久久久久久久久久| 91精品国产色综合久久不卡电影| 亚洲裸体xxx| 成+人+亚洲+综合天堂| 国产亚洲精品aa午夜观看| 蜜桃av一区二区三区电影| 欧美性猛交一区二区三区精品| 成人欧美一区二区三区白人| 韩国精品主播一区二区在线观看| 7799精品视频| 天堂一区二区在线免费观看| 欧美在线影院一区二区| 久久成人综合网| 日韩欧美亚洲国产另类| 日本麻豆一区二区三区视频| 欧美日韩精品三区| 午夜精品久久久久久久久| 欧美中文一区二区三区| 亚洲欧美日本韩国| 91视频www| 一区二区视频免费在线观看| 色综合久久综合| 亚洲在线观看免费视频| 欧美熟乱第一页| 日韩高清不卡一区二区三区| 91.xcao|