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

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

?? eap.c

?? 自己精簡過的PPPD代碼。在嵌入中應用可以更好的發揮。比原先的小了很多
?? C
?? 第 1 頁 / 共 4 頁
字號:
			esp->es_server.ea_skey = NULL;		}#endif /* USE_SRP */		if (status != 0 || esp->es_server.ea_session == NULL) {			esp->es_server.ea_state = eapBadAuth;		} else {			esp->es_server.ea_state = eapOpen;		}		break;	case eapMD5Chall:		if (status != 0) {			esp->es_server.ea_state = eapBadAuth;		} else {			esp->es_server.ea_state = eapOpen;		}		break;	default:		esp->es_server.ea_state = eapBadAuth;		break;	}	if (esp->es_server.ea_state == eapBadAuth)		eap_send_failure(esp);}/* * Format an EAP Request message and send it to the peer.  Message * type depends on current state.  (Server operation) */static voideap_send_request(esp)eap_state *esp;{	u_char *outp;	u_char *lenloc;	u_char *ptr;	int outlen;	int challen;	char *str;#ifdef USE_SRP	struct t_server *ts;	u_char clear[8], cipher[8], dig[SHA_DIGESTSIZE], *optr, *cp;	int i, j;	struct b64state b64;	SHA1_CTX ctxt;#endif /* USE_SRP */	/* Handle both initial auth and restart */	if (esp->es_server.ea_state < eapIdentify &&	    esp->es_server.ea_state != eapInitial) {		esp->es_server.ea_state = eapIdentify;		if (explicit_remote) {			/*			 * If we already know the peer's			 * unauthenticated name, then there's no			 * reason to ask.  Go to next state instead.			 */			esp->es_server.ea_peer = remote_name;			esp->es_server.ea_peerlen = strlen(remote_name);			eap_figure_next_state(esp, 0);		}	}	if (esp->es_server.ea_maxrequests > 0 &&	    esp->es_server.ea_requests >= esp->es_server.ea_maxrequests) {		if (esp->es_server.ea_responses > 0)			error("EAP: too many Requests sent");		else			error("EAP: no response to Requests");		eap_send_failure(esp);		return;	}	outp = outpacket_buf;    	MAKEHEADER(outp, PPP_EAP);	PUTCHAR(EAP_REQUEST, outp);	PUTCHAR(esp->es_server.ea_id, outp);	lenloc = outp;	INCPTR(2, outp);	switch (esp->es_server.ea_state) {	case eapIdentify:		PUTCHAR(EAPT_IDENTITY, outp);		str = "Name";		challen = strlen(str);		BCOPY(str, outp, challen);		INCPTR(challen, outp);		break;	case eapMD5Chall:		PUTCHAR(EAPT_MD5CHAP, outp);		/*		 * pick a random challenge length between		 * MIN_CHALLENGE_LENGTH and MAX_CHALLENGE_LENGTH		 */		challen = (drand48() *		    (MAX_CHALLENGE_LENGTH - MIN_CHALLENGE_LENGTH)) +			    MIN_CHALLENGE_LENGTH;		PUTCHAR(challen, outp);		esp->es_challen = challen;		ptr = esp->es_challenge;		while (--challen >= 0)			*ptr++ = (u_char) (drand48() * 0x100);		BCOPY(esp->es_challenge, outp, esp->es_challen);		INCPTR(esp->es_challen, outp);		BCOPY(esp->es_server.ea_name, outp, esp->es_server.ea_namelen);		INCPTR(esp->es_server.ea_namelen, outp);		break;#ifdef USE_SRP	case eapSRP1:		PUTCHAR(EAPT_SRP, outp);		PUTCHAR(EAPSRP_CHALLENGE, outp);		PUTCHAR(esp->es_server.ea_namelen, outp);		BCOPY(esp->es_server.ea_name, outp, esp->es_server.ea_namelen);		INCPTR(esp->es_server.ea_namelen, outp);		ts = (struct t_server *)esp->es_server.ea_session;		assert(ts != NULL);		PUTCHAR(ts->s.len, outp);		BCOPY(ts->s.data, outp, ts->s.len);		INCPTR(ts->s.len, outp);		if (ts->g.len == 1 && ts->g.data[0] == 2) {			PUTCHAR(0, outp);		} else {			PUTCHAR(ts->g.len, outp);			BCOPY(ts->g.data, outp, ts->g.len);			INCPTR(ts->g.len, outp);		}		if (ts->n.len != sizeof (wkmodulus) ||		    BCMP(ts->n.data, wkmodulus, sizeof (wkmodulus)) != 0) {			BCOPY(ts->n.data, outp, ts->n.len);			INCPTR(ts->n.len, outp);		}		break;	case eapSRP2:		PUTCHAR(EAPT_SRP, outp);		PUTCHAR(EAPSRP_SKEY, outp);		ts = (struct t_server *)esp->es_server.ea_session;		assert(ts != NULL);		BCOPY(ts->B.data, outp, ts->B.len);		INCPTR(ts->B.len, outp);		break;	case eapSRP3:		PUTCHAR(EAPT_SRP, outp);		PUTCHAR(EAPSRP_SVALIDATOR, outp);		PUTLONG(SRPVAL_EBIT, outp);		ts = (struct t_server *)esp->es_server.ea_session;		assert(ts != NULL);		BCOPY(t_serverresponse(ts), outp, SHA_DIGESTSIZE);		INCPTR(SHA_DIGESTSIZE, outp);		if (pncrypt_setkey(0)) {			/* Generate pseudonym */			optr = outp;			cp = (unsigned char *)esp->es_server.ea_peer;			if ((j = i = esp->es_server.ea_peerlen) > 7)				j = 7;			clear[0] = i;			BCOPY(cp, clear + 1, j);			i -= j;			cp += j;			if (!DesEncrypt(clear, cipher)) {				dbglog("no DES here; not generating pseudonym");				break;			}			BZERO(&b64, sizeof (b64));			outp++;		/* space for pseudonym length */			outp += b64enc(&b64, cipher, 8, outp);			while (i >= 8) {				(void) DesEncrypt(cp, cipher);				outp += b64enc(&b64, cipher, 8, outp);				cp += 8;				i -= 8;			}			if (i > 0) {				BCOPY(cp, clear, i);				cp += i;				while (i < 8) {					*cp++ = drand48() * 0x100;					i++;				}				(void) DesEncrypt(clear, cipher);				outp += b64enc(&b64, cipher, 8, outp);			}			outp += b64flush(&b64, outp);			/* Set length and pad out to next 20 octet boundary */			i = outp - optr - 1;			*optr = i;			i %= SHA_DIGESTSIZE;			if (i != 0) {				while (i < SHA_DIGESTSIZE) {					*outp++ = drand48() * 0x100;					i++;				}			}			/* Obscure the pseudonym with SHA1 hash */			SHA1Init(&ctxt);			SHA1Update(&ctxt, &esp->es_server.ea_id, 1);			SHA1Update(&ctxt, esp->es_server.ea_skey,			    SESSION_KEY_LEN);			SHA1Update(&ctxt, esp->es_server.ea_peer,			    esp->es_server.ea_peerlen);			while (optr < outp) {				SHA1Final(dig, &ctxt);				cp = dig;				while (cp < dig + SHA_DIGESTSIZE)					*optr++ ^= *cp++;				SHA1Init(&ctxt);				SHA1Update(&ctxt, &esp->es_server.ea_id, 1);				SHA1Update(&ctxt, esp->es_server.ea_skey,				    SESSION_KEY_LEN);				SHA1Update(&ctxt, optr - SHA_DIGESTSIZE,				    SHA_DIGESTSIZE);			}		}		break;	case eapSRP4:		PUTCHAR(EAPT_SRP, outp);		PUTCHAR(EAPSRP_LWRECHALLENGE, outp);		challen = MIN_CHALLENGE_LENGTH +		    ((MAX_CHALLENGE_LENGTH - MIN_CHALLENGE_LENGTH) * drand48());		esp->es_challen = challen;		ptr = esp->es_challenge;		while (--challen >= 0)			*ptr++ = drand48() * 0x100;		BCOPY(esp->es_challenge, outp, esp->es_challen);		INCPTR(esp->es_challen, outp);		break;#endif /* USE_SRP */	default:		return;	}	outlen = (outp - outpacket_buf) - PPP_HDRLEN;	PUTSHORT(outlen, lenloc);	output(esp->es_unit, outpacket_buf, outlen + PPP_HDRLEN);	esp->es_server.ea_requests++;	if (esp->es_server.ea_timeout > 0)		TIMEOUT(eap_server_timeout, esp, esp->es_server.ea_timeout);}/* * eap_authpeer - Authenticate our peer (behave as server). * * Start server state and send first request.  This is called only * after eap_lowerup. */voideap_authpeer(unit, localname)int unit;char *localname;{	eap_state *esp = &eap_states[unit];	/* Save the name we're given. */	esp->es_server.ea_name = localname;	esp->es_server.ea_namelen = strlen(localname);	esp->es_savedtime = esp->es_server.ea_timeout;	/* Lower layer up yet? */	if (esp->es_server.ea_state == eapInitial ||	    esp->es_server.ea_state == eapPending) {		esp->es_server.ea_state = eapPending;		return;	}	esp->es_server.ea_state = eapPending;	/* ID number not updated here intentionally; hashed into M1 */	eap_send_request(esp);}/* * eap_server_timeout - Retransmission timer for sending Requests * expired. */static voideap_server_timeout(arg)void *arg;{	eap_state *esp = (eap_state *) arg;	if (!eap_server_active(esp))		return;	/* EAP ID number must not change on timeout. */	eap_send_request(esp);}/* * When it's time to send rechallenge the peer, this timeout is * called.  Once the rechallenge is successful, the response handler * will restart the timer.  If it fails, then the link is dropped. */static voideap_rechallenge(arg)void *arg;{	eap_state *esp = (eap_state *)arg;	if (esp->es_server.ea_state != eapOpen &&	    esp->es_server.ea_state != eapSRP4)		return;	esp->es_server.ea_requests = 0;	esp->es_server.ea_state = eapIdentify;	eap_figure_next_state(esp, 0);	esp->es_server.ea_id++;	eap_send_request(esp);}static voidsrp_lwrechallenge(arg)void *arg;{	eap_state *esp = (eap_state *)arg;	if (esp->es_server.ea_state != eapOpen ||	    esp->es_server.ea_type != EAPT_SRP)		return;	esp->es_server.ea_requests = 0;	esp->es_server.ea_state = eapSRP4;	esp->es_server.ea_id++;	eap_send_request(esp);}/* * eap_lowerup - The lower layer is now up. * * This is called before either eap_authpeer or eap_authwithpeer.  See * link_established() in auth.c.  All that's necessary here is to * return to closed state so that those two routines will do the right * thing. */static voideap_lowerup(unit)int unit;{	eap_state *esp = &eap_states[unit];	/* Discard any (possibly authenticated) peer name. */	if (esp->es_server.ea_peer != NULL &&	    esp->es_server.ea_peer != remote_name)		free(esp->es_server.ea_peer);	esp->es_server.ea_peer = NULL;	if (esp->es_client.ea_peer != NULL)		free(esp->es_client.ea_peer);	esp->es_client.ea_peer = NULL;	esp->es_client.ea_state = eapClosed;	esp->es_server.ea_state = eapClosed;}/* * eap_lowerdown - The lower layer is now down. * * Cancel all timeouts and return to initial state. */static voideap_lowerdown(unit)int unit;{	eap_state *esp = &eap_states[unit];	if (eap_client_active(esp) && esp->es_client.ea_timeout > 0) {		UNTIMEOUT(eap_client_timeout, (void *)esp);	}	if (eap_server_active(esp)) {		if (esp->es_server.ea_timeout > 0) {			UNTIMEOUT(eap_server_timeout, (void *)esp);		}	} else {		if ((esp->es_server.ea_state == eapOpen ||		    esp->es_server.ea_state == eapSRP4) &&		    esp->es_rechallenge > 0) {			UNTIMEOUT(eap_rechallenge, (void *)esp);		}		if (esp->es_server.ea_state == eapOpen &&		    esp->es_lwrechallenge > 0) {			UNTIMEOUT(srp_lwrechallenge, (void *)esp);		}	}	esp->es_client.ea_state = esp->es_server.ea_state = eapInitial;	esp->es_client.ea_requests = esp->es_server.ea_requests = 0;}/* * eap_protrej - Peer doesn't speak this protocol. * * This shouldn't happen.  If it does, it represents authentication * failure. */static voideap_protrej(unit)int unit;{	eap_state *esp = &eap_states[unit];	if (eap_client_active(esp)) {		error("EAP authentication failed due to Protocol-Reject");		auth_withpeer_fail(unit, PPP_EAP);	}	if (eap_server_active(esp)) {		error("EAP authentication of peer failed on Protocol-Reject");		auth_peer_fail(unit, PPP_EAP);	}	eap_lowerdown(unit);}/* * Format and send a regular EAP Response message. */static voideap_send_response(esp, id, typenum, str, lenstr)eap_state *esp;u_char id;u_char typenum;u_char *str;int lenstr;{	u_char *outp;	int msglen;	outp = outpacket_buf;	MAKEHEADER(outp, PPP_EAP);	PUTCHAR(EAP_RESPONSE, outp);	PUTCHAR(id, outp);	esp->es_client.ea_id = id;	msglen = EAP_HEADERLEN + sizeof (u_char) + lenstr;	PUTSHORT(msglen, outp);	PUTCHAR(typenum, outp);	if (lenstr > 0) {		BCOPY(str, outp, lenstr);	}	output(esp->es_unit, outpacket_buf, PPP_HDRLEN + msglen);}/* * Format and send an MD5-Challenge EAP Response message. */static voideap_chap_response(esp, id, hash, name, namelen)eap_state *esp;u_char id;u_char *hash;char *name;int namelen;{	u_char *outp;	int msglen;	outp = outpacket_buf;    	MAKEHEADER(outp, PPP_EAP);	PUTCHAR(EAP_RESPONSE, outp);	PUTCHAR(id, outp);	esp->es_client.ea_id = id;	msglen = EAP_HEADERLEN + 2 * sizeof (u_char) + MD5_SIGNATURE_SIZE +	    namelen;	PUTSHORT(msglen, outp);	PUTCHAR(EAPT_MD5CHAP, outp);	PUTCHAR(MD5_SIGNATURE_SIZE, outp);	BCOPY(hash, outp, MD5_SIGNATURE_SIZE);	INCPTR(MD5_SIGNATURE_SIZE, outp);	if (namelen > 0) {		BCOPY(name, outp, namelen);	}	output(esp->es_unit, outpacket_buf, PPP_HDRLEN + msglen);}#ifdef USE_SRP/* * Format and send a SRP EAP Response message. */static voideap_srp_response(esp, id, subtypenum, str, lenstr)eap_state *esp;u_char id;u_char subtypenum;u_char *str;int lenstr;{	u_char *outp;	int msglen;	outp = outpacket_buf;    	MAKEHEADER(outp, PPP_EAP);	PUTCHAR(EAP_RESPONSE, outp);	PUTCHAR(id, outp);	esp->es_client.ea_id = id;	msglen = EAP_HEADERLEN + 2 * sizeof (u_char) + lenstr;	PUTSHORT(msglen, outp);	PUTCHAR(EAPT_SRP, outp);	PUTCHAR(subtypenum, outp);	if (lenstr > 0) {		BCOPY(str, outp, lenstr);	}	output(esp->es_unit, outpacket_buf, PPP_HDRLEN + msglen);}/* * Format and send a SRP EAP Client Validator Response message. */static voideap_srpval_response(esp, id, flags, str)eap_state *esp;u_char id;u_int32_t flags;u_char *str;{	u_char *outp;	int msglen;	outp = outpacket_buf;    	MAKEHEADER(outp, PPP_EAP);	PUTCHAR(EAP_RESPONSE, outp);	PUTCHAR(id, outp);	esp->es_client.ea_id = id;	msglen = EAP_HEADERLEN + 2 * sizeof (u_char) + sizeof (u_int32_t) +	    SHA_DIGESTSIZE;	PUTSHORT(msglen, outp);	PUTCHAR(EAPT_SRP, outp);	PUTCHAR(EAPSRP_CVALIDATOR, outp);	PUTLONG(flags, outp);	BCOPY(str, outp, SHA_DIGESTSIZE);	output(esp->es_unit, outpacket_buf, PPP_HDRLEN + msglen);}#endif /* USE_SRP */static voideap_send_nak(esp, id, type)eap_state *esp;u_char id;u_char type;{	u_char *outp;	int msglen;	outp = outpacket_buf;	MAKEHEADER(outp, PPP_EAP);	PUTCHAR(EAP_RESPONSE, outp);	PUTCHAR(id, outp);	esp->es_client.ea_id = id;	msglen = EAP_HEADERLEN + 2 * sizeof (u_char);	PUTSHORT(msglen, outp);	PUTCHAR(EAPT_NAK, outp);	PUTCHAR(type, outp);	output(esp->es_unit, outpacket_buf, PPP_HDRLEN + msglen);}#ifdef USE_SRPstatic char *name_of_pn_file(){	char *user, *path, *file;	struct passwd *pw;	size_t pl;	static bool pnlogged = 0;	pw = getpwuid(getuid());	if (pw == NULL || (user = pw->pw_dir) == NULL || user[0] == 0) {		errno = EINVAL;		return (NULL);	}	file = _PATH_PSEUDONYM;	pl = strlen(user) + strlen(file) + 2;	path = malloc(pl);	if (path == NULL)		return (NULL);	(void) slprintf(path, pl, "%s/%s", user, file);	if (!pnlogged) {		dbglog("pseudonym file: %s", path);		pnlogged = 1;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www成人在线观看| 日韩高清一级片| 日本亚洲欧美天堂免费| 成人久久18免费网站麻豆 | 国产成+人+日韩+欧美+亚洲| 色综合久久综合网欧美综合网| 日韩欧美一二三四区| 一区二区三区四区不卡在线| 国产精品中文字幕一区二区三区| 欧日韩精品视频| 欧美国产视频在线| 国产真实精品久久二三区| 欧美日韩亚洲综合一区| 综合婷婷亚洲小说| 成人免费看视频| 精品国产伦理网| 日韩精品成人一区二区在线| 欧洲一区在线观看| 不卡的电影网站| 日韩写真欧美这视频| 亚洲电影欧美电影有声小说| 91天堂素人约啪| 中文字幕一区二区在线播放| 国产一区二区精品在线观看| 精品美女被调教视频大全网站| 日韩精品视频网| 欧美日本国产一区| 肉色丝袜一区二区| 欧美精品xxxxbbbb| 日本vs亚洲vs韩国一区三区| 欧美一区二区三区系列电影| 日韩高清一区二区| 日韩视频一区二区三区在线播放| 日本少妇一区二区| 欧美xxxxxxxx| 精品一区二区在线观看| 精品国产制服丝袜高跟| 精品在线亚洲视频| 久久精品视频一区二区| 国产福利视频一区二区三区| 中文字幕国产精品一区二区| 成人国产视频在线观看| 中文字幕一区二区三区在线观看| 成人影视亚洲图片在线| 亚洲欧洲一区二区三区| 色猫猫国产区一区二在线视频| 亚洲午夜电影在线观看| 在线播放一区二区三区| 美女视频一区在线观看| 久久精品人人做人人综合| av在线播放成人| 一区二区国产视频| 欧美一级精品大片| 国产精品一区在线| 亚洲女爱视频在线| 欧美卡1卡2卡| 国产精品一区免费在线观看| 亚洲三级视频在线观看| 777欧美精品| 国产成a人亚洲精| 亚洲精品国产精华液| 日韩一区二区三区四区五区六区| 久久疯狂做爰流白浆xx| 国产精品三级av| 欧美日韩成人在线| 国产成人啪午夜精品网站男同| 国产精品久久久久久久久图文区| 欧美日免费三级在线| 激情综合色丁香一区二区| 18欧美亚洲精品| 欧美一级黄色大片| 91免费视频网| 久久草av在线| 亚洲精品国产视频| 久久久久久久久久久久久久久99| 色哟哟一区二区| 国产又粗又猛又爽又黄91精品| 夜夜嗨av一区二区三区中文字幕| 精品福利二区三区| 欧美亚洲动漫精品| 成人高清免费观看| 美女久久久精品| 亚洲精选在线视频| 国产精品污网站| 日韩欧美色综合网站| 在线观看av一区| bt7086福利一区国产| 久久99精品国产91久久来源| 一区二区在线观看不卡| 欧美国产综合色视频| 精品少妇一区二区三区免费观看| 欧美亚洲尤物久久| 99久久免费精品高清特色大片| 黄色日韩三级电影| 免费高清不卡av| 日韩福利电影在线| 亚洲国产一二三| 一区二区三区av电影| 国产精品国产精品国产专区不蜜 | 日本三级亚洲精品| 亚洲精品乱码久久久久久黑人| 国产欧美日韩麻豆91| 日韩欧美三级在线| 91精品国产欧美一区二区| 欧美性感一区二区三区| 色综合一个色综合亚洲| 粉嫩绯色av一区二区在线观看| 国产综合色在线| 国产一区啦啦啦在线观看| 免费美女久久99| 麻豆精品新av中文字幕| 秋霞国产午夜精品免费视频| 日韩在线卡一卡二| 亚洲sss视频在线视频| 亚洲综合色网站| 一区二区三国产精华液| 亚洲一区二区三区四区不卡| 亚洲综合丝袜美腿| 午夜精品久久久久久久| 亚洲午夜国产一区99re久久| 亚洲成av人片www| 视频一区国产视频| 96av麻豆蜜桃一区二区| 99r国产精品| 在线观看日产精品| 精品视频在线看| 欧美另类一区二区三区| 91精品国产日韩91久久久久久| 日韩欧美电影一区| 国产日韩欧美a| 中文字幕一区二区三区在线不卡 | 亚洲v中文字幕| 日本三级韩国三级欧美三级| 麻豆成人在线观看| 国产91丝袜在线18| av色综合久久天堂av综合| 91久久精品国产91性色tv| 欧美网站一区二区| 日韩欧美美女一区二区三区| 国产丝袜欧美中文另类| 一区二区中文视频| 五月天久久比比资源色| 国产在线看一区| 在线观看日韩国产| 2021中文字幕一区亚洲| 综合久久国产九一剧情麻豆| 视频一区二区三区入口| 国产福利91精品一区| 91九色02白丝porn| 欧美v国产在线一区二区三区| 国产欧美日韩不卡| 亚洲高清一区二区三区| 韩国在线一区二区| 日本丶国产丶欧美色综合| 精品国产乱码久久久久久浪潮| 最近日韩中文字幕| 九色porny丨国产精品| 99国产一区二区三精品乱码| 日韩欧美国产成人一区二区| 亚洲三级久久久| 国产在线精品不卡| 欧美精品乱码久久久久久| 国产女人aaa级久久久级| 亚洲妇女屁股眼交7| 丰满少妇在线播放bd日韩电影| 在线电影一区二区三区| 国产精品伦理在线| 久久福利视频一区二区| 欧洲人成人精品| 亚洲国产精品ⅴa在线观看| 日本一区中文字幕 | 777午夜精品视频在线播放| 国产精品久久777777| 麻豆国产精品官网| 欧美日韩一区二区三区四区| 国产精品嫩草99a| 久久99精品国产麻豆婷婷洗澡| 欧美视频三区在线播放| 国产精品电影院| 国产精品99久久久| 精品国产免费久久 | 成人欧美一区二区三区| 国产精品自拍一区| 欧美精品一区二区久久婷婷| 日韩国产在线一| 欧美日韩美少妇| 一区二区三区不卡视频| 91传媒视频在线播放| 国产精品二三区| 99精品偷自拍| 美女一区二区在线观看| 91精品黄色片免费大全| 五月激情丁香一区二区三区| 色香蕉成人二区免费| 欧美国产一区二区在线观看| 国产成人精品午夜视频免费| 久久久久久综合| 国产一区二区三区日韩| 久久亚洲免费视频| 狠狠色综合日日|