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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? testcspdlg.cpp

?? Windows Mobile 5.0下的CSP圖形化測(cè)試工具。
?? CPP
字號(hào):
// TestCSPDlg.cpp : implementation file
//
/*
	call SCWCSPCE.dll to test csp functions
	
*/
#include "stdafx.h"
#include "TestCSP.h"
#include "TestCSPDlg.h"
#include "Test.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

#define CREATE_CONTAINER "Create Container"
#define DELETE_CONTAINER "Delete Container"
#define GEN_KEYS "Gen RSA Keys"
#define HASH_DATA  "Hash_Data"
#define SIGN_HASH "Sign Hash"
#define GET_PROV_PARAM "Get Prov Param"
#define ENCRYPT_DECRYPT "En/decrypt"
#define SDLISTEN "SDListen"
#define SDNOTLISTEN "SDNotListen"

#define BUF_SIZE 256

HMODULE csp = LoadLibrary(TEXT("SCWCSPCE.dll"));

CSPFunc cf;


// CTestCSPDlg dialog

CTestCSPDlg::CTestCSPDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestCSPDlg::IDD, pParent)
	, msg(_T(""))
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTestCSPDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, MSG, msg);
}

BEGIN_MESSAGE_MAP(CTestCSPDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
	ON_WM_SIZE()
#endif
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_BUTTON1, &CTestCSPDlg::OnBnClickedButton1)
END_MESSAGE_MAP()

void CTestCSPDlg::WriteLog(CString log)
{
	msg = msg + log + (CString)"\r\n";
	UpdateData(false);
}

void CTestCSPDlg::WL(const char *bytes)
{
	msg += (CString)bytes + (CString)"\r\n";
	UpdateData(false);
}

void CTestCSPDlg::SL()
{
	msg += (CString)"	Succeed!\r\n";
	UpdateData(false);
}

void CTestCSPDlg::FL()
{
	msg += (CString)"	Failed!\r\n";
	UpdateData(false);
}
// CTestCSPDlg message handlers
void InitCSPFuntions()
{
	if(csp == NULL)
	{
		CTestCSPDlg dlg1;
		dlg1.WriteLog((CString)"Error:The module SCWCSPCE.DLL is not found!");
	};
	cf.lp_fnAcquire = (ACQUIRECONTEXT)GetProcAddress(csp,TEXT("CPAcquireContext"));
	cf.lp_fnRelease = (RELEASECONTEXT)GetProcAddress(csp,TEXT("CPReleaseContext"));

	cf.lp_fnGetProvParam = (GETPROVPARAM)GetProcAddress(csp,TEXT("CPGetProvParam"));

	cf.lp_fnCreateHash = (CREATEHASH)GetProcAddress(csp,TEXT("CPCreateHash"));
	cf.lp_fnDestroyHash = (DESTROYHASH)GetProcAddress(csp,TEXT("CPDestroyHash"));
	cf.lp_fnGetHashParam = (GETHASHPARAM)GetProcAddress(csp,TEXT("CPGetHashParam"));
	cf.lp_fnHashData = (HASHDATA)GetProcAddress(csp,TEXT("CPHashData"));
	cf.lp_fnHashSessionKey = (HASHSESSIONKEY)GetProcAddress(csp,TEXT("CPHashSessionKey"));
	cf.lp_fnSetHashParam = (SETHASHPARAM)GetProcAddress(csp,TEXT("CPSetHashParam"));

	cf.lp_fnEncrypt = (ENCRYPT)GetProcAddress(csp,TEXT("CPEncrypt"));
	cf.lp_fnDecrypt = (DECRYPT)GetProcAddress(csp,TEXT("CPDecrypt"));
	cf.lp_fnSignHash = (SIGNHASH)GetProcAddress(csp,TEXT("CPSignHash"));

	cf.lp_fnVerifySignature = (VERIFYSIGNATURE)GetProcAddress(csp,TEXT("CPVerifySignature"));

	cf.lp_fnDeriveKey = (DERIVEKEY)GetProcAddress(csp,TEXT("CPDeriveKey"));
	cf.lp_fnDestroyKey = (DESTROYKEY)GetProcAddress(csp,TEXT("CPDestroyKey"));
	cf.lp_fnImportKey = (IMPORTKEY)GetProcAddress(csp,TEXT("CPImportKey"));
	cf.lp_fnExportKey = (EXPORTKEY)GetProcAddress(csp,TEXT("CPExportKey"));
	cf.lp_fnGenKey = (GENKEY)GetProcAddress(csp,TEXT("CPGenKey"));
	cf.lp_fnGetKeyParam = (GETKEYPARAM)GetProcAddress(csp,TEXT("CPGetKeyParam"));
	cf.lp_fnSetKeyParam = (SETKEYPARAM)GetProcAddress(csp,TEXT("CPSetKeyParam"));
	cf.lp_fnGetUserKey = (GETUSERKEY)GetProcAddress(csp,TEXT("CPGetUserKey"));
	cf.lp_fnGenRandom = (GENRANDOM)GetProcAddress(csp,TEXT("CPGenRandom"));

	//cui.lp_fnNewCard = (NEWCARD)GetProcAddress(hUI,TEXT("NewCard"));
}
BOOL CTestCSPDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	InitCSPFuntions();
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CTestCSPDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
	DRA::RelayoutDialog(
		AfxGetInstanceHandle(), 
		this->m_hWnd, 
		DRA::GetDisplayMode() != DRA::Portrait ? 
			MAKEINTRESOURCE(IDD_TESTCSP_DIALOG_WIDE) : 
			MAKEINTRESOURCE(IDD_TESTCSP_DIALOG));
}
#endif

