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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? chap.c

?? 基于AT91SAM7x256的硬件平臺的WEB服務(wù)器源碼(A&shy DS版本, ucOS_II+LWIP+自己編寫的DNS查詢工具)
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*** WARNING - THIS HAS NEVER BEEN FINISHED ***//****************************************************************************** chap.c - Network Challenge Handshake Authentication Protocol program file.** Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.* portions Copyright (c) 1997 by Global Election Systems Inc.** The authors hereby grant permission to use, copy, modify, distribute,* and license this software and its documentation for any purpose, provided* that existing copyright notices are retained in all copies and that this* notice and the following disclaimer are included verbatim in any * distributions. No written agreement, license, or royalty fee is required* for any of the authorized uses.** THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************** REVISION HISTORY** 03-01-01 Marc Boucher <marc@mbsi.ca>*   Ported to lwIP.* 97-12-04 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc.*	Original based on BSD chap.c.*****************************************************************************//* * chap.c - Challenge Handshake Authentication Protocol. * * Copyright (c) 1993 The Australian National University. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by the Australian National University.  The name of the University * may not be used to endorse or promote products derived from this * software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * Copyright (c) 1991 Gregory M. Christy. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by Gregory M. Christy.  The name of the author may not be used to * endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#include "ppp.h"#if PPP_SUPPORT > 0#include "magic.h"#if CHAP_SUPPORT > 0#include "randm.h"#include "auth.h"#include "md5.h"#include "chap.h"#include "chpms.h"#include "pppdebug.h"/*************************//*** LOCAL DEFINITIONS ***//*************************//************************//*** LOCAL DATA TYPES ***//************************//***********************************//*** LOCAL FUNCTION DECLARATIONS ***//***********************************//* * Protocol entry points. */static void ChapInit (int);static void ChapLowerUp (int);static void ChapLowerDown (int);static void ChapInput (int, u_char *, int);static void ChapProtocolReject (int);static int  ChapPrintPkt (u_char *, int,			      void (*) (void *, char *, ...), void *);static void ChapChallengeTimeout (void *);static void ChapResponseTimeout (void *);static void ChapReceiveChallenge (chap_state *, u_char *, int, int);static void ChapRechallenge (void *);static void ChapReceiveResponse (chap_state *, u_char *, int, int);static void ChapReceiveSuccess(chap_state *cstate, u_char *inp, u_char id, int len);static void ChapReceiveFailure(chap_state *cstate, u_char *inp, u_char id, int len);static void ChapSendStatus (chap_state *, int);static void ChapSendChallenge (chap_state *);static void ChapSendResponse (chap_state *);static void ChapGenChallenge (chap_state *);/******************************//*** PUBLIC DATA STRUCTURES ***//******************************/chap_state chap[NUM_PPP];		/* CHAP state; one for each unit */struct protent chap_protent = {    PPP_CHAP,    ChapInit,    ChapInput,    ChapProtocolReject,    ChapLowerUp,    ChapLowerDown,    NULL,    NULL,#if 0    ChapPrintPkt,    NULL,#endif    1,    "CHAP",#if 0    NULL,    NULL,    NULL#endif};/*****************************//*** LOCAL DATA STRUCTURES ***//*****************************/static char *ChapCodenames[] = {	"Challenge", "Response", "Success", "Failure"};/***********************************//*** PUBLIC FUNCTION DEFINITIONS ***//***********************************//* * ChapAuthWithPeer - Authenticate us with our peer (start client). * */void ChapAuthWithPeer(int unit, char *our_name, int digest){	chap_state *cstate = &chap[unit];		cstate->resp_name = our_name;	cstate->resp_type = digest;		if (cstate->clientstate == CHAPCS_INITIAL ||			cstate->clientstate == CHAPCS_PENDING) {		/* lower layer isn't up - wait until later */		cstate->clientstate = CHAPCS_PENDING;		return;	}		/*	 * We get here as a result of LCP coming up.	 * So even if CHAP was open before, we will 	 * have to re-authenticate ourselves.	 */	cstate->clientstate = CHAPCS_LISTEN;}/* * ChapAuthPeer - Authenticate our peer (start server). */void ChapAuthPeer(int unit, char *our_name, int digest){	chap_state *cstate = &chap[unit];		cstate->chal_name = our_name;	cstate->chal_type = digest;		if (cstate->serverstate == CHAPSS_INITIAL ||			cstate->serverstate == CHAPSS_PENDING) {		/* lower layer isn't up - wait until later */		cstate->serverstate = CHAPSS_PENDING;		return;	}		ChapGenChallenge(cstate);	ChapSendChallenge(cstate);		/* crank it up dude! */	cstate->serverstate = CHAPSS_INITIAL_CHAL;}/**********************************//*** LOCAL FUNCTION DEFINITIONS ***//**********************************//* * ChapInit - Initialize a CHAP unit. */static void ChapInit(int unit){	chap_state *cstate = &chap[unit];		BZERO(cstate, sizeof(*cstate));	cstate->unit = unit;	cstate->clientstate = CHAPCS_INITIAL;	cstate->serverstate = CHAPSS_INITIAL;	cstate->timeouttime = CHAP_DEFTIMEOUT;	cstate->max_transmits = CHAP_DEFTRANSMITS;	/* random number generator is initialized in magic_init */}/* * ChapChallengeTimeout - Timeout expired on sending challenge. */static void ChapChallengeTimeout(void *arg){	chap_state *cstate = (chap_state *) arg;		/* if we aren't sending challenges, don't worry.  then again we */	/* probably shouldn't be here either */	if (cstate->serverstate != CHAPSS_INITIAL_CHAL &&			cstate->serverstate != CHAPSS_RECHALLENGE)		return;		if (cstate->chal_transmits >= cstate->max_transmits) {		/* give up on peer */		CHAPDEBUG((LOG_ERR, "Peer failed to respond to CHAP challenge\n"));		cstate->serverstate = CHAPSS_BADAUTH;		auth_peer_fail(cstate->unit, PPP_CHAP);		return;	}		ChapSendChallenge(cstate);		/* Re-send challenge */}/* * ChapResponseTimeout - Timeout expired on sending response. */static void ChapResponseTimeout(void *arg){	chap_state *cstate = (chap_state *) arg;		/* if we aren't sending a response, don't worry. */	if (cstate->clientstate != CHAPCS_RESPONSE)		return;		ChapSendResponse(cstate);		/* re-send response */}/* * ChapRechallenge - Time to challenge the peer again. */static void ChapRechallenge(void *arg){	chap_state *cstate = (chap_state *) arg;		/* if we aren't sending a response, don't worry. */	if (cstate->serverstate != CHAPSS_OPEN)		return;		ChapGenChallenge(cstate);	ChapSendChallenge(cstate);	cstate->serverstate = CHAPSS_RECHALLENGE;}/* * ChapLowerUp - The lower layer is up. * * Start up if we have pending requests. */static void ChapLowerUp(int unit){	chap_state *cstate = &chap[unit];		if (cstate->clientstate == CHAPCS_INITIAL)		cstate->clientstate = CHAPCS_CLOSED;	else if (cstate->clientstate == CHAPCS_PENDING)		cstate->clientstate = CHAPCS_LISTEN;		if (cstate->serverstate == CHAPSS_INITIAL)		cstate->serverstate = CHAPSS_CLOSED;	else if (cstate->serverstate == CHAPSS_PENDING) {		ChapGenChallenge(cstate);		ChapSendChallenge(cstate);		cstate->serverstate = CHAPSS_INITIAL_CHAL;	}}/* * ChapLowerDown - The lower layer is down. * * Cancel all timeouts. */static void ChapLowerDown(int unit){	chap_state *cstate = &chap[unit];		/* Timeout(s) pending?  Cancel if so. */	if (cstate->serverstate == CHAPSS_INITIAL_CHAL ||			cstate->serverstate == CHAPSS_RECHALLENGE)		UNTIMEOUT(ChapChallengeTimeout, cstate);	else if (cstate->serverstate == CHAPSS_OPEN			&& cstate->chal_interval != 0)		UNTIMEOUT(ChapRechallenge, cstate);	if (cstate->clientstate == CHAPCS_RESPONSE)		UNTIMEOUT(ChapResponseTimeout, cstate);		cstate->clientstate = CHAPCS_INITIAL;	cstate->serverstate = CHAPSS_INITIAL;}/* * ChapProtocolReject - Peer doesn't grok CHAP. */static void ChapProtocolReject(int unit){	chap_state *cstate = &chap[unit];		if (cstate->serverstate != CHAPSS_INITIAL &&			cstate->serverstate != CHAPSS_CLOSED)		auth_peer_fail(unit, PPP_CHAP);	if (cstate->clientstate != CHAPCS_INITIAL &&			cstate->clientstate != CHAPCS_CLOSED)		auth_withpeer_fail(unit, PPP_CHAP);	ChapLowerDown(unit);		/* shutdown chap */}/* * ChapInput - Input CHAP packet. */static void ChapInput(int unit, u_char *inpacket, int packet_len){	chap_state *cstate = &chap[unit];	u_char *inp;	u_char code, id;	int len;		/*	 * Parse header (code, id and length).	 * If packet too short, drop it.	 */	inp = inpacket;	if (packet_len < CHAP_HEADERLEN) {		CHAPDEBUG((LOG_INFO, "ChapInput: rcvd short header.\n"));		return;	}	GETCHAR(code, inp);	GETCHAR(id, inp);	GETSHORT(len, inp);	if (len < CHAP_HEADERLEN) {		CHAPDEBUG((LOG_INFO, "ChapInput: rcvd illegal length.\n"));		return;	}	if (len > packet_len) {		CHAPDEBUG((LOG_INFO, "ChapInput: rcvd short packet.\n"));		return;	}	len -= CHAP_HEADERLEN;		/*	 * Action depends on code (as in fact it usually does :-).	 */	switch (code) {	case CHAP_CHALLENGE:		ChapReceiveChallenge(cstate, inp, id, len);		break;		case CHAP_RESPONSE:		ChapReceiveResponse(cstate, inp, id, len);		break;		case CHAP_FAILURE:		ChapReceiveFailure(cstate, inp, id, len);		break;		case CHAP_SUCCESS:		ChapReceiveSuccess(cstate, inp, id, len);		break;		default:				/* Need code reject? */		CHAPDEBUG((LOG_WARNING, "Unknown CHAP code (%d) received.\n", code));		break;	}}/* * ChapReceiveChallenge - Receive Challenge and send Response. */static void ChapReceiveChallenge(chap_state *cstate, u_char *inp, int id, int len){	int rchallenge_len;	u_char *rchallenge;	int secret_len;	char secret[MAXSECRETLEN];	char rhostname[256];	MD5_CTX mdContext;	u_char hash[MD5_SIGNATURE_SIZE];		CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: Rcvd id %d.\n", id));	if (cstate->clientstate == CHAPCS_CLOSED ||		cstate->clientstate == CHAPCS_PENDING) {		CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: in state %d\n",			   cstate->clientstate));		return;	}		if (len < 2) {		CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: rcvd short packet.\n"));		return;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
xnxx国产精品| 91影院在线观看| 国产成人午夜精品影院观看视频| 国产精品一区二区果冻传媒| 成人av中文字幕| 欧美日韩国产一级| 久久综合九色综合欧美亚洲| 中文字幕色av一区二区三区| 日韩影院在线观看| 成人午夜看片网址| 欧美一区午夜精品| 国产精品美女一区二区三区| 亚洲一区二区三区不卡国产欧美| 精品在线免费观看| 91蜜桃在线免费视频| 欧美一级理论片| 亚洲欧美日韩在线不卡| 麻豆91在线播放免费| aaa欧美日韩| 日韩一级完整毛片| 国产精品久久久久久久蜜臀| 五月天婷婷综合| 97久久超碰国产精品电影| 欧美mv和日韩mv国产网站| 亚洲免费在线视频一区 二区| 久久精品999| 欧美影院一区二区三区| 日本一区免费视频| 精品一区二区久久久| 亚洲国产高清在线观看视频| 五月激情综合网| 99久久免费国产| 久久综合网色—综合色88| 亚洲国产乱码最新视频| 成人精品亚洲人成在线| 日韩免费视频线观看| 亚洲成在人线在线播放| 成人午夜又粗又硬又大| 欧美精品一区二区三区蜜桃| 性欧美大战久久久久久久久| 波多野结衣亚洲一区| 欧美精品一区二区久久久| 日韩有码一区二区三区| 欧美三级电影在线看| 亚洲男人的天堂一区二区| 成人av网址在线| 国产日韩欧美在线一区| 国产一区二区三区在线观看免费视频 | 日本乱码高清不卡字幕| 欧美激情综合网| 国产一区二区三区四区五区美女| 欧美一区二区三级| 日韩精品三区四区| 精品视频1区2区| 亚洲一区二区三区影院| 欧洲av一区二区嗯嗯嗯啊| 亚洲欧美国产毛片在线| av电影天堂一区二区在线观看| 国产日韩欧美精品综合| 国产高清在线精品| 久久久不卡网国产精品二区 | 2020国产精品久久精品美国| 麻豆免费看一区二区三区| 欧美一区二区三区视频在线 | 日韩精品一区二区三区中文不卡 | 久久亚洲捆绑美女| 美国一区二区三区在线播放| 91精品国产综合久久精品| 婷婷激情综合网| 91精品国模一区二区三区| 日本强好片久久久久久aaa| 欧美日韩黄色一区二区| 午夜欧美大尺度福利影院在线看| 一本色道亚洲精品aⅴ| 欧美一区二区在线免费播放| 亚洲成人动漫av| 欧美巨大另类极品videosbest | 欧美中文字幕一区| 亚洲国产精品一区二区尤物区| 欧美在线视频不卡| 三级在线观看一区二区| 欧美大尺度电影在线| 久久精品国产一区二区三 | 波多野结衣亚洲| 一区二区三区中文字幕| 欧美日韩小视频| 日韩电影免费一区| 精品欧美黑人一区二区三区| 国产伦精一区二区三区| 一色屋精品亚洲香蕉网站| 在线视频一区二区三区| 日本不卡的三区四区五区| 精品国产免费视频| 成人性生交大片| 一区二区三区精品视频| 欧美一卡二卡三卡| 国产成人在线网站| 亚洲男人的天堂网| 欧美一区二区在线视频| 国产精品一区二区视频| 中文字幕亚洲成人| 欧美精品777| 国产成人精品免费网站| 亚洲乱码国产乱码精品精小说| 欧美日韩一区在线观看| 久久成人免费电影| 日韩一区在线看| 亚洲自拍另类综合| 成人在线综合网| 亚洲精品国产a| 日韩三区在线观看| 成人免费视频一区| 亚洲国产中文字幕在线视频综合 | 裸体在线国模精品偷拍| 国产精品久久久久久久久搜平片 | 麻豆传媒一区二区三区| 中文字幕日韩一区二区| 在线成人高清不卡| 国产成人av电影在线播放| 亚洲综合色视频| 26uuu精品一区二区在线观看| 91美女视频网站| 麻豆91精品视频| 欧美在线观看视频在线| 青青青爽久久午夜综合久久午夜| 国产日韩欧美不卡在线| 欧美日韩久久久一区| 成人午夜视频网站| 蜜臀久久99精品久久久久宅男 | 91在线视频网址| 久久99精品久久久久婷婷| 亚洲你懂的在线视频| 国产亚洲午夜高清国产拍精品| 欧美色偷偷大香| 99国产精品久久| 韩国精品主播一区二区在线观看| 伊人婷婷欧美激情| 国产亚洲精品超碰| 欧美一区二区三区不卡| 91国偷自产一区二区使用方法| 国产一区二区毛片| 午夜电影一区二区| 中文字幕佐山爱一区二区免费| 精品国产一区二区国模嫣然| 欧美日本在线观看| 91丨porny丨蝌蚪视频| 国产一区二区毛片| 欧美aaaaaa午夜精品| 亚洲黄色录像片| 国产精品伦一区二区三级视频| 欧美成人女星排名| 欧美精品乱人伦久久久久久| 男女性色大片免费观看一区二区 | 欧美亚洲国产一卡| www.成人网.com| 国产成人午夜电影网| 黄色精品一二区| 男女性色大片免费观看一区二区| 亚洲一区二区黄色| 亚洲乱码中文字幕综合| 1区2区3区欧美| 中文在线资源观看网站视频免费不卡| 日韩精品一区二区三区三区免费 | 国产裸体歌舞团一区二区| 免费高清在线视频一区·| 亚洲高清免费在线| 亚洲成人免费av| 亚洲国产成人精品视频| 一区二区三区视频在线看| 日韩理论在线观看| 亚洲日本va午夜在线影院| 国产精品美女久久久久久久 | 日本伦理一区二区| 91麻豆蜜桃一区二区三区| 97久久精品人人做人人爽50路| 成人不卡免费av| 99热精品国产| 91论坛在线播放| 一道本成人在线| 在线视频国产一区| 欧美中文字幕一区二区三区亚洲| 日本高清不卡aⅴ免费网站| 91老司机福利 在线| 一本久久综合亚洲鲁鲁五月天 | 欧美高清视频在线高清观看mv色露露十八| 91免费版pro下载短视频| 一本在线高清不卡dvd| 91麻豆福利精品推荐| 在线一区二区视频| 欧美无乱码久久久免费午夜一区| 在线亚洲精品福利网址导航| 在线观看91视频| 欧美老肥妇做.爰bbww视频| 欧美一区二区国产| 欧美成人官网二区| 久久综合狠狠综合| 中文一区一区三区高中清不卡| 国产精品高潮呻吟| 一区二区在线观看视频| 亚洲一区二区三区国产|