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

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

?? websda.c

?? 開發(fā)板bios源碼 開發(fā)板bios源碼
?? C
字號:
/*
 * websda.c -- Digest Access Authentication routines
 *
 * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved.
 *
 * See the file "license.txt" for usage and redistribution license requirements
 *
 * $Id: websda.c,v 1.1 2001/12/05 21:51:04 bporter Exp $
 */

/******************************** Description *********************************/

/*
 *	Routines for generating DAA data.	The module uses the
 *	"RSA Data Security, Inc. MD5 Message-Digest Algorithm" found in md5c.c
 */

/********************************* Includes ***********************************/

#ifndef CE
#include	<time.h>
#endif
#include	"websda.h"
#include	"md5.h"

/******************************** Local Data **********************************/

#define RANDOMKEY	T("onceuponatimeinparadise")
#define NONCE_SIZE	34
#define HASH_SIZE   16

/*********************************** Code *************************************/
/*
 *	websMD5binary returns the MD5 hash
 */

char *websMD5binary(unsigned char *buf, int length)
{
    const char		*hex = "0123456789abcdef";
    MD5_CONTEXT		md5ctx;
    unsigned char	hash[HASH_SIZE];
    char			*r, *strReturn;
	char			result[(HASH_SIZE * 2) + 1];
    int				i;

/*
 *	Take the MD5 hash of the string argument.
 */
    MD5Init(&md5ctx);
    MD5Update(&md5ctx, buf, (unsigned int)length);
    MD5Final(hash, &md5ctx);

/*
 *	Prepare the resulting hash string
 */
    for (i = 0, r = result; i < 16; i++) {
		*r++ = hex[hash[i] >> 4];
		*r++ = hex[hash[i] & 0xF];
    }

/*
 *	Zero terminate the hash string
 */
    *r = '\0';

/*
 *	Allocate a new copy of the hash string
 */
	strReturn = balloc(B_L, sizeof(result));
	strcpy(strReturn, result);

    return strReturn;
}

/*****************************************************************************/
/*
 *	Convenience call to websMD5binary 
 *	(Performs char_t to char conversion and back)
 */

char_t *websMD5(char_t *string)
{
	char_t	*strReturn;

	a_assert(string && *string);

	if (string && *string) {
		char	*strTemp, *strHash;
		int		nLen;
/*
 *		Convert input char_t string to char string
 */
		nLen = gstrlen(string);
		strTemp = ballocUniToAsc(string, nLen + 1);
/*
 *		Execute the digest calculation
 */
		strHash = websMD5binary((unsigned char *)strTemp, nLen);
/*
 *		Convert the returned char string digest to a char_t string
 */
		nLen = strlen(strHash);
		strReturn = ballocAscToUni(strHash, nLen);
/*
 *		Free up the temporary allocated resources
 */
		bfree(B_L, strTemp);
		bfree(B_L, strHash);
	} else {
		strReturn = NULL;
	}

	return strReturn;
}

/******************************************************************************/
/*
 *	Get a Nonce value for passing along to the client.  This function 
 *	composes the string "RANDOMKEY:timestamp:myrealm" and 
 *	calculates the MD5 digest placing it in output. 
 */

char_t *websCalcNonce(webs_t wp)
{
	char_t		*nonce, *prenonce;
	struct tm	*newtime;
	time_t		longTime;

	a_assert(wp);
/*
 *	Get time as long integer.
 */
	time(&longTime);
/*
 *	Convert to local time.
 */
	newtime = localtime(&longTime);
/*
 *	Create prenonce string.
 */
	prenonce = NULL;
#ifdef DIGEST_ACCESS_SUPPORT
	fmtAlloc(&prenonce, 256, T("%s:%s:%s"), RANDOMKEY, gasctime(newtime),
		wp->realm); 
#else
	fmtAlloc(&prenonce, 256, T("%s:%s:%s"), RANDOMKEY, gasctime(newtime), 
		RANDOMKEY); 
#endif
	a_assert(prenonce);
/*
 *	Create the nonce
 */
    nonce = websMD5(prenonce);
/*
 *	Cleanup
 */
	bfreeSafe(B_L, prenonce);

	return nonce;
}

/******************************************************************************/
/*
 *	Get an Opaque value for passing along to the client
 */

char_t *websCalcOpaque(webs_t wp)
{
	char_t *opaque;
	a_assert(wp);
/*
 *	Temporary stub!
 */
    opaque = bstrdup(B_L, T("5ccc069c403ebaf9f0171e9517f40e41"));

	return opaque;
}