bool CTestCSPDlg::AcquireContext(HCRYPTPROV* hProv)
{
	WL("Begin in CPAcquireContext....");
	if(cf.lp_fnAcquire(hProv,0,0,NULL))
	{
		SL();
		return true;
	} 
	else 
	{
		if(GetLastError() == NTE_BAD_KEYSET)
		{
			WriteLog((CString)"Key container need to be created.");
			if(cf.lp_fnAcquire(hProv,0,CRYPT_NEWKEYSET,NULL))
			{
				WriteLog((CString)"A new key container has been created.");
				return true;
			}
			else
			{
				WriteLog((CString)"Could not create a key container.");
				return false;
			}
		}
		else
		{
			FL();
			return false;
		}
	}
	return true;
}

void CTestCSPDlg::TestCreateContainer()
{
	HCRYPTPROV hProv;
	WriteLog((CString)"CPAcquireContext....");
	if(cf.lp_fnAcquire(&hProv,0,0,NULL))
	{
		WriteLog((CString)"	 Container is already there.");
	} 
	else 
	{
		if(GetLastError() == NTE_BAD_KEYSET)
		{
			if(cf.lp_fnAcquire(&hProv,0,CRYPT_NEWKEYSET,NULL))
			{
				WriteLog((CString)"	 Container created.");
			}
			else
			{
				FL();
			}
		}
	}
	WL("CPReleaseContext....");
	if(cf.lp_fnRelease(hProv,0))
	{
		SL();
	}
	else
	{
		FL();
	}
}
void CTestCSPDlg::TestDeleteKeySet()
{
	HCRYPTPROV hProv;
	WriteLog((CString)"Begin in CPAcquireContext....");
	if(cf.lp_fnAcquire(&hProv,0,CRYPT_DELETEKEYSET,NULL))
	{
		WriteLog((CString)"		Deleted.");
	} 
	else 
	{
		if(GetLastError() == NTE_BAD_KEYSET)
		{
			WL("Key set not exist!");
		}
		else
		{
			WL("Failed to delete!");
		}
	}
	
}

void CTestCSPDlg::TestGenKey()
{  
	HCRYPTPROV hProv;
	HCRYPTKEY hKey;
	if(!AcquireContext(&hProv))
		return;
	WriteLog((CString)"CPGetUserKey ....");
	if(cf.lp_fnGetUserKey(hProv,AT_SIGNATURE,&hKey))
	{    
		WriteLog((CString)"Key already there!");
	}
	else 
	{ 
		WriteLog((CString)"CPGenKey...");
		if (cf.lp_fnGenKey(hProv,AT_SIGNATURE,0,&hKey))
		{
			SL();
		} 
		else
		{
			FL();
		}
	}
	WL("CPReleaseContext...");
	if(cf.lp_fnRelease(hProv,0))
	{
		SL();
	}
	else
	{
		FL();
	}
}

