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

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

?? eap.c

?? 自己精簡過的PPPD代碼。在嵌入中應用可以更好的發揮。比原先的小了很多
?? C
?? 第 1 頁 / 共 4 頁
字號:
			}			break;		}		break;	case EAPT_MD5CHAP:		if (esp->es_server.ea_state != eapMD5Chall) {			error("EAP: unexpected MD5-Response");			eap_figure_next_state(esp, 1);			break;		}		if (len < 1) {			error("EAP: received MD5-Response with no data");			eap_figure_next_state(esp, 1);			break;		}		GETCHAR(vallen, inp);		len--;		if (vallen != 16 || vallen > len) {			error("EAP: MD5-Response with bad length %d", vallen);			eap_figure_next_state(esp, 1);			break;		}		/* Not so likely to happen. */		if (vallen >= len + sizeof (rhostname)) {			dbglog("EAP: trimming really long peer name down");			BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);			rhostname[sizeof (rhostname) - 1] = '\0';		} else {			BCOPY(inp + vallen, rhostname, len - vallen);			rhostname[len - vallen] = '\0';		}		/* In case the remote doesn't give us his name. */		if (explicit_remote ||		    (remote_name[0] != '\0' && vallen == len))			strlcpy(rhostname, remote_name, sizeof (rhostname));		/*		 * Get the secret for authenticating the specified		 * host.		 */		if (!get_secret(esp->es_unit, rhostname,		    esp->es_server.ea_name, secret, &secret_len, 1)) {			dbglog("EAP: no MD5 secret for auth of %q", rhostname);			eap_send_failure(esp);			break;		}		MD5_Init(&mdContext);		MD5_Update(&mdContext, &esp->es_server.ea_id, 1);		MD5_Update(&mdContext, secret, secret_len);		BZERO(secret, sizeof (secret));		MD5_Update(&mdContext, esp->es_challenge, esp->es_challen);		MD5_Final(hash, &mdContext);		if (BCMP(hash, inp, MD5_SIGNATURE_SIZE) != 0) {			eap_send_failure(esp);			break;		}		esp->es_server.ea_type = EAPT_MD5CHAP;		eap_send_success(esp);		eap_figure_next_state(esp, 0);		if (esp->es_rechallenge != 0)			TIMEOUT(eap_rechallenge, esp, esp->es_rechallenge);		break;#ifdef USE_SRP	case EAPT_SRP:		if (len < 1) {			error("EAP: empty SRP Response");			eap_figure_next_state(esp, 1);			break;		}		GETCHAR(typenum, inp);		len--;		switch (typenum) {		case EAPSRP_CKEY:			if (esp->es_server.ea_state != eapSRP1) {				error("EAP: unexpected SRP Subtype 1 Response");				eap_figure_next_state(esp, 1);				break;			}			A.data = inp;			A.len = len;			ts = (struct t_server *)esp->es_server.ea_session;			assert(ts != NULL);			esp->es_server.ea_skey = t_servergetkey(ts, &A);			if (esp->es_server.ea_skey == NULL) {				/* Client's A value is bogus; terminate now */				error("EAP: bogus A value from client");				eap_send_failure(esp);			} else {				eap_figure_next_state(esp, 0);			}			break;		case EAPSRP_CVALIDATOR:			if (esp->es_server.ea_state != eapSRP2) {				error("EAP: unexpected SRP Subtype 2 Response");				eap_figure_next_state(esp, 1);				break;			}			if (len < sizeof (u_int32_t) + SHA_DIGESTSIZE) {				error("EAP: M1 length %d < %d", len,				    sizeof (u_int32_t) + SHA_DIGESTSIZE);				eap_figure_next_state(esp, 1);				break;			}			GETLONG(esp->es_server.ea_keyflags, inp);			ts = (struct t_server *)esp->es_server.ea_session;			assert(ts != NULL);			if (t_serververify(ts, inp)) {				info("EAP: unable to validate client identity");				eap_send_failure(esp);				break;			}			eap_figure_next_state(esp, 0);			break;		case EAPSRP_ACK:			if (esp->es_server.ea_state != eapSRP3) {				error("EAP: unexpected SRP Subtype 3 Response");				eap_send_failure(esp);				break;			}			esp->es_server.ea_type = EAPT_SRP;			eap_send_success(esp);			eap_figure_next_state(esp, 0);			if (esp->es_rechallenge != 0)				TIMEOUT(eap_rechallenge, esp,				    esp->es_rechallenge);			if (esp->es_lwrechallenge != 0)				TIMEOUT(srp_lwrechallenge, esp,				    esp->es_lwrechallenge);			break;		case EAPSRP_LWRECHALLENGE:			if (esp->es_server.ea_state != eapSRP4) {				info("EAP: unexpected SRP Subtype 4 Response");				return;			}			if (len != SHA_DIGESTSIZE) {				error("EAP: bad Lightweight rechallenge "				    "response");				return;			}			SHA1Init(&ctxt);			vallen = id;			SHA1Update(&ctxt, &vallen, 1);			SHA1Update(&ctxt, esp->es_server.ea_skey,			    SESSION_KEY_LEN);			SHA1Update(&ctxt, esp->es_challenge, esp->es_challen);			SHA1Update(&ctxt, esp->es_server.ea_peer,			    esp->es_server.ea_peerlen);			SHA1Final(dig, &ctxt);			if (BCMP(dig, inp, SHA_DIGESTSIZE) != 0) {				error("EAP: failed Lightweight rechallenge");				eap_send_failure(esp);				break;			}			esp->es_server.ea_state = eapOpen;			if (esp->es_lwrechallenge != 0)				TIMEOUT(srp_lwrechallenge, esp,				    esp->es_lwrechallenge);			break;		}		break;#endif /* USE_SRP */	default:		/* This can't happen. */		error("EAP: unknown Response type %d; ignored", typenum);		return;	}	if (esp->es_server.ea_timeout > 0) {		UNTIMEOUT(eap_server_timeout, (void *)esp);	}	if (esp->es_server.ea_state != eapBadAuth &&	    esp->es_server.ea_state != eapOpen) {		esp->es_server.ea_id++;		eap_send_request(esp);	}}/* * eap_success - Receive EAP Success message (client mode). */static voideap_success(esp, inp, id, len)eap_state *esp;u_char *inp;int id;int len;{	if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp)) {		dbglog("EAP unexpected success message in state %s (%d)",		    eap_state_name(esp->es_client.ea_state),		    esp->es_client.ea_state);		return;	}	if (esp->es_client.ea_timeout > 0) {		UNTIMEOUT(eap_client_timeout, (void *)esp);	}	if (len > 0) {		/* This is odd.  The spec doesn't allow for this. */		PRINTMSG(inp, len);	}	esp->es_client.ea_state = eapOpen;	auth_withpeer_success(esp->es_unit, PPP_EAP, 0);}/* * eap_failure - Receive EAP Failure message (client mode). */static voideap_failure(esp, inp, id, len)eap_state *esp;u_char *inp;int id;int len;{	if (!eap_client_active(esp)) {		dbglog("EAP unexpected failure message in state %s (%d)",		    eap_state_name(esp->es_client.ea_state),		    esp->es_client.ea_state);	}	if (esp->es_client.ea_timeout > 0) {		UNTIMEOUT(eap_client_timeout, (void *)esp);	}	if (len > 0) {		/* This is odd.  The spec doesn't allow for this. */		PRINTMSG(inp, len);	}	esp->es_client.ea_state = eapBadAuth;	error("EAP: peer reports authentication failure");	auth_withpeer_fail(esp->es_unit, PPP_EAP);}/* * eap_input - Handle received EAP message. */static voideap_input(unit, inp, inlen)int unit;u_char *inp;int inlen;{	eap_state *esp = &eap_states[unit];	u_char code, id;	int len;	/*	 * Parse header (code, id and length).  If packet too short,	 * drop it.	 */	if (inlen < EAP_HEADERLEN) {		error("EAP: packet too short: %d < %d", inlen, EAP_HEADERLEN);		return;	}	GETCHAR(code, inp);	GETCHAR(id, inp);	GETSHORT(len, inp);	if (len < EAP_HEADERLEN || len > inlen) {		error("EAP: packet has illegal length field %d (%d..%d)", len,		    EAP_HEADERLEN, inlen);		return;	}	len -= EAP_HEADERLEN;	/* Dispatch based on message code */	switch (code) {	case EAP_REQUEST:		eap_request(esp, inp, id, len);		break;	case EAP_RESPONSE:		eap_response(esp, inp, id, len);		break;	case EAP_SUCCESS:		eap_success(esp, inp, id, len);		break;	case EAP_FAILURE:		eap_failure(esp, inp, id, len);		break;	default:				/* XXX Need code reject */		/* Note: it's not legal to send EAP Nak here. */		warn("EAP: unknown code %d received", code);		break;	}}/* * eap_printpkt - print the contents of an EAP packet. */static char *eap_codenames[] = {	"Request", "Response", "Success", "Failure"};static char *eap_typenames[] = {	"Identity", "Notification", "Nak", "MD5-Challenge",	"OTP", "Generic-Token", NULL, NULL,	"RSA", "DSS", "KEA", "KEA-Validate",	"TLS", "Defender", "Windows 2000", "Arcot",	"Cisco", "Nokia", "SRP"};static inteap_printpkt(inp, inlen, printer, arg)u_char *inp;int inlen;void (*printer) __P((void *, char *, ...));void *arg;{	int code, id, len, rtype, vallen;	u_char *pstart;	u_int32_t uval;	if (inlen < EAP_HEADERLEN)		return (0);	pstart = inp;	GETCHAR(code, inp);	GETCHAR(id, inp);	GETSHORT(len, inp);	if (len < EAP_HEADERLEN || len > inlen)		return (0);	if (code >= 1 && code <= sizeof(eap_codenames) / sizeof(char *))		printer(arg, " %s", eap_codenames[code-1]);	else		printer(arg, " code=0x%x", code);	printer(arg, " id=0x%x", id);	len -= EAP_HEADERLEN;	switch (code) {	case EAP_REQUEST:		if (len < 1) {			printer(arg, " <missing type>");			break;		}		GETCHAR(rtype, inp);		len--;		if (rtype >= 1 &&		    rtype <= sizeof (eap_typenames) / sizeof (char *))			printer(arg, " %s", eap_typenames[rtype-1]);		else			printer(arg, " type=0x%x", rtype);		switch (rtype) {		case EAPT_IDENTITY:		case EAPT_NOTIFICATION:			if (len > 0) {				printer(arg, " <Message ");				print_string((char *)inp, len, printer, arg);				printer(arg, ">");				INCPTR(len, inp);				len = 0;			} else {				printer(arg, " <No message>");			}			break;		case EAPT_MD5CHAP:			if (len <= 0)				break;			GETCHAR(vallen, inp);			len--;			if (vallen > len)				goto truncated;			printer(arg, " <Value%.*B>", vallen, inp);			INCPTR(vallen, inp);			len -= vallen;			if (len > 0) {				printer(arg, " <Name ");				print_string((char *)inp, len, printer, arg);				printer(arg, ">");				INCPTR(len, inp);				len = 0;			} else {				printer(arg, " <No name>");			}			break;		case EAPT_SRP:			if (len < 3)				goto truncated;			GETCHAR(vallen, inp);			len--;			printer(arg, "-%d", vallen);			switch (vallen) {			case EAPSRP_CHALLENGE:				GETCHAR(vallen, inp);				len--;				if (vallen >= len)					goto truncated;				if (vallen > 0) {					printer(arg, " <Name ");					print_string((char *)inp, vallen, printer,					    arg);					printer(arg, ">");				} else {					printer(arg, " <No name>");				}				INCPTR(vallen, inp);				len -= vallen;				GETCHAR(vallen, inp);				len--;				if (vallen >= len)					goto truncated;				printer(arg, " <s%.*B>", vallen, inp);				INCPTR(vallen, inp);				len -= vallen;				GETCHAR(vallen, inp);				len--;				if (vallen > len)					goto truncated;				if (vallen == 0) {					printer(arg, " <Default g=2>");				} else {					printer(arg, " <g%.*B>", vallen, inp);				}				INCPTR(vallen, inp);				len -= vallen;				if (len == 0) {					printer(arg, " <Default N>");				} else {					printer(arg, " <N%.*B>", len, inp);					INCPTR(len, inp);					len = 0;				}				break;			case EAPSRP_SKEY:				printer(arg, " <B%.*B>", len, inp);				INCPTR(len, inp);				len = 0;				break;			case EAPSRP_SVALIDATOR:				if (len < sizeof (u_int32_t))					break;				GETLONG(uval, inp);				len -= sizeof (u_int32_t);				if (uval & SRPVAL_EBIT) {					printer(arg, " E");					uval &= ~SRPVAL_EBIT;				}				if (uval != 0) {					printer(arg, " f<%X>", uval);				}				if ((vallen = len) > SHA_DIGESTSIZE)					vallen = SHA_DIGESTSIZE;				printer(arg, " <M2%.*B%s>", len, inp,				    len < SHA_DIGESTSIZE ? "?" : "");				INCPTR(vallen, inp);				len -= vallen;				if (len > 0) {					printer(arg, " <PN%.*B>", len, inp);					INCPTR(len, inp);					len = 0;				}				break;			case EAPSRP_LWRECHALLENGE:				printer(arg, " <Challenge%.*B>", len, inp);				INCPTR(len, inp);				len = 0;				break;			}			break;		}		break;	case EAP_RESPONSE:		if (len < 1)			break;		GETCHAR(rtype, inp);		len--;		if (rtype >= 1 &&		    rtype <= sizeof (eap_typenames) / sizeof (char *))			printer(arg, " %s", eap_typenames[rtype-1]);		else			printer(arg, " type=0x%x", rtype);		switch (rtype) {		case EAPT_IDENTITY:			if (len > 0) {				printer(arg, " <Name ");				print_string((char *)inp, len, printer, arg);				printer(arg, ">");				INCPTR(len, inp);				len = 0;			}			break;		case EAPT_NAK:			if (len <= 0) {				printer(arg, " <missing hint>");				break;			}			GETCHAR(rtype, inp);			len--;			printer(arg, " <Suggested-type %02X", rtype);			if (rtype >= 1 &&			    rtype < sizeof (eap_typenames) / sizeof (char *))				printer(arg, " (%s)", eap_typenames[rtype-1]);			printer(arg, ">");			break;		case EAPT_MD5CHAP:			if (len <= 0) {				printer(arg, " <missing length>");				break;			}			GETCHAR(vallen, inp);			len--;			if (vallen > len)				goto truncated;			printer(arg, " <Value%.*B>", vallen, inp);			INCPTR(vallen, inp);			len -= vallen;			if (len > 0) {				printer(arg, " <Name ");				print_string((char *)inp, len, printer, arg);				printer(arg, ">");				INCPTR(len, inp);				len = 0;			} else {				printer(arg, " <No name>");			}			break;		case EAPT_SRP:			if (len < 1)				goto truncated;			GETCHAR(vallen, inp);			len--;			printer(arg, "-%d", vallen);			switch (vallen) {			case EAPSRP_CKEY:				printer(arg, " <A%.*B>", len, inp);				INCPTR(len, inp);				len = 0;				break;			case EAPSRP_CVALIDATOR:				if (len < sizeof (u_int32_t))					break;				GETLONG(uval, inp);				len -= sizeof (u_int32_t);				if (uval & SRPVAL_EBIT) {					printer(arg, " E");					uval &= ~SRPVAL_EBIT;				}				if (uval != 0) {					printer(arg, " f<%X>", uval);				}				printer(arg, " <M1%.*B%s>", len, inp,				    len == SHA_DIGESTSIZE ? "" : "?");				INCPTR(len, inp);				len = 0;				break;			case EAPSRP_ACK:				break;			case EAPSRP_LWRECHALLENGE:				printer(arg, " <Response%.*B%s>", len, inp,				    len == SHA_DIGESTSIZE ? "" : "?");				if ((vallen = len) > SHA_DIGESTSIZE)					vallen = SHA_DIGESTSIZE;				INCPTR(vallen, inp);				len -= vallen;				break;			}			break;		}		break;	case EAP_SUCCESS:	/* No payload expected for these! */	case EAP_FAILURE:		break;	truncated:		printer(arg, " <truncated>");		break;	}	if (len > 8)		printer(arg, "%8B...", inp);	else if (len > 0)		printer(arg, "%.*B", len, inp);	INCPTR(len, inp);	return (inp - pstart);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线视频不卡| 国产精品白丝在线| 国产精品天美传媒沈樵| 一区二区不卡在线播放 | 国产精品入口麻豆原神| 亚洲国产一区视频| 国产成人精品亚洲日本在线桃色| 欧美日韩精品欧美日韩精品| 国产精品免费av| 激情另类小说区图片区视频区| 欧美一区二区三区成人| 一区在线观看视频| 国产精品99久久久久久久女警| 欧美日韩国产成人在线91| 成人免费在线观看入口| 国产精品一品二品| 精品久久久久久无| 麻豆精品久久久| 日韩一区和二区| 亚洲成va人在线观看| 91视频观看免费| 国产精品短视频| 99re这里都是精品| 国产精品不卡一区二区三区| 成人污视频在线观看| 久久精品欧美一区二区三区不卡 | 精品国产区一区| 亚洲444eee在线观看| 日本久久精品电影| 伊人婷婷欧美激情| 成年人网站91| 国产精品福利在线播放| 不卡一区中文字幕| 国产精品成人免费精品自在线观看| 成人涩涩免费视频| 中文字幕一区二区不卡| youjizz国产精品| 国产精品国产三级国产aⅴ无密码| 国产成人精品三级| 欧美激情在线观看视频免费| www.性欧美| 亚洲免费毛片网站| 欧美日韩激情在线| 青青草视频一区| 久久人人爽人人爽| 成人激情综合网站| 亚洲男女一区二区三区| 欧美三级在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美一卡2卡三卡4卡5免费| 久久99蜜桃精品| 欧美国产欧美综合| 色欧美乱欧美15图片| 亚洲图片欧美一区| 欧美sm美女调教| 成人av电影在线| 亚洲免费伊人电影| 欧美一区二区三区喷汁尤物| 国产成人在线影院| 亚洲品质自拍视频| 欧美一级理论性理论a| 国产精品一级黄| 一区二区成人在线观看| 欧美一级欧美一级在线播放| 国产成人免费av在线| 一区二区三区精品视频在线| 欧美一区二区精品久久911| 国产精品一级片| 亚洲午夜免费福利视频| 精品国内片67194| 日本精品视频一区二区| 裸体歌舞表演一区二区| 国产精品国产三级国产普通话99| 欧美高清激情brazzers| 国产99精品国产| 午夜精品一区二区三区免费视频| 国产亚洲成年网址在线观看| 在线精品视频一区二区| 国产精品资源站在线| 亚洲成人av在线电影| 久久精品免费在线观看| 欧美美女一区二区在线观看| 成人短视频下载| 久久99精品久久只有精品| 亚洲视频每日更新| 久久久久久一二三区| 欧美群妇大交群的观看方式| 99re8在线精品视频免费播放| 久久精品久久精品| 香蕉影视欧美成人| 亚洲婷婷国产精品电影人久久| 亚洲精品在线观| 欧美丰满少妇xxxxx高潮对白| 97精品电影院| 成人免费高清视频在线观看| 久久99热狠狠色一区二区| 午夜影院久久久| 亚洲永久免费视频| 蜜桃视频一区二区三区在线观看| 亚洲天天做日日做天天谢日日欢| 久久久久久久久免费| 在线播放/欧美激情| 色综合久久天天综合网| 成人激情小说网站| 成人爽a毛片一区二区免费| 韩国视频一区二区| 久久91精品久久久久久秒播| 日本欧美大码aⅴ在线播放| 亚洲猫色日本管| 亚洲欧洲www| 国产精品国产三级国产aⅴ原创 | 欧美aaa在线| 性久久久久久久久| 亚洲18色成人| 秋霞午夜av一区二区三区| 亚洲电影激情视频网站| 亚洲与欧洲av电影| 亚洲成人777| 日韩电影免费一区| 日日摸夜夜添夜夜添亚洲女人| 天天综合色天天综合| 午夜a成v人精品| 免费在线看成人av| 免费高清在线一区| 美腿丝袜一区二区三区| 免费成人在线网站| 国内精品嫩模私拍在线| 国产剧情av麻豆香蕉精品| 国产福利电影一区二区三区| www.日韩在线| 欧洲生活片亚洲生活在线观看| 欧美日韩一区精品| 日韩欧美一级二级三级久久久| 精品入口麻豆88视频| 日韩欧美精品在线| 久久综合色综合88| 中文字幕日本不卡| 亚洲成a人片在线不卡一二三区| 日韩精品三区四区| 国产传媒日韩欧美成人| www.成人网.com| 欧美男男青年gay1069videost| 欧美一区二区三区思思人| 久久你懂得1024| 亚洲激情图片小说视频| 奇米一区二区三区| 粉嫩av一区二区三区| 欧美中文字幕一二三区视频| 精品久久五月天| 亚洲欧美日韩国产中文在线| 日本美女一区二区| 不卡一卡二卡三乱码免费网站| 欧美视频第二页| 久久这里只有精品首页| 一区二区三区影院| 久久aⅴ国产欧美74aaa| 99国产精品久久久久久久久久久| 69av一区二区三区| 国产精品美女久久久久久久| 午夜伊人狠狠久久| 国产91露脸合集magnet| 91麻豆精品国产91久久久久| 国产精品福利在线播放| 蜜桃av一区二区三区电影| 99久久婷婷国产| 精品国内二区三区| 亚洲国产欧美日韩另类综合 | 亚洲成人免费在线观看| 国产精品18久久久久久vr| 色偷偷一区二区三区| 久久先锋影音av鲁色资源| 洋洋av久久久久久久一区| 欧美视频中文一区二区三区在线观看| 日韩视频免费观看高清完整版在线观看| 亚洲欧洲无码一区二区三区| 久久av中文字幕片| 欧美日韩精品电影| 亚洲精品久久7777| 成人h动漫精品一区二| 精品剧情在线观看| 日产国产欧美视频一区精品| 欧美在线视频日韩| 亚洲视频一二三区| 成人免费视频app| 久久久亚洲精品石原莉奈| 日韩影视精彩在线| 欧美日韩一区二区电影| 亚洲视频一区二区在线| 成人综合婷婷国产精品久久蜜臀 | 99国产欧美另类久久久精品| 国产日韩欧美精品综合| 久久66热re国产| 欧美mv日韩mv亚洲| 麻豆精品久久精品色综合| 666欧美在线视频| 日本欧美韩国一区三区| 7777精品伊人久久久大香线蕉的| 亚洲一二三四久久| 欧美三级蜜桃2在线观看| 亚洲激情av在线|