/******************************************************************************/
/*
 *	Get a Digest value using the MD5 algorithm
 */

char_t *websCalcDigest(webs_t wp)
{
#ifdef DIGEST_ACCESS_SUPPORT
	char_t	*digest, *a1, *a1prime, *a2, *a2prime, *preDigest, *method;

	a_assert(wp);
	digest = NULL;

/*
 *	Calculate first portion of digest H(A1)
 */
	a1 = NULL;
	fmtAlloc(&a1, 255, T("%s:%s:%s"), wp->userName, wp->realm, wp->password);
	a_assert(a1);
	a1prime = websMD5(a1);
	bfreeSafe(B_L, a1);
/*
 *	Calculate second portion of digest H(A2)
 */
	method = websGetVar(wp, T("REQUEST_METHOD"), NULL);
	a_assert(method);
	a2 = NULL;
	fmtAlloc(&a2, 255, T("%s:%s"), method, wp->uri);
	a_assert(a2);
	a2prime = websMD5(a2);
	bfreeSafe(B_L, a2);
/*
 *	Construct final digest KD(H(A1):nonce:H(A2))
 */
	a_assert(a1prime);
	a_assert(a2prime);
	a_assert(wp->nonce);

	preDigest = NULL;
	if (!wp->qop) {
		fmtAlloc(&preDigest, 255, T("%s:%s:%s"), a1prime, wp->nonce, a2prime);
	} else {
		fmtAlloc(&preDigest, 255, T("%s:%s:%s:%s:%s:%s"), 
			a1prime, 
			wp->nonce,
			wp->nc,
			wp->cnonce,
			wp->qop,
			a2prime);
	}

	a_assert(preDigest);
	digest = websMD5(preDigest);
/*
 *	Now clean up
 */
	bfreeSafe(B_L, a1prime);
	bfreeSafe(B_L, a2prime);
	bfreeSafe(B_L, preDigest);
	return digest;
#else
	return NULL;
#endif /* DIGEST_ACCESS_SUPPORT */
}