void CTestCSPDlg::TestHashData()
{
	HCRYPTPROV hProv;
	HCRYPTHASH hash;
	if(!AcquireContext(&hProv))
		return;
	WriteLog((CString)"CPCreateHash....");
	if(cf.lp_fnCreateHash(hProv,CALG_MD5,0,0,&hash))
		SL();
	else
	{
		FL();
		return;
	}

	DWORD bLen = 100;
	BYTE* pbData = new BYTE[bLen];
	WCHAR* temp = TEXT("Welcome to test.");
	WideCharToMultiByte(CP_ACP,0,temp,wcslen(temp),(LPSTR)pbData,bLen,0,0);
	WriteLog((CString)temp);
	bLen = sizeof(pbData);

	WL("CPHashData....");
	if(cf.lp_fnHashData(hProv,hash,pbData,bLen,0))
	{  
		SL();
	}
	else 
	{ 
		FL();
		return;
	}

	WL("CPReleaseContext...");
	if(cf.lp_fnRelease(hProv,0))
	{
		SL();
	}
	else
	{
		FL();
	}
}
void CTestCSPDlg::TestSignHash()
{  
	HCRYPTPROV hProv;
	HCRYPTHASH hash;
	HCRYPTKEY hKey;

	if(!AcquireContext(&hProv))
		return;

	WriteLog((CString)"Begin in test RSA sign....");

	if(!cf.lp_fnGetUserKey(hProv,AT_SIGNATURE,&hKey))
	{
		WriteLog((CString)"The signature keys are not exist.\r\nBegin to generate them....");
		WriteLog((CString)"CPGenKey");
		if(!cf.lp_fnGenKey(hProv,AT_SIGNATURE,0,&hKey))
		{
			WriteLog((CString)"  Failed.");
			return;
		}
		else
		{
			WriteLog((CString)"  Succeed.");
		}		
	}

	WriteLog((CString)"CPCreateHash...");
	if(cf.lp_fnCreateHash(hProv,CALG_MD5,0,0,&hash))
		WriteLog((CString)"  Succeed.");
	else
		WriteLog((CString)"  Failed.");
	DWORD bLen = 100;
	BYTE* pbData = new BYTE[bLen];
	WCHAR* temp = TEXT("Welcome to test.");
	WideCharToMultiByte(CP_ACP,0,temp,wcslen(temp),(LPSTR)pbData,bLen,0,0);
	bLen = sizeof(pbData);
	WriteLog((CString)"CPHashData");
	if(cf.lp_fnHashData(hProv,hash,pbData,bLen,0))
		WriteLog((CString)"  Succeed.");
	else 
		WriteLog((CString)"  Failed.");

	DWORD bufferLength;
	if(!cf.lp_fnSignHash(hProv,hash,AT_SIGNATURE,NULL,0,NULL,&bufferLength))
		WriteLog((CString)"Get signature size failed.");
	BYTE* buffer = new BYTE[sizeof(BYTE)*bufferLength];

	WriteLog((CString)"CPSignHash");
	if(cf.lp_fnSignHash(hProv,hash,AT_SIGNATURE,NULL,0,buffer,&bufferLength))
		WriteLog((CString)"  Succeed.");
	else
		WriteLog((CString)"  Failed.");
	
	WriteLog((CString)"CPVerifySignature");
	if(cf.lp_fnVerifySignature(hProv,hash,buffer,bufferLength,hKey,NULL,0))
		WriteLog((CString)"  Succeed.");
	else
		WriteLog((CString)"  Failed.");
	
	WriteLog((CString)"CPReleaseContext....");
	if(cf.lp_fnRelease(hProv,0))
	{
		WriteLog((CString)"  Succeed.");
	}
	else
	{
		WriteLog((CString)"  Failed");
	}
}

