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

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

?? cryptmis.c

?? 提供了很多種加密算法和CA認證及相關服務如CMP、OCSP等的開發
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************
*																			*
*							cryptlib Misc Routines							*
*						Copyright Peter Gutmann 1992-2002					*
*																			*
****************************************************************************/

/* NSA motto: In God we trust... all others we monitor.
														-- Stanley Miller */
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "crypt.h"
#ifdef INC_ALL
  #include "md2.h"
  #include "md4.h"
  #include "md5.h"
  #include "ripemd.h"
  #include "sha.h"
  #include "stream.h"
#else
  #include "hash/md2.h"
  #include "hash/md4.h"
  #include "hash/md5.h"
  #include "hash/ripemd.h"
  #include "hash/sha.h"
  #include "keymgmt/stream.h"
#endif /* Compiler-specific includes */

/****************************************************************************
*																			*
*								Internal API Functions						*
*																			*
****************************************************************************/

/* Determine the parameters for a particular hash algorithm */

void getHashParameters( const CRYPT_ALGO hashAlgorithm,
						HASHFUNCTION *hashFunction, int *hashSize )
	{
	void md2HashBuffer( void *hashInfo, BYTE *outBuffer, 
						const BYTE *inBuffer, const int length, 
						const HASH_STATE hashState );
	void md5HashBuffer( void *hashInfo, BYTE *outBuffer, 
						const BYTE *inBuffer, const int length, 
						const HASH_STATE hashState );
	void ripemd160HashBuffer( void *hashInfo, BYTE *outBuffer, 
							  const BYTE *inBuffer, const int length, 
							  const HASH_STATE hashState );
	void shaHashBuffer( void *hashInfo, BYTE *outBuffer, 
						const BYTE *inBuffer, const int length, 
						const HASH_STATE hashState );
	void sha2HashBuffer( void *hashInfo, BYTE *outBuffer, 
						 const BYTE *inBuffer, const int length, 
						 const HASH_STATE hashState );

	switch( hashAlgorithm )
		{
		case CRYPT_ALGO_MD2:
			*hashFunction = md2HashBuffer;
			*hashSize = MD2_DIGESTSIZE;
			return;

		case CRYPT_ALGO_MD5:
			*hashFunction = md5HashBuffer;
			*hashSize = MD5_DIGEST_LENGTH;
			return;

		case CRYPT_ALGO_RIPEMD160:
			*hashFunction = ripemd160HashBuffer;
			*hashSize = RIPEMD160_DIGESTSIZE;
			return;

		case CRYPT_ALGO_SHA:
			*hashFunction = shaHashBuffer;
			*hashSize = SHA_DIGEST_LENGTH;
			return;
		}

	assert( NOTREACHED );
	}

/* Byte-reverse an array of 16- and 32-bit words to/from network byte order
   to account for processor endianness.  These routines assume the given
   count is a multiple of 16 or 32 bits.  They are safe even for CPU's with
   a word size > 32 bits since on a little-endian CPU the important 32 bits
   are stored first, so that by zeroizing the first 32 bits and oring the
   reversed value back in we don't need to rely on the processor only writing
   32 bits into memory */

void longReverse( LONG *buffer, int count )
	{
#if defined( _BIG_WORDS )
	BYTE *bufPtr = ( BYTE * ) buffer, temp;

	count /= 4;		/* sizeof( LONG ) != 4 */
	while( count-- )
		{
  #if 0
		LONG temp;

		/* This code is cursed */
		temp = value = *buffer & 0xFFFFFFFFUL;
		value = ( ( value & 0xFF00FF00UL ) >> 8  ) | \
				( ( value & 0x00FF00FFUL ) << 8 );
		value = ( ( value << 16 ) | ( value >> 16 ) ) ^ temp;
		*buffer ^= value;
		buffer = ( LONG * ) ( ( BYTE * ) buffer + 4 );
  #endif /* 0 */
		/* There's really no nice way to do this - the above code generates
		   misaligned accesses on processors with a word size > 32 bits, so
		   we have to work at the byte level (either that or turn misaligned
		   access warnings off by trapping the signal the access corresponds
		   to.  However a context switch per memory access is probably
		   somewhat slower than the current byte-twiddling mess) */
		temp = bufPtr[ 3 ];
		bufPtr[ 3 ] = bufPtr[ 0 ];
		bufPtr[ 0 ] = temp;
		temp = bufPtr[ 2 ];
		bufPtr[ 2 ] = bufPtr[ 1 ];
		bufPtr[ 1 ] = temp;
		bufPtr += 4;
		}
#elif defined( __WIN32__ )
	/* The following code which makes use of bswap is significantly faster
	   than what the compiler would otherwise generate.  This code is used
	   such a lot that it's worth the effort */
__asm {
	mov ecx, count
	mov edx, buffer
	shr ecx, 2
swapLoop:
	mov eax, [edx]
	bswap eax
	mov [edx], eax
	add edx, 4
	dec ecx
	jnz swapLoop
	}
#else
	LONG value;

	count /= sizeof( LONG );
	while( count-- )
		{
		value = *buffer;
		value = ( ( value & 0xFF00FF00UL ) >> 8  ) | \
				( ( value & 0x00FF00FFUL ) << 8 );
		*buffer++ = ( value << 16 ) | ( value >> 16 );
		}
#endif /* _BIG_WORDS */
	}