/******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av中文字幕一区二区三区| 麻豆成人91精品二区三区| 国产盗摄一区二区三区| 久久久精品黄色| 国产成人欧美日韩在线电影| 国产免费成人在线视频| 99国产精品国产精品久久| 一区二区三区电影在线播| 欧美视频一区在线| 久久精品国产精品青草| 久久丝袜美腿综合| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 韩国在线一区二区| 久久久综合九色合综国产精品| 国产91色综合久久免费分享| 成人免费在线播放视频| 精品视频999| 蜜臀av一区二区在线免费观看| 久久久精品蜜桃| 91成人在线精品| 精品一区二区在线看| 国产精品传媒视频| 日韩一级高清毛片| 成人18视频在线播放| 日韩中文字幕区一区有砖一区| 国产亚洲一本大道中文在线| 91亚洲男人天堂| 卡一卡二国产精品| 亚洲视频一区二区在线| 欧美一区二区三区在线观看视频| 国产精品一区二区久久不卡| 亚洲柠檬福利资源导航| 精品国产网站在线观看| 91麻豆.com| 久久成人免费电影| 一区二区高清在线| 久久精品欧美日韩| 欧美日韩国产免费| www.亚洲国产| 经典三级在线一区| 性做久久久久久久久| 中文字幕欧美区| 精品卡一卡二卡三卡四在线| 欧美自拍偷拍午夜视频| 成人国产精品免费观看动漫| 奇米777欧美一区二区| 一区二区三区在线免费| 国产拍揄自揄精品视频麻豆| 日韩一区二区三区精品视频| 色偷偷88欧美精品久久久| 国产成人免费高清| 久久国产精品色婷婷| 污片在线观看一区二区| 亚洲综合在线五月| 亚洲男女毛片无遮挡| 中文一区在线播放| 国产欧美一区二区精品仙草咪 | 欧美一区二区三区在线| 欧美性受xxxx黑人xyx| 99久久99久久精品免费看蜜桃| 国产揄拍国内精品对白| 蜜臀a∨国产成人精品| 日韩成人免费看| 亚洲成人黄色影院| 午夜久久久影院| 亚洲午夜久久久久久久久电影网 | 激情五月播播久久久精品| 轻轻草成人在线| 亚洲成人福利片| 爽好多水快深点欧美视频| 亚洲一级二级三级| 亚洲国产毛片aaaaa无费看| 亚洲激情中文1区| 亚洲午夜精品一区二区三区他趣| 一区二区三区国产豹纹内裤在线| 亚洲欧美偷拍三级| 一区二区激情视频| 亚洲国产精品一区二区尤物区| 亚洲国产wwwccc36天堂| 亚洲观看高清完整版在线观看| 亚洲一级片在线观看| 日韩一区精品视频| 老司机精品视频线观看86| 国产一区二区视频在线播放| 国产成人8x视频一区二区| 成人一区二区在线观看| 色哟哟一区二区三区| 色八戒一区二区三区| 欧美久久久影院| 日韩欧美资源站| 欧美国产激情一区二区三区蜜月| 国产日韩欧美在线一区| 亚洲欧美综合色| 亚洲国产一区在线观看| 美腿丝袜在线亚洲一区 | 成人ar影院免费观看视频| 97久久超碰国产精品| 精品视频免费看| 精品国产乱码久久久久久夜甘婷婷 | 亚洲色图视频网| 日韩精品亚洲专区| 国产一区二区三区观看| 99久久精品99国产精品| 欧美疯狂性受xxxxx喷水图片| 久久综合九色综合97婷婷| 自拍偷在线精品自拍偷无码专区| 亚洲综合成人网| 精品一区二区在线看| 色88888久久久久久影院野外| 日韩欧美国产三级电影视频| 欧美成人一区二区三区在线观看| 久久精品一区二区三区不卡| 国产精品区一区二区三| 婷婷开心激情综合| 成人午夜视频福利| 欧美日韩一卡二卡| 国产亚洲美州欧州综合国| 亚洲精品一卡二卡| 狠狠色丁香久久婷婷综| 在线视频观看一区| 久久精品视频在线看| 亚洲超碰精品一区二区| 国产很黄免费观看久久| 欧美日韩一区 二区 三区 久久精品| 久久亚洲免费视频| 亚洲一区二区三区四区不卡| 国产91色综合久久免费分享| 欧美久久婷婷综合色| 亚洲婷婷在线视频| 国产精品一区二区无线| 欧美一区二区视频免费观看| 亚洲丝袜另类动漫二区| 精品在线你懂的| 欧美色综合影院| 中文字幕一区二区三区不卡 | 日本久久电影网| 欧美精品免费视频| 国产精品色婷婷久久58| 久久99精品视频| 91福利国产精品| 欧美高清在线精品一区| 免费不卡在线观看| 欧美色爱综合网| 亚洲视频你懂的| 成人性生交大片| 2020日本不卡一区二区视频| 日韩高清在线观看| 欧洲生活片亚洲生活在线观看| 国产欧美日韩不卡免费| 狠狠色综合色综合网络| 色哟哟在线观看一区二区三区| 在线综合视频播放| 亚洲综合另类小说| 91麻豆精品秘密| 亚洲三级久久久| 成人综合在线观看| 国产亚洲精品资源在线26u| 精品制服美女久久| 26uuu欧美| 黄一区二区三区| 久久综合中文字幕| 狠狠色狠狠色综合系列| 精品成人一区二区三区四区| 午夜精品成人在线| 欧美一区二区不卡视频| 另类小说综合欧美亚洲| 日韩午夜精品电影| 九九精品一区二区| 久久久亚洲精品石原莉奈| 国内精品写真在线观看| 久久丝袜美腿综合| 国产69精品一区二区亚洲孕妇| 中文字幕精品综合| 91麻豆.com| 天使萌一区二区三区免费观看| 欧美日韩国产综合视频在线观看| 亚洲成a人在线观看| 91精品国产高清一区二区三区蜜臀| 日本一道高清亚洲日美韩| 欧美sm极限捆绑bd| 国产精品白丝jk白祙喷水网站| 国产欧美日韩在线| 久久精品久久99精品久久| 亚洲永久精品国产| 美女视频网站久久| 精品国精品国产尤物美女| 九一九一国产精品| 中文字幕精品在线不卡| 色婷婷综合视频在线观看| 五月婷婷激情综合| 久久综合狠狠综合久久激情| 成人app在线| 日韩精品乱码免费| 久久色在线观看| 色综合天天综合狠狠| 日韩电影免费在线观看网站| 久久久久久麻豆| 欧美在线观看视频在线| 日本免费新一区视频| 国产精品女同互慰在线看|