void CTestCSPDlg::TestGetProvParam()
{
	HCRYPTPROV hProv;
	if(!AcquireContext(&hProv))
		return;
	DWORD params[12] = {PP_CONTAINER,PP_ENUMALGS,PP_ENUMALGS_EX,PP_ENUMCONTAINERS,PP_IMPTYPE,PP_NAME,PP_VERSION,PP_SIG_KEYSIZE_INC,PP_KEYX_KEYSIZE_INC,
		PP_KEYSET_SEC_DESCR,PP_UNIQUE_CONTAINER,PP_PROVTYPE};
	DWORD flags[3] = {};
	DWORD dwParam;
	BYTE *pbData = new BYTE[256];
	DWORD pdwDataLen = 256;
	DWORD dwFlags = 0;
	char* temp = new char[400];
	WL("CPGetProvParam....");
	for(int i = 0; i < 12; i++)
	{
		pdwDataLen = 256;
		dwParam = params[i];
		switch(i)
		{

		case 1:
			{
				PROV_ENUMALGS	pbwData;
				dwFlags = CRYPT_FIRST;
				WL("{ALG_ID, BitLen, NameLen, Name}");
				while(cf.lp_fnGetProvParam(hProv,dwParam,reinterpret_cast<BYTE*>(&pbwData),&pdwDataLen,dwFlags))
				{
					dwFlags = 0;
					sprintf(temp,"{%d,   %d,   %d,   %S}",pbwData.aiAlgid,pbwData.dwBitLen,pbwData.dwNameLen,pbwData.szName);
					WL(temp);
					memset(temp,0,400);
					pdwDataLen = sizeof(pbwData);
				}
				break;
			}
		case 2:
			{
				/*PROV_ENUMALGS_EX	pbwData;
				dwFlags = CRYPT_FIRST;
				WL("{ALG_ID,  BitLen,  NameLen,  Name}");
				while(cf.lp_fnGetProvParam(hProv,dwParam,reinterpret_cast<BYTE*>(&pbwData),&pdwDataLen,dwFlags))
				{
					dwFlags = 0;
					sprintf(temp,"{%d, %d, %d, %S}",pbwData.aiAlgid,pbwData.dwDefaultLen,pbwData.dwNameLen,pbwData.szName);
					WL(temp);
					memset(temp,0,400);
					pdwDataLen = sizeof(pbwData);
				}*/
				break;
			}
		case 5:
			{
				if(cf.lp_fnGetProvParam(hProv,dwParam,pbData,&pdwDataLen,dwFlags))
				{
					sprintf(temp,"CSP name is:\r\n  %S",pbData);
					WL(temp);
					memset(temp,0,400);
				}
				else
				{
					SL();
				}
				break;
			}
		case 9:
			break;
		case 10:
			{
				if(cf.lp_fnGetProvParam(hProv,dwParam,pbData,&pdwDataLen,dwFlags))
				{
					sprintf(temp,"Default container is:\r\n  %S",pbData);
					WL(temp);
					memset(temp,0,400);
				}
				else
				{
					SL();
				}
				break;
			}
		default:
			{
				/*if(cf.lp_fnGetProvParam(hProv,dwParam,pbData,&pdwDataLen,dwFlags))
				{
					sprintf(temp,"%S - length:%d \n",pbData,pdwDataLen);
					WL(temp);
					memset(temp,0,400);
				}
				else
				{
					SL();
				}*/
				break;
			}

		}

	}
	WL("CPReleaseContext...");
	if(cf.lp_fnRelease(hProv,0))
	{
		SL();
	}
	else
	{
		FL();
	}
}


void CTestCSPDlg::TestEncrypt()
{
	HCRYPTPROV hProv;
	if(!AcquireContext(&hProv))
		return;

	DWORD bLen = 100;
	BYTE* pbData = new BYTE[bLen];
	WCHAR* temp = TEXT("Welcome to test.");
	WideCharToMultiByte(CP_ACP,0,temp,wcslen(temp),(LPSTR)pbData,bLen,0,0);
	bLen = sizeof(pbData);

	WL("Test data is:");
	WL((LPSTR)pbData);

	HCRYPTKEY hSessionKey;
	WL("CPGenKey....(3DES)");
	if(cf.lp_fnGenKey(hProv,CALG_3DES,CRYPT_EXPORTABLE,&hSessionKey))
	{
		SL();
	}
	else
	{
		FL();
		return;
	}
	
	WL("CPEncrypt...");
	if(cf.lp_fnEncrypt(hProv,hSessionKey,0,TRUE,0,pbData,&bLen,100))
	{
		SL();
	}
	else
	{
		FL();
		return;
	}
	
	WL("CPDecrypt...");
	if(cf.lp_fnDecrypt(hProv,hSessionKey,0,TRUE,0,pbData,&bLen))
	{
		SL();
		WL("Decrypt data is:");
		WL((LPSTR)pbData);
	}
	else
	{
		FL();
		return;
	}

	WriteLog((CString)"CPReleaseContext....");
	if(cf.lp_fnRelease(hProv,0))
	{
		WriteLog((CString)"  Succeed.");
	}
	else
	{
		WriteLog((CString)"  Failed");
	}
}