void wordReverse( WORD *buffer, int count )
	{
	WORD value;

	count /= sizeof( WORD );
	while( count-- )
		{
		value = *buffer;
		*buffer++ = ( value << 8 ) | ( value >> 8 );
		}
	}

/* Get a random (but not necessarily unpredictable) nonce.  It doesn't matter
   much what it is, as long as it's completely different for each call */

void getNonce( void *nonce, int nonceLength )
	{
	static BOOLEAN nonceDataInitialised = FALSE;
	static BYTE nonceData[ CRYPT_MAX_HASHSIZE ];
	static HASHFUNCTION hashFunction;
	BYTE *noncePtr = nonce;
	static int hashSize;

	enterMutex( MUTEX_NONCE );

	/* Get the hash algorithm information and seed the nonce data with a 
	   value which is guaranteed to be different each time (unless the entire 
	   program is rerun more than twice a second, which is doubtful) */
	if( !nonceDataInitialised )
		{
		getHashParameters( CRYPT_ALGO_SHA, &hashFunction, &hashSize );
		time( ( time_t * ) nonceData );
		nonceDataInitialised = TRUE;
		}

	/* Shuffle the pool and copy it to the output buffer until it's full */
	while( nonceLength > 0 )
		{
		const int count = ( nonceLength > hashSize ) ? hashSize : nonceLength;

		/* Hash the data and copy the appropriate amount of data to the output
		   buffer */
		hashFunction( NULL, nonceData, nonceData, hashSize, HASH_ALL );
		memcpy( noncePtr, nonceData, count );

		/* Move on to the next block of the output buffer */
		noncePtr += hashSize;
		nonceLength -= hashSize;
		}
	
	exitMutex( MUTEX_NONCE );
	}

/* Perform the FIPS-140 statistical checks which are feasible on a byte 
   string.  The full suite of tests assumes an infinite source of values (and
   time) is available, the following is a scaled-down version used to sanity-
   check keys and other short random data blocks.  Note that this check
   requires at least 64 bits of data in order to produce useful results */

BOOLEAN checkEntropy( const BYTE *data, const int dataLength )
	{
	const int delta = ( dataLength < 16 ) ? 1 : 0;
	int bitCount[ 4 ] = { 0 }, noOnes, i;

	for( i = 0; i < dataLength; i++ )
		{
		const int value = data[ i ];

		bitCount[ value & 3 ]++;
		bitCount[ ( value >> 2 ) & 3 ]++;
		bitCount[ ( value >> 4 ) & 3 ]++;
		bitCount[ value >> 6 ]++;
		}

	/* Monobit test: Make sure at least 1/4 of the bits are ones and 1/4 are
	   zeroes */
	noOnes = bitCount[ 1 ] + bitCount[ 2 ] + ( 2 * bitCount[ 3 ] );
	if( noOnes < dataLength * 2 || noOnes > dataLength * 6 )
		return( FALSE );

	/* Poker test (almost): Make sure each bit pair is present at least 
	   1/16 of the time.  The FIPS 140 version uses 4-bit values, but the
	   numer of samples available from the keys is far too small for this.

	   This isn't precisely 1/16, for short samples (< 128 bits) we adjust
	   the count by one because of the small sample size, and for odd-length 
	   data we're getting four more samples so the actual figure is slightly
	   less than 1/16 */
	if( ( bitCount[ 0 ] + delta < dataLength / 2 ) || \
		( bitCount[ 1 ] + delta < dataLength / 2 ) || \
		( bitCount[ 2 ] + delta < dataLength / 2 ) || \
		( bitCount[ 3 ] + delta < dataLength / 2 ) )
		return( FALSE );

	return( TRUE );
	}

/* Copy a string attribute to external storage, with various range checks
   to follow the cryptlib semantics */

