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

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

?? eap_fast.c

?? 最新的Host AP 新添加了許多pcmcia 的驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:
	switch (hdr->code) {	case EAP_CODE_RESPONSE:		eap_fast_process_phase2_response(sm, data, (u8 *) hdr, len);		break;	default:		wpa_printf(MSG_INFO, "EAP-FAST: Unexpected code=%d in "			   "Phase 2 EAP header", hdr->code);		break;	}}static int eap_fast_parse_tlvs(u8 *data, size_t data_len,			       struct eap_fast_tlv_parse *tlv){	int mandatory, tlv_type, len, res;	u8 *pos, *end;	os_memset(tlv, 0, sizeof(*tlv));	pos = data;	end = data + data_len;	while (pos + 4 < end) {		mandatory = pos[0] & 0x80;		tlv_type = WPA_GET_BE16(pos) & 0x3fff;		pos += 2;		len = WPA_GET_BE16(pos);		pos += 2;		if (pos + len > end) {			wpa_printf(MSG_INFO, "EAP-FAST: TLV overflow");			return -1;		}		wpa_printf(MSG_DEBUG, "EAP-FAST: Received Phase 2: "			   "TLV type %d length %d%s",			   tlv_type, len, mandatory ? " (mandatory)" : "");		res = eap_fast_parse_tlv(tlv, tlv_type, pos, len);		if (res == -2)			break;		if (res < 0) {			if (mandatory) {				wpa_printf(MSG_DEBUG, "EAP-FAST: Nak unknown "					   "mandatory TLV type %d", tlv_type);				/* TODO: generate Nak TLV */				break;			} else {				wpa_printf(MSG_DEBUG, "EAP-FAST: Ignored "					   "unknown optional TLV type %d",					   tlv_type);			}		}		pos += len;	}	return 0;}static int eap_fast_validate_crypto_binding(	struct eap_fast_data *data, struct eap_tlv_crypto_binding_tlv *b,	size_t bind_len){	u8 cmac[SHA1_MAC_LEN];	wpa_printf(MSG_DEBUG, "EAP-FAST: Reply Crypto-Binding TLV: "		   "Version %d Received Version %d SubType %d",		   b->version, b->received_version, b->subtype);	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: NONCE",		    b->nonce, sizeof(b->nonce));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Compound MAC",		    b->compound_mac, sizeof(b->compound_mac));	if (b->version != EAP_FAST_VERSION ||	    b->received_version != EAP_FAST_VERSION) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Unexpected version "			   "in Crypto-Binding: version %d "			   "received_version %d", b->version,			   b->received_version);		return -1;	}	if (b->subtype != EAP_TLV_CRYPTO_BINDING_SUBTYPE_RESPONSE) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Unexpected subtype in "			   "Crypto-Binding: %d", b->subtype);		return -1;	}	if (os_memcmp(data->crypto_binding_nonce, b->nonce, 31) != 0 ||	    (data->crypto_binding_nonce[31] | 1) != b->nonce[31]) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Invalid nonce in "			   "Crypto-Binding");		return -1;	}	os_memcpy(cmac, b->compound_mac, sizeof(cmac));	os_memset(b->compound_mac, 0, sizeof(cmac));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Crypto-Binding TLV for "		    "Compound MAC calculation",		    (u8 *) b, bind_len);	hmac_sha1(data->cmk, EAP_FAST_CMK_LEN, (u8 *) b, bind_len,		  b->compound_mac);	if (os_memcmp(cmac, b->compound_mac, sizeof(cmac)) != 0) {		wpa_hexdump(MSG_MSGDUMP,			    "EAP-FAST: Calculated Compound MAC",			    b->compound_mac, sizeof(cmac));		wpa_printf(MSG_INFO, "EAP-FAST: Compound MAC did not "			   "match");		return -1;	}	return 0;}static int eap_fast_pac_type(u8 *pac, size_t len, u16 type){	struct eap_tlv_pac_type_tlv *tlv;	if (pac == NULL || len != sizeof(*tlv))		return 0;	tlv = (struct eap_tlv_pac_type_tlv *) pac;	return be_to_host16(tlv->tlv_type) == PAC_TYPE_PAC_TYPE &&		be_to_host16(tlv->length) == 2 &&		be_to_host16(tlv->pac_type) == type;}static void eap_fast_process_phase2_tlvs(struct eap_sm *sm,					 struct eap_fast_data *data,					 u8 *in_data, size_t in_len){	struct eap_fast_tlv_parse tlv;	int check_crypto_binding = data->state == CRYPTO_BINDING;	if (eap_fast_parse_tlvs(in_data, in_len, &tlv) < 0) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Failed to parse received "			   "Phase 2 TLVs");		return;	}	if (tlv.result == EAP_TLV_RESULT_FAILURE) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Result TLV indicated "			   "failure");		eap_fast_state(data, FAILURE);		return;	}	if (data->state == REQUEST_PAC) {		u16 type, len, res;		if (tlv.pac == NULL || tlv.pac_len < 6) {			wpa_printf(MSG_DEBUG, "EAP-FAST: No PAC "				   "Acknowledgement received");			eap_fast_state(data, FAILURE);			return;		}		type = WPA_GET_BE16(tlv.pac);		len = WPA_GET_BE16(tlv.pac + 2);		res = WPA_GET_BE16(tlv.pac + 4);		if (type != PAC_TYPE_PAC_ACKNOWLEDGEMENT || len != 2 ||		    res != EAP_TLV_RESULT_SUCCESS) {			wpa_printf(MSG_DEBUG, "EAP-FAST: PAC TLV did not "				   "contain acknowledgement");			eap_fast_state(data, FAILURE);			return;		}		wpa_printf(MSG_DEBUG, "EAP-FAST: PAC-Acknowledgement received "			   "- PAC provisioning succeeded");		eap_fast_state(data, (data->anon_provisioning ||				      data->send_new_pac == 2) ?			       FAILURE : SUCCESS);		return;	}	if (check_crypto_binding) {		if (tlv.crypto_binding == NULL) {			wpa_printf(MSG_DEBUG, "EAP-FAST: No Crypto-Binding "				   "TLV received");			eap_fast_state(data, FAILURE);			return;		}		if (data->final_result &&		    tlv.result != EAP_TLV_RESULT_SUCCESS) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Crypto-Binding TLV "				   "without Success Result");			eap_fast_state(data, FAILURE);			return;		}		if (!data->final_result &&		    tlv.iresult != EAP_TLV_RESULT_SUCCESS) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Crypto-Binding TLV "				   "without intermediate Success Result");			eap_fast_state(data, FAILURE);			return;		}		if (eap_fast_validate_crypto_binding(data, tlv.crypto_binding,						     tlv.crypto_binding_len)) {			eap_fast_state(data, FAILURE);			return;		}		wpa_printf(MSG_DEBUG, "EAP-FAST: Valid Crypto-Binding TLV "			   "received");		if (data->final_result) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Authentication "				   "completed successfully");		}		if (data->anon_provisioning &&		    sm->eap_fast_prov != ANON_PROV &&		    sm->eap_fast_prov != BOTH_PROV) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Client is trying to "				   "use unauthenticated provisioning which is "				   "disabled");			eap_fast_state(data, FAILURE);			return;		}		if (sm->eap_fast_prov != AUTH_PROV &&		    sm->eap_fast_prov != BOTH_PROV &&		    tlv.request_action == EAP_TLV_ACTION_PROCESS_TLV &&		    eap_fast_pac_type(tlv.pac, tlv.pac_len,				      PAC_TYPE_TUNNEL_PAC)) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Client is trying to "				   "use authenticated provisioning which is "				   "disabled");			eap_fast_state(data, FAILURE);			return;		}		if (data->anon_provisioning ||		    (tlv.request_action == EAP_TLV_ACTION_PROCESS_TLV &&		     eap_fast_pac_type(tlv.pac, tlv.pac_len,				       PAC_TYPE_TUNNEL_PAC))) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Requested a new "				   "Tunnel PAC");			eap_fast_state(data, REQUEST_PAC);		} else if (data->send_new_pac) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Server triggered "				   "re-keying of Tunnel PAC");			eap_fast_state(data, REQUEST_PAC);		} else if (data->final_result)			eap_fast_state(data, SUCCESS);	}	if (tlv.eap_payload_tlv) {		eap_fast_process_phase2_eap(sm, data, tlv.eap_payload_tlv,					    tlv.eap_payload_tlv_len);	}}static void eap_fast_process_phase2(struct eap_sm *sm,				    struct eap_fast_data *data,				    struct wpabuf *in_buf){	u8 *in_decrypted;	int len_decrypted;	size_t buf_len;	u8 *in_data;	size_t in_len;	in_data = wpabuf_mhead(in_buf);	in_len = wpabuf_len(in_buf);	wpa_printf(MSG_DEBUG, "EAP-FAST: Received %lu bytes encrypted data for"		   " Phase 2", (unsigned long) in_len);	if (data->pending_phase2_resp) {		wpa_printf(MSG_DEBUG, "EAP-PEAP: Pending Phase 2 response - "			   "skip decryption and use old data");		eap_fast_process_phase2_tlvs(			sm, data, wpabuf_mhead(data->pending_phase2_resp),			wpabuf_len(data->pending_phase2_resp));		wpabuf_free(data->pending_phase2_resp);		data->pending_phase2_resp = NULL;		return;	}	buf_len = in_len;	/*	 * Even though we try to disable TLS compression, it is possible that	 * this cannot be done with all TLS libraries. Add extra buffer space	 * to handle the possibility of the decrypted data being longer than	 * input data.	 */	buf_len += 500;	buf_len *= 3;	in_decrypted = os_malloc(buf_len);	if (in_decrypted == NULL) {		wpa_printf(MSG_WARNING, "EAP-FAST: Failed to allocate memory "			   "for decryption");		return;	}	len_decrypted = tls_connection_decrypt(sm->ssl_ctx, data->ssl.conn,					       in_data, in_len,					       in_decrypted, buf_len);	if (len_decrypted < 0) {		wpa_printf(MSG_INFO, "EAP-FAST: Failed to decrypt Phase 2 "			   "data");		os_free(in_decrypted);		eap_fast_state(data, FAILURE);		return;	}	wpa_hexdump_key(MSG_DEBUG, "EAP-FAST: Decrypted Phase 2 TLVs",			in_decrypted, len_decrypted);	eap_fast_process_phase2_tlvs(sm, data, in_decrypted, len_decrypted);	if (sm->method_pending == METHOD_PENDING_WAIT) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Phase2 method is in "			   "pending wait state - save decrypted response");		wpabuf_free(data->pending_phase2_resp);		data->pending_phase2_resp = wpabuf_alloc_copy(in_decrypted,							      len_decrypted);	}	os_free(in_decrypted);}static int eap_fast_process_version(struct eap_sm *sm, void *priv,				    int peer_version){	struct eap_fast_data *data = priv;	data->peer_version = peer_version;	if (data->force_version >= 0 && peer_version != data->force_version) {		wpa_printf(MSG_INFO, "EAP-FAST: peer did not select the forced"			   " version (forced=%d peer=%d) - reject",			   data->force_version, peer_version);		return -1;	}	if (peer_version < data->fast_version) {		wpa_printf(MSG_DEBUG, "EAP-FAST: peer ver=%d, own ver=%d; "			   "use version %d",			   peer_version, data->fast_version, peer_version);		data->fast_version = peer_version;	}	return 0;}static int eap_fast_process_phase1(struct eap_sm *sm,				   struct eap_fast_data *data){	if (eap_server_tls_phase1(sm, &data->ssl) < 0) {		wpa_printf(MSG_INFO, "EAP-FAST: TLS processing failed");		eap_fast_state(data, FAILURE);		return -1;	}	if (!tls_connection_established(sm->ssl_ctx, data->ssl.conn) ||	    wpabuf_len(data->ssl.out_buf) > 0)		return 1;	/*	 * Phase 1 was completed with the received message (e.g., when using	 * abbreviated handshake), so Phase 2 can be started immediately	 * without having to send through an empty message to the peer.	 */	return eap_fast_phase1_done(sm, data);}static void eap_fast_process_phase2_start(struct eap_sm *sm,					  struct eap_fast_data *data){	u8 next_type;	if (data->identity) {		os_free(sm->identity);		sm->identity = data->identity;		data->identity = NULL;		sm->identity_len = data->identity_len;		data->identity_len = 0;		sm->require_identity_match = 1;		if (eap_user_get(sm, sm->identity, sm->identity_len, 1) != 0) {			wpa_hexdump_ascii(MSG_DEBUG, "EAP-FAST: "					  "Phase2 Identity not found "					  "in the user database",					  sm->identity, sm->identity_len);			next_type = eap_fast_req_failure(sm, data);		} else {			wpa_printf(MSG_DEBUG, "EAP-FAST: Identity already "				   "known - skip Phase 2 Identity Request");			next_type = sm->user->methods[0].method;			sm->user_eap_method_index = 1;		}		eap_fast_state(data, PHASE2_METHOD);	} else {		eap_fast_state(data, PHASE2_ID);		next_type = EAP_TYPE_IDENTITY;	}	eap_fast_phase2_init(sm, data, next_type);}static void eap_fast_process_msg(struct eap_sm *sm, void *priv,				 const struct wpabuf *respData){	struct eap_fast_data *data = priv;	switch (data->state) {	case PHASE1:		if (eap_fast_process_phase1(sm, data))			break;		/* fall through to PHASE2_START */	case PHASE2_START:		eap_fast_process_phase2_start(sm, data);		break;	case PHASE2_ID:	case PHASE2_METHOD:	case CRYPTO_BINDING:	case REQUEST_PAC:		eap_fast_process_phase2(sm, data, data->ssl.in_buf);		break;	default:		wpa_printf(MSG_DEBUG, "EAP-FAST: Unexpected state %d in %s",			   data->state, __func__);		break;	}}static void eap_fast_process(struct eap_sm *sm, void *priv,			     struct wpabuf *respData){	struct eap_fast_data *data = priv;	if (eap_server_tls_process(sm, &data->ssl, respData, data,				   EAP_TYPE_FAST, eap_fast_process_version,				   eap_fast_process_msg) < 0)		eap_fast_state(data, FAILURE);}static Boolean eap_fast_isDone(struct eap_sm *sm, void *priv){	struct eap_fast_data *data = priv;	return data->state == SUCCESS || data->state == FAILURE;}static u8 * eap_fast_getKey(struct eap_sm *sm, void *priv, size_t *len){	struct eap_fast_data *data = priv;	u8 *eapKeyData;	if (data->state != SUCCESS)		return NULL;	eapKeyData = os_malloc(EAP_FAST_KEY_LEN);	if (eapKeyData == NULL)		return NULL;	eap_fast_derive_eap_msk(data->simck, eapKeyData);	*len = EAP_FAST_KEY_LEN;	return eapKeyData;}static u8 * eap_fast_get_emsk(struct eap_sm *sm, void *priv, size_t *len){	struct eap_fast_data *data = priv;	u8 *eapKeyData;	if (data->state != SUCCESS)		return NULL;	eapKeyData = os_malloc(EAP_EMSK_LEN);	if (eapKeyData == NULL)		return NULL;	eap_fast_derive_eap_emsk(data->simck, eapKeyData);	*len = EAP_EMSK_LEN;	return eapKeyData;}static Boolean eap_fast_isSuccess(struct eap_sm *sm, void *priv){	struct eap_fast_data *data = priv;	return data->state == SUCCESS;}int eap_server_fast_register(void){	struct eap_method *eap;	int ret;	eap = eap_server_method_alloc(EAP_SERVER_METHOD_INTERFACE_VERSION,				      EAP_VENDOR_IETF, EAP_TYPE_FAST, "FAST");	if (eap == NULL)		return -1;	eap->init = eap_fast_init;	eap->reset = eap_fast_reset;	eap->buildReq = eap_fast_buildReq;	eap->check = eap_fast_check;	eap->process = eap_fast_process;	eap->isDone = eap_fast_isDone;	eap->getKey = eap_fast_getKey;	eap->get_emsk = eap_fast_get_emsk;	eap->isSuccess = eap_fast_isSuccess;	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一区二区三区免费野_久草精品视频
午夜av一区二区三区| 成人手机在线视频| 国产宾馆实践打屁股91| 一本色道久久综合狠狠躁的推荐| 制服丝袜中文字幕亚洲| 国产精品久久久久久久浪潮网站| 日本vs亚洲vs韩国一区三区二区 | 亚洲bdsm女犯bdsm网站| 久国产精品韩国三级视频| 色八戒一区二区三区| 久久久亚洲国产美女国产盗摄| 亚洲风情在线资源站| aaa亚洲精品一二三区| 久久亚洲精精品中文字幕早川悠里 | 欧美群妇大交群中文字幕| 成人深夜在线观看| 久久综合久久99| 日韩欧美在线一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 在线亚洲一区二区| 国产精品乱子久久久久| 国产一区二区在线影院| 欧美一级在线观看| 五月婷婷另类国产| 欧美日韩免费一区二区三区视频 | 91美女蜜桃在线| 精品国产免费视频| 日本系列欧美系列| 制服丝袜亚洲精品中文字幕| 亚洲成a人v欧美综合天堂下载| 99久久综合国产精品| 国产精品久久777777| 国产99久久久国产精品| 久久综合色婷婷| 国产精品一区二区视频| 久久久综合网站| 国内精品伊人久久久久av影院| 欧美v日韩v国产v| 激情图片小说一区| 久久精品一区二区三区av| 极品瑜伽女神91| 久久网这里都是精品| 国产精品99久久久久久似苏梦涵 | 欧美日本在线看| 亚洲一区二区三区中文字幕在线| 成人av动漫网站| 国产精品久久久久婷婷二区次| 成人毛片在线观看| 日韩美女啊v在线免费观看| 91网页版在线| 国产欧美va欧美不卡在线| 国产精品一区二区免费不卡| 91麻豆精品国产自产在线| 日韩va欧美va亚洲va久久| 欧美一区二区三区日韩视频| 美女精品自拍一二三四| 国产欧美日本一区二区三区| 国产成人99久久亚洲综合精品| 国产精品毛片久久久久久| 色爱区综合激月婷婷| 日本伊人色综合网| 中日韩av电影| 欧美视频完全免费看| 精品写真视频在线观看| 中文字幕高清不卡| 欧美久久久久久蜜桃| 国产毛片精品国产一区二区三区| 欧美激情资源网| 欧美日韩国产高清一区二区三区| 蜜乳av一区二区| 国产精品久久久久久久岛一牛影视| 91福利在线观看| 国产麻豆精品在线观看| 亚洲精品免费播放| 日韩视频在线观看一区二区| av中文一区二区三区| 图片区小说区区亚洲影院| 国产欧美精品一区二区三区四区| 在线免费视频一区二区| 国产尤物一区二区在线| 亚洲一区二区成人在线观看| 精品国产青草久久久久福利| 色综合久久综合中文综合网| 狠狠色丁香婷综合久久| 亚洲午夜久久久久中文字幕久| 国产亚洲精品超碰| 欧美久久高跟鞋激| 99精品在线观看视频| 久久电影网站中文字幕| 一区二区三区四区高清精品免费观看 | av电影在线观看一区| 免费成人在线网站| 亚洲小说欧美激情另类| 国产精品久久久久影院色老大| 日韩一区二区三区四区| 欧洲人成人精品| 97aⅴ精品视频一二三区| 久久99精品久久只有精品| 亚洲大片在线观看| 亚洲男人的天堂在线观看| 国产精品视频免费| 2022国产精品视频| 日韩精品中文字幕在线不卡尤物| 欧洲在线/亚洲| 色综合久久天天综合网| 成人福利视频在线| 国产91精品露脸国语对白| 久久99精品久久久久| 污片在线观看一区二区| 亚洲第一会所有码转帖| 亚洲影院久久精品| 一区二区三区四区在线免费观看| 国产精品国产精品国产专区不片| 国产拍揄自揄精品视频麻豆| 国产亚洲一二三区| 国产亚洲欧美日韩俺去了| 久久综合色之久久综合| 欧美精品一区二区久久婷婷| 欧美不卡在线视频| 精品久久久久久久人人人人传媒| 欧美一区三区四区| 欧美一区2区视频在线观看| 在线不卡中文字幕| 欧美电视剧免费观看| 精品国产亚洲在线| 欧美高清一级片在线观看| 国产精品电影一区二区三区| 成人欧美一区二区三区黑人麻豆| 成人免费一区二区三区视频 | 欧美日韩一区二区在线观看| 日韩精品在线网站| 精品国产精品网麻豆系列| 欧美成人a∨高清免费观看| 久久久久亚洲蜜桃| 国产精品三级电影| 亚洲欧美一区二区三区久本道91| 亚洲欧美另类图片小说| 亚洲成av人片观看| 美洲天堂一区二卡三卡四卡视频| 国产精品18久久久久久vr| 国产a区久久久| 日本黄色一区二区| 欧美一区二区精品在线| 久久久精品免费网站| 中文字幕一区不卡| 日韩国产成人精品| 高清国产午夜精品久久久久久| 91在线高清观看| 日韩一区二区免费在线电影| 国产亚洲精品资源在线26u| 色综合中文字幕| 日韩视频在线一区二区| 91免费版在线看| 91首页免费视频| 欧美一级淫片007| 久久久久9999亚洲精品| 亚洲精品视频一区| 久久99精品久久久久| 91丝袜美腿高跟国产极品老师 | 一区二区在线电影| 另类人妖一区二区av| www.视频一区| 欧美一区二区在线观看| 亚洲色图制服诱惑 | 国产婷婷色一区二区三区四区| 亚洲美女在线国产| 国产乱码精品一区二区三| 欧美亚洲国产一区在线观看网站 | 国产精品亚洲一区二区三区妖精 | 91网页版在线| 欧美嫩在线观看| 成人免费在线播放视频| 久久精品国产澳门| 在线欧美日韩精品| 中文字幕精品一区二区精品绿巨人 | 麻豆久久久久久| 欧美亚洲一区三区| 亚洲福利一区二区| 成人一区二区三区在线观看| 91精品欧美一区二区三区综合在 | 亚洲高清在线精品| 不卡的看片网站| 久久综合999| 久久成人免费网| 91精品蜜臀在线一区尤物| 亚洲男女一区二区三区| 国产成人午夜片在线观看高清观看| 欧美一区二区三区公司| 国产精品免费视频观看| 男女男精品网站| 欧美日韩精品一区二区天天拍小说| 成人网页在线观看| 久久免费看少妇高潮| 日韩电影在线免费| 欧美精品在线视频| 亚洲aⅴ怡春院| 欧美日韩成人一区二区| 亚洲成人激情自拍| 欧洲亚洲国产日韩| 亚洲成人精品在线观看|