void CTestCSPDlg::TestReleaseContext()
{
	HCRYPTPROV hProv;
	if(!AcquireContext(&hProv))
		return;
	WriteLog((CString)"CPReleaseContext....");
	if(cf.lp_fnRelease( hProv,0))
	{
		SL();
	}
	else
	{
		FL();
	}
}
void CTestCSPDlg::OnBnClickedButton1()
{
	// TODO: Add your control notification handler code here
	HANDLE hDrv;
	CString elem;
	GetDlgItem(FUNC_CHOOSE)->GetWindowText(elem);
	if(elem ==CREATE_CONTAINER)
	{ 
		msg=(CString)"";
		TestCreateContainer();
	}
	else if(elem == DELETE_CONTAINER)
	{
		msg = (CString)"";
		TestDeleteKeySet();
	}
	else if (elem==GEN_KEYS)
	{  msg=(CString)"";
	   TestGenKey();
	} 
	else if(elem==HASH_DATA)
	{  msg=(CString)"";
	   TestHashData();
	}
	else if(elem == SIGN_HASH)
	{
		msg = (CString)"";
		TestSignHash();
	}
	else if(elem == GET_PROV_PARAM)
	{
		msg = (CString)"";
		TestGetProvParam();
	}
	else if(ENCRYPT_DECRYPT == elem)
	{
		msg = (CString)"";
		TestEncrypt();
	}
	else if(SDLISTEN == elem)
	{
		msg = (CString)"";
		WL("Activate SDListen.dll as service....");
		hDrv = RegisterService (TEXT("MSL"), 0, TEXT("ListenSD.dll"), 0);
		
		if(hDrv)
		{
			SL();
		}
		else
		{
			FL();
		}
	}
	else if(SDNOTLISTEN == elem)
	{
		msg = (CString)"";
		if(hDrv)
		{
			WL("Deregister SDListen.dll ....");
			if(DeregisterService(hDrv))
			{
				SL();
			}
			else
			{
				FL();
				WCHAR* err = new WCHAR[20];
				wsprintf(err,TEXT("Error Code:%d."),GetLastError());
				WriteLog((CString)err);
				delete[] err;
			}
		}
		else
		{
			WL("SD listen service is not started.");
		}
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说图片综合网| 91.xcao| 精品国产一区久久| 亚洲成人先锋电影| 色狠狠av一区二区三区| 一区二区三区四区视频精品免费| 成人av中文字幕| 国产精品久久网站| 粉嫩欧美一区二区三区高清影视| 久久免费美女视频| 国产.欧美.日韩| 国产精品女人毛片| 本田岬高潮一区二区三区| 国产精品视频免费| 99麻豆久久久国产精品免费优播| 亚洲国产岛国毛片在线| 成人av在线一区二区| 亚洲天堂av一区| 在线国产电影不卡| 肉色丝袜一区二区| 精品成人一区二区| 国产精品中文字幕日韩精品| 国产精品拍天天在线| 日本久久精品电影| 日韩精品三区四区| 欧美大胆人体bbbb| 亚洲自拍偷拍麻豆| 欧美一区二区视频在线观看2020| 捆绑变态av一区二区三区| 国产午夜精品美女毛片视频| 成人动漫av在线| 亚洲影院在线观看| 日韩一区国产二区欧美三区| 日韩精品成人一区二区在线| 日韩欧美123| a4yy欧美一区二区三区| 亚洲电影在线播放| 欧美xxxxxxxxx| 不卡av免费在线观看| 一区二区三区在线观看网站| 制服.丝袜.亚洲.中文.综合| 国产成人午夜视频| 亚洲老妇xxxxxx| 欧美不卡激情三级在线观看| 9人人澡人人爽人人精品| 午夜欧美视频在线观看| 欧美高清视频不卡网| 国产一区二区精品久久99| 伊人婷婷欧美激情| 久久久无码精品亚洲日韩按摩| 91丨porny丨最新| 精品无人码麻豆乱码1区2区 | wwwwxxxxx欧美| 92精品国产成人观看免费| 麻豆91免费观看| 亚洲青青青在线视频| 精品国产一区二区亚洲人成毛片| 成人不卡免费av| 亚洲另类一区二区| 久久久久亚洲综合| 欧美夫妻性生活| 91小视频免费看| 国产乱码精品一区二区三区五月婷| 一区二区三区电影在线播| 精品国产欧美一区二区| 欧美色图天堂网| 久久精品久久综合| 亚洲图片一区二区| 久久伊人蜜桃av一区二区| 色综合一区二区| 国产精品一二三四五| 青青草成人在线观看| 亚洲一区二区在线播放相泽| 欧美精品一区二区三区蜜桃| 欧美酷刑日本凌虐凌虐| 本田岬高潮一区二区三区| 国产一区二区三区在线观看精品 | 一区二区成人在线视频 | 欧美96一区二区免费视频| 一区二区三区四区在线播放| 欧美精品一区二区三区在线 | 精品国产免费久久| 欧美久久久一区| 欧美一级午夜免费电影| 欧美日本韩国一区| 色婷婷一区二区| 欧美日韩黄视频| 在线视频国产一区| 91福利在线观看| 日本电影欧美片| 91美女在线看| 色婷婷狠狠综合| 91精品91久久久中77777| 99国产欧美另类久久久精品| 国产高清在线观看免费不卡| 国产高清精品在线| 国产凹凸在线观看一区二区| 国产夫妻精品视频| 粉嫩久久99精品久久久久久夜| 国产一区福利在线| 国产不卡在线一区| 99久久99久久久精品齐齐 | 国产麻豆视频精品| 国产一区二区三区在线看麻豆| 国产在线看一区| 国产一区二区三区久久久| 懂色av噜噜一区二区三区av| 丁香六月综合激情| 成熟亚洲日本毛茸茸凸凹| av在线一区二区| 国产盗摄视频一区二区三区| 国内成人免费视频| 成人av在线一区二区三区| av在线综合网| 欧美日韩国产免费| 日韩一区二区三区精品视频| 欧美精品一区二区三区高清aⅴ| www欧美成人18+| 一区在线观看视频| 欧美激情综合在线| 天天综合色天天| 欧美96一区二区免费视频| 成人黄色软件下载| 欧美少妇bbb| 国产乱码字幕精品高清av | 99久久er热在这里只有精品66| 欧美日韩久久一区| xfplay精品久久| 国产午夜精品久久| 日本不卡一二三区黄网| 国产成人av一区二区| 欧美一区二区在线观看| 国产精品女人毛片| 免费亚洲电影在线| 不卡av在线免费观看| 日韩一区二区中文字幕| 国产精品久久久久久久久晋中 | 97精品久久久久中文字幕| 在线不卡一区二区| 亚洲国产精品av| 午夜精品久久久久影视| 国产精品亚洲专一区二区三区| 欧美中文一区二区三区| 6080午夜不卡| 亚洲综合免费观看高清完整版| 国产一区二区导航在线播放| 91精品欧美久久久久久动漫 | 中文字幕巨乱亚洲| 亚洲最大成人网4388xx| 国产成人高清视频| 欧美日韩国产首页| 亚洲精品中文字幕在线观看| 国产精品影视在线观看| 91精品国产乱| 婷婷六月综合网| 91论坛在线播放| 欧美经典一区二区| 激情综合网天天干| 欧美伦理影视网| 一区二区三区自拍| 成人精品一区二区三区四区 | 一区二区三区在线免费播放| 激情五月激情综合网| 欧美日韩国产系列| 亚洲精品成人悠悠色影视| www.激情成人| 综合亚洲深深色噜噜狠狠网站| 精品在线播放免费| 91精品国产综合久久香蕉的特点| 最新不卡av在线| 成人av中文字幕| 国产欧美一区二区三区在线老狼| 国产1区2区3区精品美女| 日韩三级在线免费观看| 亚洲天堂a在线| 91久久久免费一区二区| 中文字幕字幕中文在线中不卡视频| 风间由美一区二区三区在线观看| 久久亚洲二区三区| 国产成人av电影在线观看| 国产精品美女久久久久久 | 99国产精品久| 一区二区三区在线观看国产| 欧美色图免费看| 日韩和欧美一区二区三区| 精品久久99ma| 成人动漫一区二区在线| 一区二区三区成人| 日韩午夜在线观看| 国产成人精品影视| 亚洲最快最全在线视频| 日韩欧美www| eeuss鲁片一区二区三区| 亚洲国产美国国产综合一区二区| 日韩三级高清在线| 成人激情av网| 日韩电影免费一区| 久久亚区不卡日本| 欧美中文字幕不卡| 国产在线视频精品一区|