int attributeCopy( RESOURCE_DATA *msgData, const void *attribute, 
				   const int attributeLength )
	{
	if( attributeLength == 0 )
		{
		msgData->length = 0;
		return( CRYPT_ERROR_NOTFOUND );
		}
	if( msgData->data != NULL )
		{
		assert( attribute != NULL );
		assert( attributeLength > 0 );

		if( attributeLength > msgData->length || \
			checkBadPtrWrite( msgData->data, attributeLength ) )
			return( CRYPT_ARGERROR_STR1 );
		memcpy( msgData->data, attribute, attributeLength );
		}
	msgData->length = attributeLength;

	return( CRYPT_OK );
	}

int attributePtrCopy( void *dest, int *destLength, const void *attribute, 
					  const int attributeLength )
	{
	if( dest != NULL )
		{
		assert( attribute != NULL );
		assert( attributeLength > 0 );

		if( attributeLength > *destLength || \
			checkBadPtrWrite( dest, attributeLength ) )
			return( CRYPT_ARGERROR_STR1 );
		memcpy( dest, attribute, attributeLength );
		}
	*destLength = attributeLength;

	return( CRYPT_OK );
	}

/* Check whether a given algorithm is available */

BOOLEAN algoAvailable( const CRYPT_ALGO cryptAlgo )
	{
	CRYPT_QUERY_INFO queryInfo;

	return( cryptStatusOK( krnlSendMessage( SYSTEM_OBJECT_HANDLE,
								RESOURCE_IMESSAGE_DEV_QUERYCAPABILITY,
								&queryInfo, cryptAlgo ) ) ? TRUE : FALSE );
	}

/****************************************************************************
*																			*
*								Extended libc Functions						*
*																			*
****************************************************************************/

/* Match a given substring against a string in a case-insensitive manner */

#if defined( __UNIX__ )

int strnicmp( const char *src, const char *dest, const int length )
	{
	return( strncasecmp( src, dest, length ) );
	}

int stricmp( const char *src, const char *dest )
	{
	return( strcasecmp( src, dest ) );
	}

#elif !( defined( __WINDOWS__ ) || defined( __MSDOS__ ) || \
		 defined( __OS2__ ) || defined( __IBM4758__ ) || \
		 defined( __TANDEM__ ) ) || defined( NT_DRIVER )

int strnicmp( const char *src, const char *dest, int length )
	{
	char srcCh, destCh;

	while( length-- )
		{
		/* Need to be careful with toupper() side-effects */
		srcCh = *src++;
		srcCh = toupper( srcCh );
		destCh = *dest++;
		destCh = toupper( destCh );

		if( srcCh != destCh )
			return( srcCh - destCh );
		}

	return( 0 );
	}

int stricmp( const char *src, const char *dest )
	{
	int length = strlen( src );

	if( length != strlen( dest ) )
		return( 1 );	/* Lengths differ */
	return( strnicmp( src, dest, length ) );
	}
#endif /* OS-specific case-insensitive string compares */

/****************************************************************************
*																			*
*							OS-specific Helper Functions					*
*																			*
****************************************************************************/

#if defined( __SCO_VERSION__ ) && defined( USE_THREADS )

int createThread( void *( *function )( void * ), void *arg )
	{
	pthread_attr_t attr;
	pthread_t dummy;
	int status;

	/* Create the thread, setting the stack size to a sensible value
	   rather than the default used by SCO */
	pthread_attr_init( &attr );
	pthread_attr_setstacksize( &attr, 32768 );
	status = pthread_create( &dummy, &attr, function, arg ); 
    pthread_attr_destroy( &attr );
    
    return( status );
	}
#endif /* UnixWare/SCO with threading */

/****************************************************************************
*																			*
*							Base64 En/Decoding Functions					*
*																			*
****************************************************************************/

/* Some interfaces can't handle binary data, so we base64-encode it using the
   following encode/decode tables (from RFC 1113) */

#define BPAD		'='		/* Padding for odd-sized output */
#define BERR		0xFF	/* Illegal char marker */
#define BEOF		0x7F	/* EOF marker (padding char or EOL) */

static const char binToAscii[] = \
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
#if 'A' == 0x41				/* ASCII */
  static const BYTE asciiToBin[] =
	{ BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BEOF, BERR, BERR, BEOF, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, 0x3E, BERR, BERR, BERR, 0x3F,
	  0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,
	  0x3C, 0x3D, BERR, BERR, BERR, BEOF, BERR, BERR,
	  BERR, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
	  0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
	  0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
	  0x17, 0x18, 0x19, BERR, BERR, BERR, BERR, BERR,
	  BERR, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
	  0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
	  0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30,
	  0x31, 0x32, 0x33, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR
	};
