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

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

?? eap_fast.c

?? WPA在Linux下實現的原代碼 WPA在Linux下實現的原代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		return -1;	}	pos = (u8 *) (hdr + 1);	wpa_printf(MSG_DEBUG, "EAP-FAST: Phase 2 Request: type=%d", *pos);	switch (*pos) {	case EAP_TYPE_IDENTITY:		*resp = eap_sm_buildIdentity(sm, hdr->identifier, resp_len, 1);		break;	default:		if (data->phase2_type == EAP_TYPE_NONE) {			int i;			for (i = 0; i < data->num_phase2_types; i++) {				if (data->phase2_types[i] != *pos)					continue;				data->phase2_type = *pos;				wpa_printf(MSG_DEBUG, "EAP-FAST: Selected "					   "Phase 2 EAP method %d",					   data->phase2_type);				break;			}		}		if (*pos != data->phase2_type || *pos == EAP_TYPE_NONE) {			if (eap_fast_phase2_nak(sm, data, hdr, resp, resp_len))				return -1;			return 0;		}		if (data->phase2_priv == NULL) {			data->phase2_method = eap_sm_get_eap_methods(*pos);			if (data->phase2_method) {				if (data->key_block_p) {					sm->auth_challenge =						data->key_block_p->						server_challenge;					sm->peer_challenge =						data->key_block_p->						client_challenge;				}				sm->init_phase2 = 1;				data->phase2_priv =					data->phase2_method->init(sm);				sm->init_phase2 = 0;				sm->auth_challenge = NULL;				sm->peer_challenge = NULL;			}		}		if (data->phase2_priv == NULL || data->phase2_method == NULL) {			wpa_printf(MSG_INFO, "EAP-FAST: failed to initialize "				   "Phase 2 EAP method %d", *pos);			ret->methodState = METHOD_DONE;			ret->decision = DECISION_FAIL;			return -1;		}		memset(&iret, 0, sizeof(iret));		*resp = data->phase2_method->process(sm, data->phase2_priv,						     &iret, (u8 *) hdr, len,						     resp_len);		if (*resp == NULL ||		    (iret.methodState == METHOD_DONE &&		     iret.decision == DECISION_FAIL)) {			ret->methodState = METHOD_DONE;			ret->decision = DECISION_FAIL;		} else if ((iret.methodState == METHOD_DONE ||			    iret.methodState == METHOD_MAY_CONT) &&			   (iret.decision == DECISION_UNCOND_SUCC ||			    iret.decision == DECISION_COND_SUCC)) {			data->phase2_success = 1;		}		if (*resp == NULL)			return -1;		break;	}	return 0;}static u8 * eap_fast_tlv_nak(int vendor_id, int tlv_type, size_t *len){	struct eap_tlv_nak_tlv *nak;	*len = sizeof(*nak);	nak = malloc(*len);	if (nak == NULL)		return NULL;	nak->tlv_type = host_to_be16(EAP_TLV_TYPE_MANDATORY | EAP_TLV_NAK_TLV);	nak->length = host_to_be16(6);	nak->vendor_id = host_to_be32(vendor_id);	nak->nak_type = host_to_be16(tlv_type);	return (u8 *) nak;}static u8 * eap_fast_tlv_result(int status, int intermediate, size_t *len){	struct eap_tlv_intermediate_result_tlv *result;	*len = sizeof(*result);	result = malloc(*len);	if (result == NULL)		return NULL;	result->tlv_type = host_to_be16(EAP_TLV_TYPE_MANDATORY |					(intermediate ?					 EAP_TLV_INTERMEDIATE_RESULT_TLV :					 EAP_TLV_RESULT_TLV));	result->length = host_to_be16(2);	result->status = host_to_be16(status);	return (u8 *) result;}static u8 * eap_fast_tlv_pac_ack(size_t *len){	struct eap_tlv_result_tlv *res;	struct eap_tlv_pac_ack_tlv *ack;	*len = sizeof(*res) + sizeof(*ack);	res = malloc(*len);	if (res == NULL)		return NULL;	memset(res, 0, *len);	res->tlv_type = host_to_be16(EAP_TLV_RESULT_TLV |				     EAP_TLV_TYPE_MANDATORY);	res->length = host_to_be16(sizeof(*res) - sizeof(struct eap_tlv_hdr));	res->status = host_to_be16(EAP_TLV_RESULT_SUCCESS);	ack = (struct eap_tlv_pac_ack_tlv *) (res + 1);	ack->tlv_type = host_to_be16(EAP_TLV_PAC_TLV |				     EAP_TLV_TYPE_MANDATORY);	ack->length = host_to_be16(sizeof(*ack) - sizeof(struct eap_tlv_hdr));	ack->pac_type = host_to_be16(PAC_TYPE_PAC_ACKNOWLEDGEMENT);	ack->pac_len = host_to_be16(2);	ack->result = host_to_be16(EAP_TLV_RESULT_SUCCESS);	return (u8 *) res;}static u8 * eap_fast_tlv_eap_payload(u8 *buf, size_t *len){	struct eap_tlv_hdr *tlv;	/* Encapsulate EAP packet in EAP Payload TLV */	tlv = malloc(sizeof(*tlv) + *len);	if (tlv == NULL) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Failed to "			   "allocate memory for TLV "			   "encapsulation");		free(buf);		return NULL;	}	tlv->tlv_type = host_to_be16(EAP_TLV_TYPE_MANDATORY |				     EAP_TLV_EAP_PAYLOAD_TLV);	tlv->length = host_to_be16(*len);	memcpy(tlv + 1, buf, *len);	free(buf);	*len += sizeof(*tlv);	return (u8 *) tlv;}static u8 * eap_fast_process_crypto_binding(	struct eap_sm *sm, struct eap_fast_data *data,	struct eap_method_ret *ret,	struct eap_tlv_crypto_binding__tlv *bind, size_t bind_len,	size_t *resp_len, int final){	u8 *resp, *sks = NULL;	struct eap_tlv_intermediate_result_tlv *rresult;	struct eap_tlv_crypto_binding__tlv *rbind;	u8 isk[32], imck[60], *cmk, cmac[20], *key;	size_t key_len;	int res;	wpa_printf(MSG_DEBUG, "EAP-FAST: Crypto-Binding TLV: Version %d "		   "Received Version %d SubType %d",		   bind->version, bind->received_version, bind->subtype);	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: NONCE",		    bind->nonce, sizeof(bind->nonce));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Compound MAC",		    bind->compound_mac, sizeof(bind->compound_mac));	if (bind->version != EAP_FAST_VERSION ||	    bind->received_version != EAP_FAST_VERSION ||	    bind->subtype != EAP_TLV_CRYPTO_BINDING_SUBTYPE_REQUEST) {		wpa_printf(MSG_INFO, "EAP-FAST: Invalid version/subtype in "			   "Crypto-Binding TLV: Version %d "			   "Received Version %d SubType %d",			   bind->version, bind->received_version,			   bind->subtype);		resp = eap_fast_tlv_result(EAP_TLV_RESULT_FAILURE, 1,					   resp_len);		return resp;	}	if (data->provisioning) {		if (data->key_block_p) {			sks = data->key_block_p->session_key_seed;		}	} else {		if (data->key_block_a) {			sks = data->key_block_a->session_key_seed;		}	}	if (sks == NULL) {		wpa_printf(MSG_INFO, "EAP-FAST: No Session Key Seed available "			   "for processing Crypto-Binding TLV");		return NULL;	}	wpa_printf(MSG_DEBUG, "EAP-FAST: Determining CMK for Compound MIC "		   "calculation");	wpa_hexdump_key(MSG_MSGDUMP, "EAP-FAST: S-IMCK[0] = SKS", sks, 40);	memset(isk, 0, sizeof(isk));	if (data->phase2_method == NULL || data->phase2_priv == NULL) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Phase 2 method not "			   "available");		return NULL;	}	if (data->phase2_method->isKeyAvailable && data->phase2_method->getKey)	{		if (!data->phase2_method->isKeyAvailable(sm, data->phase2_priv)		    ||		    (key = data->phase2_method->getKey(sm, data->phase2_priv,						       &key_len)) == NULL) {			wpa_printf(MSG_DEBUG, "EAP-FAST: Could not get key "				   "material from Phase 2");			return NULL;		}		if (key_len > sizeof(isk))			key_len = sizeof(isk);		/* FIX: which end is being padded? */#if 0		memcpy(isk + (sizeof(isk) - key_len), key, key_len);#else		memcpy(isk, key, key_len);#endif		free(key);	}	wpa_hexdump_key(MSG_MSGDUMP, "EAP-FAST: ISK[0]", isk, sizeof(isk));	sha1_t_prf(sks, 40, "Inner Methods Compound Keys",		   isk, sizeof(isk), imck, sizeof(imck));	/* S-IMCK[1] = imkc[0..39] */	wpa_hexdump_key(MSG_MSGDUMP, "EAP-FAST: S-IMCK[1]", imck, 40);	cmk = imck + 40;	wpa_hexdump_key(MSG_MSGDUMP, "EAP-FAST: CMK", cmk, 20);	memcpy(cmac, bind->compound_mac, sizeof(cmac));	memset(bind->compound_mac, 0, sizeof(cmac));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Crypto-Binding TLV for Compound "		    "MAC calculation", (u8 *) bind, bind_len);	hmac_sha1(cmk, 20, (u8 *) bind, bind_len, bind->compound_mac);	res = memcmp(cmac, bind->compound_mac, sizeof(cmac));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Received Compound MAC",		    cmac, sizeof(cmac));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Calculated Compound MAC",		    bind->compound_mac, sizeof(cmac));	if (res != 0) {		wpa_printf(MSG_INFO, "EAP-FAST: Compound MAC did not match");		resp = eap_fast_tlv_result(EAP_TLV_RESULT_FAILURE, 1,					   resp_len);		memcpy(bind->compound_mac, cmac, sizeof(cmac));		return resp;	}	*resp_len = sizeof(*rresult) + sizeof(*rbind);	resp = malloc(*resp_len);	if (resp == NULL)		return NULL;	memset(resp, 0, *resp_len);	/* Both intermediate and final Result TLVs are identical, so ok to use	 * the same structure definition for them. */	rresult = (struct eap_tlv_intermediate_result_tlv *) resp;	rresult->tlv_type = host_to_be16(EAP_TLV_TYPE_MANDATORY |					 (final ? EAP_TLV_RESULT_TLV :					  EAP_TLV_INTERMEDIATE_RESULT_TLV));	rresult->length = host_to_be16(2);	rresult->status = host_to_be16(EAP_TLV_RESULT_SUCCESS);	if (!data->provisioning && data->phase2_success &&	    eap_fast_derive_msk(sm, data) < 0) {		wpa_printf(MSG_INFO, "EAP-FAST: Failed to generate MSK");		ret->methodState = METHOD_DONE;		ret->decision = DECISION_FAIL;		rresult->status = host_to_be16(EAP_TLV_RESULT_FAILURE);		data->phase2_success = 0;	}	rbind = (struct eap_tlv_crypto_binding__tlv *) (rresult + 1);	rbind->tlv_type = host_to_be16(EAP_TLV_TYPE_MANDATORY |				       EAP_TLV_CRYPTO_BINDING_TLV_);	rbind->length = host_to_be16(sizeof(*rbind) -				     sizeof(struct eap_tlv_hdr));	rbind->version = EAP_FAST_VERSION;	rbind->received_version = bind->version;	rbind->subtype = EAP_TLV_CRYPTO_BINDING_SUBTYPE_RESPONSE;	memcpy(rbind->nonce, bind->nonce, sizeof(bind->nonce));	inc_byte_array(rbind->nonce, sizeof(bind->nonce));	hmac_sha1(cmk, 20, (u8 *) rbind, sizeof(*rbind), rbind->compound_mac);	wpa_printf(MSG_DEBUG, "EAP-FAST: Reply Crypto-Binding TLV: Version %d "		   "Received Version %d SubType %d",		   rbind->version, rbind->received_version, rbind->subtype);	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: NONCE",		    rbind->nonce, sizeof(rbind->nonce));	wpa_hexdump(MSG_MSGDUMP, "EAP-FAST: Compound MAC",		    rbind->compound_mac, sizeof(rbind->compound_mac));	if (final && data->phase2_success) {		wpa_printf(MSG_DEBUG, "EAP-FAST: Authentication completed "			   "successfully.");		ret->methodState = METHOD_DONE;		ret->decision = DECISION_UNCOND_SUCC;	}	return resp;}static u8 * eap_fast_process_pac(struct eap_sm *sm, struct eap_fast_data *data,				 struct eap_method_ret *ret,				 u8 *pac, size_t pac_len, size_t *resp_len){	struct wpa_ssid *config = eap_get_config(sm);	struct pac_tlv_hdr *hdr;	u8 *pos;	size_t left, len;	int type, pac_key_found = 0;	struct eap_fast_pac entry;	memset(&entry, 0, sizeof(entry));	pos = pac;	left = pac_len;	while (left > sizeof(*hdr)) {		hdr = (struct pac_tlv_hdr *) pos;		type = be_to_host16(hdr->type);		len = be_to_host16(hdr->len);		pos += sizeof(*hdr);		left -= sizeof(*hdr);		if (len > left) {			wpa_printf(MSG_DEBUG, "EAP-FAST: PAC TLV overrun "				   "(type=%d len=%lu left=%lu)",				   type, (unsigned long) len,				   (unsigned long) left);			return eap_fast_tlv_result(EAP_TLV_RESULT_FAILURE, 0,						   resp_len);		}		switch (type) {		case PAC_TYPE_PAC_KEY:			wpa_hexdump_key(MSG_DEBUG, "EAP-FAST: PAC-Key",					pos, len);			if (len != EAP_FAST_PAC_KEY_LEN) {				wpa_printf(MSG_DEBUG, "EAP-FAST: Invalid "					   "PAC-Key length %lu",					   (unsigned long) len);				break;			}			pac_key_found = 1;			memcpy(entry.pac_key, pos, len);			break;		case PAC_TYPE_PAC_OPAQUE:			wpa_hexdump(MSG_DEBUG, "EAP-FAST: PAC-Opaque",					pos, len);			entry.pac_opaque = pos;			entry.pac_opaque_len = len;			break;		case PAC_TYPE_PAC_INFO:			wpa_hexdump(MSG_DEBUG, "EAP-FAST: PAC-Info",				    pos, len);			entry.pac_info = pos;			entry.pac_info_len = len;			break;		default:			wpa_printf(MSG_DEBUG, "EAP-FAST: Ignored unknown PAC "				   "type %d", type);			break;		}		pos += len;		left -= len;	}	if (!pac_key_found || !entry.pac_opaque || !entry.pac_info) {		wpa_printf(MSG_DEBUG, "EAP-FAST: PAC TLV does not include "			   "all the required fields");		return eap_fast_tlv_result(EAP_TLV_RESULT_FAILURE, 0,					   resp_len);	}	pos = entry.pac_info;	left = entry.pac_info_len;	while (left > sizeof(*hdr)) {		hdr = (struct pac_tlv_hdr *) pos;		type = be_to_host16(hdr->type);		len = be_to_host16(hdr->len);		pos += sizeof(*hdr);		left -= sizeof(*hdr);		if (len > left) {			wpa_printf(MSG_DEBUG, "EAP-FAST: PAC-Info overrun "				   "(type=%d len=%lu left=%lu)",				   type, (unsigned long) len,				   (unsigned long) left);			return eap_fast_tlv_result(EAP_TLV_RESULT_FAILURE, 0,						   resp_len);		}		switch (type) {		case PAC_TYPE_A_ID:			wpa_hexdump_ascii(MSG_DEBUG, "EAP-FAST: PAC-Info - "					  "A-ID", pos, len);			entry.a_id = pos;			entry.a_id_len = len;			break;		case PAC_TYPE_I_ID:			wpa_hexdump_ascii(MSG_DEBUG, "EAP-FAST: PAC-Info - "					  "I-ID", pos, len);			entry.i_id = pos;			entry.i_id_len = len;			break;		case PAC_TYPE_A_ID_INFO:			wpa_hexdump_ascii(MSG_DEBUG, "EAP-FAST: PAC-Info - "					  "A-ID-Info", pos, len);			entry.a_id_info = pos;			entry.a_id_info_len = len;			break;		default:			wpa_printf(MSG_DEBUG, "EAP-FAST: Ignored unknown "				   "PAC-Info type %d", type);			break;		}		pos += len;		left -= len;	}	if (entry.a_id == NULL || entry.a_id_info == NULL) {		wpa_printf(MSG_DEBUG, "EAP-FAST: PAC-Info does not include "			   "all the required fields");		return eap_fast_tlv_result(EAP_TLV_RESULT_FAILURE, 0,					   resp_len);	}	eap_fast_add_pac(data, &entry);	eap_fast_save_pac(sm, data, config->pac_file);	if (data->provisioning) {		/* EAP-FAST provisioning does not provide keying material and		 * must end with an EAP-Failure. Authentication will be done		 * separately after this. */		data->success = 0;		ret->decision = DECISION_FAIL;		wpa_printf(MSG_DEBUG, "EAP-FAST: Send PAC-Acknowledgement TLV "			   "- Provisioning completed successfully");	} else {		/* This is PAC refreshing, i.e., normal authentication that is		 * expected to be completed with an EAP-Success. */		wpa_printf(MSG_DEBUG, "EAP-FAST: Send PAC-Acknowledgement TLV "			   "- PAC refreshing completed successfully");		ret->decision = DECISION_UNCOND_SUCC;	}	ret->methodState = METHOD_DONE;	return eap_fast_tlv_pac_ack(resp_len);}static int eap_fast_decrypt(struct eap_sm *sm, struct eap_fast_data *data,			    struct eap_method_ret *ret,			    const struct eap_hdr *req,			    const u8 *in_data, size_t in_len,			    u8 **out_data, size_t *out_len){	u8 *in_decrypted, *pos, *end;	int buf_len, len_decrypted, len;	struct eap_hdr *hdr;	u8 *resp = NULL;	size_t resp_len;	int mandatory, tlv_type;	u8 *eap_payload_tlv = NULL, *pac = NULL;	size_t eap_payload_tlv_len = 0, pac_len = 0;	int iresult = 0, result = 0;	struct eap_tlv_crypto_binding__tlv *crypto_binding = NULL;	size_t crypto_binding_len = 0;	const u8 *msg;	size_t msg_len;	int need_more_input, stop;	wpa_printf(MSG_DEBUG, "EAP-FAST: received %lu bytes encrypted data for"		   " Phase 2", (unsigned long) in_len);	msg = eap_tls_data_reassemble(sm, &data->ssl, in_data, in_len,				      &msg_len, &need_more_input);	if (msg == NULL)		return need_more_input ? 1 : -1;	buf_len = in_len;	if (data->ssl.tls_in_total > buf_len)		buf_len = data->ssl.tls_in_total;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一本大道香蕉久在线精品| 亚洲成人午夜影院| 国产在线视视频有精品| 日韩免费在线观看| 蜜臀91精品一区二区三区| 欧美日韩三级视频| 看电视剧不卡顿的网站| 精品国产一区久久| 国产成人亚洲精品狼色在线| 中文字幕一区不卡| 91久久线看在观草草青青| 亚洲一区日韩精品中文字幕| 在线观看91精品国产麻豆| 热久久国产精品| 国产欧美一二三区| 色94色欧美sute亚洲线路一久| 成人丝袜视频网| 17c精品麻豆一区二区免费| 在线观看日韩电影| 毛片不卡一区二区| 国产精品午夜电影| 欧美三级三级三级| 国产在线视频一区二区三区| 亚洲日韩欧美一区二区在线| 欧美巨大另类极品videosbest| 韩国成人精品a∨在线观看| 亚洲国产成人一区二区三区| 欧美中文一区二区三区| 国产综合色在线| 亚洲视频免费观看| 欧美大片在线观看一区二区| caoporn国产一区二区| 亚洲成a人在线观看| 精品久久久久久久久久久久包黑料 | 国产一区二区不卡在线| 椎名由奈av一区二区三区| 欧美人牲a欧美精品| 成人av资源下载| 天天影视网天天综合色在线播放| 国产亚洲一区二区三区四区 | 玉米视频成人免费看| 日韩视频在线你懂得| 色综合色综合色综合色综合色综合| 视频一区中文字幕| 中文字幕不卡在线| 91精品国产一区二区三区蜜臀| 成人精品免费看| 精品一区二区免费看| 亚洲成av人片www| 中文字幕在线不卡一区二区三区 | 在线观看日韩av先锋影音电影院| 国产精品1区2区| 日韩电影一区二区三区| 成人免费小视频| 久久午夜色播影院免费高清| 欧美美女一区二区在线观看| 99在线精品一区二区三区| 国产一区二区伦理| 日本女人一区二区三区| 亚洲香肠在线观看| 1000精品久久久久久久久| 国产欧美一二三区| 久久伊人蜜桃av一区二区| 欧美一区二区播放| 欧美美女激情18p| 在线观看亚洲a| 色综合久久天天综合网| 大桥未久av一区二区三区中文| 国产原创一区二区三区| 免费成人深夜小野草| 日韩专区一卡二卡| 亚瑟在线精品视频| 亚洲一区影音先锋| 亚洲成人你懂的| 亚洲一区二区三区不卡国产欧美| 成人欧美一区二区三区小说| 天天色综合成人网| 亚洲一二三专区| 伊人色综合久久天天人手人婷| 亚洲欧洲日产国码二区| 国产精品乱码妇女bbbb| 欧美国产97人人爽人人喊| 国产天堂亚洲国产碰碰| 国产日韩精品久久久| 中文字幕欧美激情| 国产精品久久久久久亚洲伦| 国产精品福利av| 一区二区三区毛片| 亚洲一区二区免费视频| 日韩高清不卡一区二区| 蜜臂av日日欢夜夜爽一区| 捆绑变态av一区二区三区| 激情综合五月天| 成人午夜视频福利| 99国产精品一区| 欧美日韩一区三区四区| 欧美一区三区二区| 精品国产91乱码一区二区三区| 久久综合国产精品| 国产精品免费人成网站| 一区二区三区不卡视频| 日韩制服丝袜av| 韩国毛片一区二区三区| av一本久道久久综合久久鬼色| 色哟哟亚洲精品| 欧美精品高清视频| 久久久久一区二区三区四区| 综合欧美一区二区三区| 亚洲大型综合色站| 狠狠色丁香婷综合久久| 波多野结衣中文字幕一区 | 国产福利一区二区| 色综合天天视频在线观看| 8v天堂国产在线一区二区| 2019国产精品| 一区二区三区在线不卡| 青草av.久久免费一区| 国产成人免费9x9x人网站视频| 91麻豆成人久久精品二区三区| 精品视频在线免费| 国产视频一区二区三区在线观看| 最新国产精品久久精品| 日韩电影在线一区| 成人黄色在线视频| 欧美福利一区二区| 自拍偷拍欧美激情| 老司机免费视频一区二区| va亚洲va日韩不卡在线观看| 欧美肥大bbwbbw高潮| 国产精品久久久久影院亚瑟| 日本不卡的三区四区五区| aaa欧美色吧激情视频| 日韩美女主播在线视频一区二区三区| 国产精品麻豆视频| 精品影视av免费| 欧美网站一区二区| 欧美极品美女视频| 日本成人在线一区| 日本高清不卡视频| 欧美高清一级片在线观看| 日韩在线a电影| 91免费版pro下载短视频| 日韩一二在线观看| 一区二区三区在线视频免费| 国产电影精品久久禁18| 91精品国产综合久久精品性色| 最好看的中文字幕久久| 国产精品一级片在线观看| 亚洲免费观看高清| 国产精品一区二区在线观看网站 | 又紧又大又爽精品一区二区| 不卡电影一区二区三区| 久久久久久电影| 久草中文综合在线| 在线电影国产精品| 亚洲一区二区三区四区在线免费观看| 不卡一区在线观看| 国产精品网友自拍| 国产精品18久久久久久久久| 日韩欧美国产午夜精品| 日韩精品一卡二卡三卡四卡无卡| 91久久精品午夜一区二区| 亚洲丝袜另类动漫二区| 成人av网在线| 国产精品区一区二区三区| 国产成人午夜精品影院观看视频| 欧美videofree性高清杂交| 蜜臀av国产精品久久久久| 欧美一级黄色大片| 天天综合色天天综合| 91麻豆精品国产91久久久资源速度| 亚洲精品久久7777| 欧美综合天天夜夜久久| 一区二区三区四区国产精品| 91丝袜国产在线播放| 亚洲欧美乱综合| 色综合久久久久综合体| 一区二区三区不卡视频在线观看| 欧美专区日韩专区| 亚洲一级在线观看| 欧美日本一区二区三区| 日本不卡在线视频| 欧美成人性战久久| 国产精品一区二区在线观看不卡| 欧美韩日一区二区三区| 99久久精品国产网站| 亚洲卡通欧美制服中文| 在线观看不卡视频| 日韩成人精品在线| 26uuu另类欧美| 成人av在线网| 亚洲一区二区四区蜜桃| 91精品在线麻豆| 国产曰批免费观看久久久| 国产精品久久久久久妇女6080| 欧美视频在线播放| 免费观看久久久4p| 国产精品美女久久久久久| 91国偷自产一区二区使用方法| 午夜精品久久久久|