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

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

?? chap.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* chap.c - Crytographic Handshake Authentication Protocol *//* Copyright 1995 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * 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. *//*modification history--------------------01e,30jun95,dzb  removed floating point operation (srand48() and drand48()).01d,16jun95,dzb  header file consolidation.                 changed [UN]TIMEOUT macros to PPP_[UN]TIMEOUT.01c,08jun95,dzb  changed CHAP response messages to be more informative.01b,16jan95,dzb  changed to use PPP specific md5 routines.01a,21dec94,dab  VxWorks port - first WRS version.           +dzb  added: path for ppp header files, WRS copyright, NO_DRAND48.*/#include "vxWorks.h"#include "stdio.h"#include "string.h"#include "sys/types.h"#include "sys/times.h"#include "pppLib.h"static void ChapChallengeTimeout __ARGS((caddr_t));static void ChapResponseTimeout __ARGS((caddr_t));static void ChapReceiveChallenge __ARGS((chap_state *, u_char *, int, int));static void ChapReceiveResponse __ARGS((chap_state *, u_char *, int, int));static void ChapReceiveSuccess __ARGS((chap_state *, u_char *, int, int));static void ChapReceiveFailure __ARGS((chap_state *, u_char *, int, int));static void ChapSendStatus __ARGS((chap_state *, int));static void ChapSendChallenge __ARGS((chap_state *));static void ChapSendResponse __ARGS((chap_state *));static void ChapGenChallenge __ARGS((chap_state *));/* * ChapInit - Initialize a CHAP unit. */voidChapInit(unit)    int unit;{    chap_state *cstate = &ppp_if[unit]->chap;    BZERO((char *)cstate, sizeof(*cstate));    cstate->unit = unit;    cstate->clientstate = CHAPCS_INITIAL;    cstate->serverstate = CHAPSS_INITIAL;    cstate->timeouttime = CHAP_DEFTIMEOUT;    cstate->max_transmits = CHAP_DEFTRANSMITS;    srandom((long) time(NULL));	/* joggle random number generator */}/* * ChapAuthWithPeer - Authenticate us with our peer (start client). * */voidChapAuthWithPeer(unit, our_name, digest)    int unit;    char *our_name;    int digest;{    chap_state *cstate = &ppp_if[unit]->chap;    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). */voidChapAuthPeer(unit, our_name, digest)    int unit;    char *our_name;    int digest;{    chap_state *cstate = &ppp_if[unit]->chap;      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;}/* * ChapChallengeTimeout - Timeout expired on sending challenge. */static voidChapChallengeTimeout(arg)    caddr_t 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 */	syslog(LOG_ERR, "Peer failed to respond to CHAP challenge");	cstate->serverstate = CHAPSS_BADAUTH;	auth_peer_fail(cstate->unit, CHAP);	return;    }    ChapSendChallenge(cstate);		/* Re-send challenge */}/* * ChapResponseTimeout - Timeout expired on sending response. */static voidChapResponseTimeout(arg)    caddr_t 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 voidChapRechallenge(arg)    caddr_t 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;    if (cstate->chal_interval != 0)	PPP_TIMEOUT(ChapRechallenge, (caddr_t) cstate, cstate->chal_interval);}/* * ChapLowerUp - The lower layer is up. * * Start up if we have pending requests. */voidChapLowerUp(unit)    int unit;{    chap_state *cstate = &ppp_if[unit]->chap;      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. */voidChapLowerDown(unit)    int unit;{    chap_state *cstate = &ppp_if[unit]->chap;      /* Timeout(s) pending?  Cancel if so. */    if (cstate->serverstate == CHAPSS_INITIAL_CHAL ||	cstate->serverstate == CHAPSS_RECHALLENGE)	PPP_UNTIMEOUT(ChapChallengeTimeout, (caddr_t) cstate);    else if (cstate->serverstate == CHAPSS_OPEN	     && cstate->chal_interval != 0)	PPP_UNTIMEOUT(ChapRechallenge, (caddr_t) cstate);    if (cstate->clientstate == CHAPCS_RESPONSE)	PPP_UNTIMEOUT(ChapResponseTimeout, (caddr_t) cstate);    cstate->clientstate = CHAPCS_INITIAL;    cstate->serverstate = CHAPSS_INITIAL;}/* * ChapProtocolReject - Peer doesn't grok CHAP. */voidChapProtocolReject(unit)    int unit;{    chap_state *cstate = &ppp_if[unit]->chap;    if (cstate->serverstate != CHAPSS_INITIAL &&	cstate->serverstate != CHAPSS_CLOSED)	auth_peer_fail(unit, CHAP);    if (cstate->clientstate != CHAPCS_INITIAL &&	cstate->clientstate != CHAPCS_CLOSED)	auth_withpeer_fail(unit, CHAP);    ChapLowerDown(unit);		/* shutdown chap */}/* * ChapInput - Input CHAP packet. */voidChapInput(unit, inpacket, packet_len)    int unit;    u_char *inpacket;    int packet_len;{    chap_state *cstate = &ppp_if[unit]->chap;    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."));	return;    }    GETCHAR(code, inp);    GETCHAR(id, inp);    GETSHORT(len, inp);    if (len < CHAP_HEADERLEN) {	CHAPDEBUG((LOG_INFO, "ChapInput: rcvd illegal length."));	return;    }    if (len > packet_len) {	CHAPDEBUG((LOG_INFO, "ChapInput: rcvd short packet."));	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? */	syslog(LOG_WARNING, "Unknown CHAP code (%d) received.", code);	break;    }}/* * ChapReceiveChallenge - Receive Challenge and send Response. */static voidChapReceiveChallenge(cstate, inp, id, len)    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;     CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: Rcvd id %d.", id));    if (cstate->clientstate == CHAPCS_CLOSED ||	cstate->clientstate == CHAPCS_PENDING) {	CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: in state %d",		   cstate->clientstate));	return;    }    if (len < 2) {	CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: rcvd short packet."));	return;    }    GETCHAR(rchallenge_len, inp);    len -= sizeof (u_char) + rchallenge_len;	/* now name field length */    if (len < 0) {	CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: rcvd short packet."));	return;    }    rchallenge = inp;    INCPTR(rchallenge_len, inp);    if (len >= sizeof(rhostname))	len = sizeof(rhostname) - 1;    BCOPY((char *)inp, rhostname, len);    rhostname[len] = '\000';    CHAPDEBUG((LOG_INFO, "ChapReceiveChallenge: received name field: %s",	       rhostname));    /* get secret for authenticating ourselves with the specified host */    if (!get_secret(cstate->unit, cstate->resp_name, rhostname,		    secret, &secret_len, 0)) {	secret_len = 0;		/* assume null secret if can't find one */	syslog(LOG_WARNING, "No CHAP secret found for authenticating us to %s",	       rhostname);    }    /* cancel response send timeout if necessary */    if (cstate->clientstate == CHAPCS_RESPONSE)	PPP_UNTIMEOUT(ChapResponseTimeout, (caddr_t) cstate);    cstate->resp_id = id;    cstate->resp_transmits = 0;    /*  generate MD based on negotiated type */    switch (cstate->resp_type) {     case CHAP_DIGEST_MD5:		/* only MD5 is defined for now */	ppp_MD5Init(&mdContext);	ppp_MD5Update(&mdContext, &cstate->resp_id, 1);	ppp_MD5Update(&mdContext, (u_char *) secret, secret_len);	ppp_MD5Update(&mdContext, rchallenge, rchallenge_len);	ppp_MD5Final(&mdContext);	BCOPY((char *)mdContext.digest, (char *)cstate->response,              MD5_SIGNATURE_SIZE);	cstate->resp_length = MD5_SIGNATURE_SIZE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜在线视频| 91免费看片在线观看| 国产精品香蕉一区二区三区| 国产一区亚洲一区| 国产精品一区免费在线观看| 从欧美一区二区三区| 99久久国产综合精品色伊| 色婷婷国产精品| 欧美精品日韩精品| 天天色图综合网| 丁香桃色午夜亚洲一区二区三区| 亚洲精品福利视频网站| 91精品国产福利在线观看| 国产综合成人久久大片91| 91麻豆产精品久久久久久| 欧美激情一区在线| 日韩免费观看高清完整版| 日韩美女一区二区三区| 中文字幕不卡在线播放| 天天综合天天综合色| 国产一区二区三区最好精华液| 91影院在线观看| 欧美精品一区二区在线观看| 亚洲精品午夜久久久| 久久国产麻豆精品| 91久久香蕉国产日韩欧美9色| 日韩欧美激情在线| 亚洲色欲色欲www在线观看| 免费人成网站在线观看欧美高清| 成人手机在线视频| 日韩女优av电影在线观看| 夜夜嗨av一区二区三区网页| 国产在线看一区| 日韩一级片在线观看| 亚洲精品欧美二区三区中文字幕| 国产麻豆91精品| 日韩欧美一级二级三级| 丝袜美腿亚洲综合| 欧美午夜影院一区| 成人免费在线视频观看| 高清不卡在线观看av| 国产亚洲欧美在线| 国产一区二区三区蝌蚪| 精品国产凹凸成av人导航| 日韩不卡在线观看日韩不卡视频| 9i看片成人免费高清| 国产精品免费视频一区| 懂色av一区二区在线播放| 国产日韩欧美高清在线| 国产精品中文字幕日韩精品| 久久精品视频一区| 成人午夜短视频| 亚洲欧洲韩国日本视频| 色婷婷综合激情| 亚洲国产视频直播| 91精品国产色综合久久不卡电影 | 欧美日韩久久久| 秋霞影院一区二区| 精品国产麻豆免费人成网站| 国内精品伊人久久久久av影院| 久久精品无码一区二区三区| 99国产精品久久久久久久久久久| 亚洲黄色小说网站| 欧美片在线播放| 韩国成人福利片在线播放| 久久日韩精品一区二区五区| 成年人国产精品| 性做久久久久久久久| 久久综合久色欧美综合狠狠| 成人av免费观看| 久久精品国产999大香线蕉| 欧美韩日一区二区三区四区| 欧美色图12p| 国产激情精品久久久第一区二区 | 99久久久久免费精品国产| 亚洲电影激情视频网站| 国产天堂亚洲国产碰碰| 欧美日韩不卡一区| 成人av网站免费| 国产一区二区美女诱惑| 亚洲一区中文日韩| 国产日产欧美一区| 日韩免费观看高清完整版 | 午夜精品福利一区二区蜜股av| www国产精品av| 欧美久久久久久久久| 99国产精品国产精品毛片| 国内精品嫩模私拍在线| 亚洲.国产.中文慕字在线| 中文字幕在线视频一区| 久久老女人爱爱| 精品久久久网站| 日韩视频免费观看高清完整版在线观看| av成人免费在线| 国产精品资源站在线| 国产一区在线观看麻豆| 奇米一区二区三区| 日韩中文欧美在线| 午夜私人影院久久久久| 亚洲一区在线观看免费| 一区二区久久久| 亚洲精品成人精品456| 亚洲男同性恋视频| 亚洲男人的天堂av| 亚洲视频免费看| 亚洲一二三区视频在线观看| 亚洲一区二区三区爽爽爽爽爽| 樱桃国产成人精品视频| 亚洲高清一区二区三区| 天堂一区二区在线| 久久精品国产久精国产爱| 韩国欧美国产1区| 大桥未久av一区二区三区中文| 成人高清视频在线| 日韩三级视频在线看| 欧美精品丝袜中出| 成人激情午夜影院| 精品午夜久久福利影院| 亚洲欧美日韩国产综合| 亚洲日本va午夜在线电影| 亚洲欧美精品午睡沙发| 99久久精品一区二区| 国产91精品免费| 日本高清无吗v一区| 91精品国产一区二区| 日韩免费电影一区| 国产精品午夜春色av| 一区二区三区四区在线免费观看| 午夜日韩在线观看| 成人午夜免费av| 日韩精品最新网址| 中文字幕在线播放不卡一区| 日本欧美一区二区三区乱码| 国产成人在线视频网站| 欧美久久久一区| 亚洲色图欧洲色图婷婷| 日本色综合中文字幕| 在线看国产一区| 亚洲欧洲色图综合| 国产麻豆精品一区二区| 欧美一级高清片| 亚洲一线二线三线视频| 不卡区在线中文字幕| 久久精品欧美一区二区三区不卡| 亚洲大片一区二区三区| 色婷婷亚洲婷婷| 国产精品麻豆欧美日韩ww| 狠狠色丁香婷婷综合久久片| 欧美精品久久久久久久多人混战| 亚洲欧美日韩国产综合在线| 成人亚洲一区二区一| 国产精品日产欧美久久久久| 精品一区二区三区在线视频| 日韩欧美黄色影院| 久久9热精品视频| 久久免费午夜影院| 国产成人免费在线视频| 久久九九影视网| 成人影视亚洲图片在线| 国产女人水真多18毛片18精品视频| 看片网站欧美日韩| 精品国产乱码91久久久久久网站| 美女网站视频久久| 欧美r级电影在线观看| 国产在线视频一区二区| 精品久久久久久久一区二区蜜臀| 国内精品免费在线观看| 国产亚洲欧洲997久久综合| 成人app在线观看| 夜夜嗨av一区二区三区四季av| 在线日韩国产精品| 久久爱另类一区二区小说| 久久综合久色欧美综合狠狠| 成人97人人超碰人人99| 亚洲综合无码一区二区| 91精品国产日韩91久久久久久| 久久99精品久久久久婷婷| 中文字幕不卡在线播放| 欧美日韩在线不卡| 国产精品1024久久| 亚洲一区日韩精品中文字幕| 26uuu成人网一区二区三区| 91在线观看高清| 久久超级碰视频| 亚洲一区二区三区在线播放| 久久久亚洲精华液精华液精华液| 成人久久视频在线观看| 亚洲午夜久久久| 在线不卡免费av| 蜜臀国产一区二区三区在线播放 | 日韩一区在线看| 日本丶国产丶欧美色综合| 精品一二线国产| 国产无遮挡一区二区三区毛片日本| 大胆亚洲人体视频| 亚洲欧洲av一区二区三区久久| 99精品黄色片免费大全| 视频一区二区三区中文字幕| 亚洲三级电影网站| 国产精品免费网站在线观看|