#elif 'A' == 0xC1			/* EBCDIC */
  /* EBCDIC character mappings:
		A-I C1-C9
		J-R D1-D9
		S-Z E2-E9
		a-i 81-89
		j-r 91-99
		s-z A2-A9
		0-9 F0-F9
		+   4E
		/   61
		=   7E  Uses BEOF in table */   
static const BYTE asciiToBin[] =
	{ BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*00*/
	  BERR, BERR, BEOF, BERR, BERR, BEOF, BERR, BERR,	/* CR, LF */
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*10*/
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*20*/
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*30*/
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*40*/
	  BERR, BERR, BERR, BERR, BERR, BERR, 0x3E, BERR,	/* + */
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*50*/
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, 0x3F, BERR, BERR, BERR, BERR, BERR, BERR,	/*60*/	/* / */
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*70*/
	  BERR, BERR, BERR, BERR, BERR, BERR, BEOF, BERR,			/* = */
	  BERR, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,	/*80*/	/* a-i */
	  0x21, 0x22, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29,	/*90*/	/* j-r */
	  0x2A, 0x2B, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31,	/*A0*/	/* s-z */
	  0x32, 0x33, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR,	/*B0*/
	  BERR, BERR, BERR, BERR, BERR, BERR, BERR, BERR
	  BERR, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,	/*C0*/	/* A-I */
	  0x07, 0x08, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,	/*D0*/	/* J-R */
	  0x10, 0x11, BERR, BERR, BERR, BERR, BERR, BERR,
	  BERR, BERR, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,	/*E0*/	/* S-Z */
	  0x18, x019, BERR, BERR, BERR, BERR, BERR, BERR,
	  0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B,	/*F0*/	/* 0-9 */
	  0x3C, 0x3D, BERR, BERR, BERR, BERR, BERR, BERR
	};
#else
  #error System is neither ASCII nor EBCDIC
#endif /* Different character code mappings */

/* The size of lines for PEM-type formatting.  This is only used for encoding,
   for decoding we adjust to whatever size the sender has used */

#define TEXT_LINESIZE	64

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品理论片a级大结局| 在线观看亚洲a| 一区二区成人在线观看| 久久综合九色综合欧美98| 欧美在线免费播放| 国产乱码精品一品二品| 亚洲成人av在线电影| 欧美国产综合一区二区| 日韩免费观看2025年上映的电影 | 国产精品第13页| 欧美一区二区播放| 色婷婷狠狠综合| 成+人+亚洲+综合天堂| 九九在线精品视频| 亚洲成人精品一区二区| 亚洲免费在线观看| 国产拍揄自揄精品视频麻豆| 91麻豆精品国产91久久久资源速度 | 日本二三区不卡| 不卡av在线网| 国产91精品精华液一区二区三区 | 国产精品一区免费视频| 全国精品久久少妇| 亚洲综合一二三区| 亚洲精品伦理在线| 亚洲精品成人少妇| 亚洲精品老司机| 亚洲婷婷综合色高清在线| 国产日韩精品一区二区三区| 精品国产一区二区三区久久影院| 7777精品伊人久久久大香线蕉超级流畅 | 国产麻豆精品久久一二三| 日韩中文字幕不卡| 日韩电影在线一区| 婷婷一区二区三区| 日韩av不卡一区二区| 五月天婷婷综合| 五月婷婷欧美视频| 日产精品久久久久久久性色| 香港成人在线视频| 免费一级片91| 精品一区二区三区在线观看国产 | 亚洲欧美成人一区二区三区| 国产精品欧美久久久久一区二区| 国产欧美一区二区三区在线老狼| 久久精品男人的天堂| 国产欧美日韩亚州综合 | 欧美日韩二区三区| 911精品产国品一二三产区| 制服丝袜亚洲色图| 26uuu国产在线精品一区二区| 日韩精品中午字幕| 国产情人综合久久777777| 国产欧美va欧美不卡在线| 国产精品高潮呻吟| 一区二区三区国产精品| 日本欧美一区二区三区乱码 | 久久精品国产一区二区三| 久久99热狠狠色一区二区| 国产精品一区二区三区四区| 成人性生交大片免费| 在线观看免费亚洲| 884aa四虎影成人精品一区| 日韩午夜电影av| 中文字幕av资源一区| 亚洲香肠在线观看| 美女网站视频久久| 成人综合在线网站| 欧美日韩精品系列| 精品噜噜噜噜久久久久久久久试看 | 91浏览器打开| 欧美一级日韩不卡播放免费| 国产欧美日韩精品一区| 亚洲乱码国产乱码精品精可以看| 亚洲成av人片观看| 国产麻豆精品视频| 欧美体内she精视频| 26uuu另类欧美| 亚洲精品免费播放| 国产原创一区二区三区| av中文字幕亚洲| 91精品啪在线观看国产60岁| 中文字幕免费不卡在线| 午夜一区二区三区在线观看| 国产成人在线视频网址| 欧美唯美清纯偷拍| 国产精品毛片久久久久久久| 日本伊人精品一区二区三区观看方式| 国产高清不卡一区| 91精品国产高清一区二区三区| 欧美激情自拍偷拍| 日本午夜精品视频在线观看| 91老师片黄在线观看| 久久精品这里都是精品| 亚洲五码中文字幕| 91精品国产福利在线观看| 亚洲色图欧美偷拍| 国产乱妇无码大片在线观看| 欧美精品vⅰdeose4hd| 中文字幕一区二区三| 久久91精品久久久久久秒播| 欧洲一区在线电影| 国产精品免费视频观看| 精品午夜一区二区三区在线观看 | 日韩一卡二卡三卡四卡| 一区二区三区四区精品在线视频| 国产乱子伦视频一区二区三区 | 伊人色综合久久天天人手人婷| 国产精品系列在线观看| 欧美一区二区在线看| 亚洲精品乱码久久久久久久久 | 国产98色在线|日韩| 欧美电影精品一区二区| 日韩国产欧美在线播放| 色狠狠色噜噜噜综合网| 中文字幕在线不卡视频| 成人三级伦理片| 久久久精品国产免大香伊 | 高清shemale亚洲人妖| 精品99一区二区三区| 日本亚洲视频在线| 欧美久久久久久久久久| 亚洲精品水蜜桃| 色偷偷成人一区二区三区91 | 国产精选一区二区三区| 欧美成人精品高清在线播放| 日本视频一区二区| 日韩欧美一级二级三级| 青青草原综合久久大伊人精品优势 | 亚洲一区免费视频| 色偷偷成人一区二区三区91 | 精品1区2区在线观看| 美女在线观看视频一区二区| 日韩亚洲电影在线| 蜜桃传媒麻豆第一区在线观看| 欧美高清精品3d| 婷婷亚洲久悠悠色悠在线播放| 欧美伦理视频网站| 免费在线观看成人| 亚洲精品在线观看网站| 国产一二三精品| 欧美激情在线看| 99久久久久免费精品国产| 日韩毛片一二三区| 欧美在线free| 偷拍日韩校园综合在线| 日韩一级片在线观看| 国产做a爰片久久毛片| 国产精品天干天干在线综合| 成人免费黄色大片| 亚洲视频资源在线| 欧美三级三级三级爽爽爽| 免费人成网站在线观看欧美高清| 日韩视频123| 国产精品123| 亚洲欧美区自拍先锋| 欧美色网一区二区| 麻豆成人久久精品二区三区红| 精品久久久久一区| 成人aa视频在线观看| 亚洲一区二区在线视频| 精品嫩草影院久久| 97久久超碰国产精品电影| 亚洲.国产.中文慕字在线| 91麻豆精品国产91久久久久久| 国产毛片精品国产一区二区三区| 国产精品久久久久影院老司| 欧美午夜精品久久久| 九色综合狠狠综合久久| 亚洲视频一区二区免费在线观看| 欧美图区在线视频| 国产福利一区在线观看| 亚洲图片欧美视频| 欧美精品一区二| 91日韩精品一区| 日本伊人精品一区二区三区观看方式| 久久久久国产免费免费| 在线日韩一区二区| 国产一区二区在线电影| 亚洲欧洲精品成人久久奇米网| 欧美久久一区二区| jizz一区二区| 免费在线观看一区二区三区| 1024精品合集| 欧美精品一区二区三区视频| 91日韩一区二区三区| 国产一区二区三区国产| 亚洲丰满少妇videoshd| 亚洲国产精品精华液2区45| 欧美日韩电影在线播放| jlzzjlzz亚洲日本少妇| 精品一区二区久久久| 亚洲影视在线观看| 国产精品美女久久久久久久网站| 欧美日韩一区二区三区免费看| 国产成人精品aa毛片| 日韩不卡一区二区三区| 一区二区三国产精华液| 中文字幕av免费专区久久| 精品少妇一区二区三区免费观看|