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

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

?? keyexport.cpp

?? 對PKCS11接口的封裝
?? CPP
字號:
/*===========================================================================


===========================================================================

		說明:

			通用函數 支持平臺:WIN98/2K/XP...

		文件名:	

			Epass3000Export.cpp
---------------------------------------------------------------------------
		描述:		

			封裝接口

---------------------------------------------------------------------------
		修改:

*===========================================================================*/


#include "StdAfx.h"
#include "KeyCommon.h"
#include "DeviceList.h"
#include "KeyExport.h"

static char	g_szErrInfo[512] = {0};
DWORD		g_dwErrCode = 0;

int WINAPI CK_GetDeviceNumber()
{
	DWORD dCount = 0;
	
	ULONG ulErrorCode = GetDeviceListHandle().GetSlotCount(dCount);
	
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"取設備列表出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}

	return (ulErrorCode == CKR_OK) ? dCount : -1;
}

int	WINAPI CK_GetDeviceSerialNumber(CK_SLOT_ID ckSlotID,char *szSN)
{
	int idex, iLen;
	ULONG ulErrorCode = CKR_OK;
	BYTE cbserialNumber[17] = {0};	
	CK_TOKEN_INFO ckTokenInfo = {0};
	
	ulErrorCode = GetDeviceListHandle().GetTokenInfo(ckSlotID, &ckTokenInfo);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	CopyMemory(cbserialNumber, ckTokenInfo.serialNumber, 16);
	for(idex = ARRAYSIZEOF(cbserialNumber) - 1; idex > 0; idex--)
	{
		if(cbserialNumber[idex] == 0x20)
		{
			cbserialNumber[idex] = '\0';
			continue;
		}
		else
			break;
	}
	
	iLen = idex + 1;
	CopyMemory(szSN, cbserialNumber, iLen);
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"取設備序列號出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	return (ulErrorCode == CKR_OK) ? USBKEY_OK : USBKEY_FAILED;
}

int	WINAPI CK_CreateFile(CK_SLOT_ID ckSlotID,char *szUserPwd,DWORD dwFileID,DWORD dwFileSize)
{
	BOOL bLoged;
	CK_USER_TYPE ulType;
	ULONG ulErrorCode = CKR_OK;
	
	char strFileName[128] = {0};
	ULONG ulFileNameLen = 0;
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	ulErrorCode = GetDeviceListHandle().GetAppletSessionInfo(ulType, bLoged);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	if(ulType != CKU_USER)
	{
		GetDeviceListHandle().AppletSessionLogOut();

		ulErrorCode = GetDeviceListHandle().AppletSessionLogIn(CKU_USER, (PBYTE)szUserPwd, strlen(szUserPwd));
		if(CKR_OK != ulErrorCode)
		{
			DebugOutPosition(__FILE__, __LINE__);
			goto end;
		}
	}
	
	sprintf(strFileName, "%d", dwFileID);
	ulFileNameLen = strlen(strFileName);
	
	ulErrorCode = GetDeviceListHandle().CreateTokenFile(FALSE, (PBYTE)strFileName, ulFileNameLen, dwFileSize);
	
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"創建文件出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	GetDeviceListHandle().CloseAppletSession();
	return (ulErrorCode == CKR_OK) ? USBKEY_OK : USBKEY_FAILED;
}

int WINAPI CK_DeleteFile(CK_SLOT_ID ckSlotID,char *szUserPwd,DWORD dwFileID)
{
	BOOL bLoged;
	CK_USER_TYPE ulType;
	ULONG ulErrorCode = CKR_OK;
	
	char strFileName[128] = {0};
	ULONG ulFileNameLen = 0;
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	ulErrorCode = GetDeviceListHandle().GetAppletSessionInfo(ulType, bLoged);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	if(ulType != CKU_USER)
	{
		GetDeviceListHandle().AppletSessionLogOut();

		ulErrorCode = GetDeviceListHandle().AppletSessionLogIn(CKU_USER, (PBYTE)szUserPwd, strlen(szUserPwd));
		if(CKR_OK != ulErrorCode)
		{
			DebugOutPosition(__FILE__, __LINE__);
			goto end;
		}
	}
	
	sprintf(strFileName, "%d", dwFileID);
	ulFileNameLen = strlen(strFileName);
	
	ulErrorCode = GetDeviceListHandle().DeleteTokenFile((PBYTE)strFileName, ulFileNameLen);
	
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"刪除設備文件出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	GetDeviceListHandle().CloseAppletSession();
	return (ulErrorCode == CKR_OK) ? USBKEY_OK : USBKEY_FAILED;
}

int	WINAPI CK_WriteData(CK_SLOT_ID ckSlotID,char *szUserPwd,DWORD dwFileID,
						int iOffset,BYTE *bpWriteData,DWORD dwDataLen){
   	BOOL bLoged;
	CK_USER_TYPE ulType;
	ULONG ulErrorCode = CKR_OK;
	
	PBYTE pcbData = NULL;
	ULONG ulcbDataLen = 0;

	PBYTE pcbWriteData = NULL;
	ULONG ulcbWriteDataLen = 0;


	char strFileName[128] = {0};
	ULONG ulFileNameLen = 0;
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	ulErrorCode = GetDeviceListHandle().GetAppletSessionInfo(ulType, bLoged);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	if(ulType != CKU_USER)
	{
		GetDeviceListHandle().AppletSessionLogOut();

		ulErrorCode = GetDeviceListHandle().AppletSessionLogIn(CKU_USER, (PBYTE)szUserPwd, strlen(szUserPwd));
		if(CKR_OK != ulErrorCode)
		{
			DebugOutPosition(__FILE__, __LINE__);
			goto end;
		}
	}
	
	sprintf(strFileName, "%d", dwFileID);
	ulFileNameLen = strlen(strFileName);


	ulErrorCode = GetDeviceListHandle().ReadFileData((PBYTE)strFileName, ulFileNameLen, NULL, ulcbDataLen);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}

	pcbData = new BYTE[ulcbDataLen];
	ZeroMemory(pcbData, ulcbDataLen);

	ulErrorCode = GetDeviceListHandle().ReadFileData((PBYTE)strFileName, ulFileNameLen, pcbData, ulcbDataLen);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}

	ulcbWriteDataLen = ulcbDataLen + iOffset + dwDataLen;

	pcbWriteData = new BYTE[ulcbWriteDataLen];
	ZeroMemory(pcbWriteData, ulcbWriteDataLen);
	CopyMemory(pcbWriteData, pcbData, ulcbDataLen);
	CopyMemory(pcbWriteData + iOffset, bpWriteData, dwDataLen);
	
	if(ulcbDataLen < iOffset + dwDataLen)
	{
		ulcbWriteDataLen = dwDataLen + iOffset;
	}
	else
	{
		ulcbWriteDataLen = ulcbDataLen;
	}

	ulErrorCode = GetDeviceListHandle().WriteFileData((PBYTE)strFileName, ulFileNameLen, pcbWriteData, ulcbWriteDataLen);

	delete [] pcbData;
	pcbData = NULL;

	delete [] pcbWriteData;
	pcbWriteData = NULL;
	
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"寫設備文件出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	GetDeviceListHandle().CloseAppletSession();
	
	return (ulErrorCode == CKR_OK) ? USBKEY_OK : USBKEY_FAILED;
}

int WINAPI CK_ReadData(CK_SLOT_ID ckSlotID,char *szUserPwd,DWORD dwFileID,int iOffset,
					   BYTE *bpReadDataBuffer,DWORD dwReadLen)
{   
	BOOL bLoged;
	CK_USER_TYPE ulType;
	ULONG ulErrorCode = CKR_OK;
	
	PBYTE pcbData = NULL;
	ULONG ulcbDataLen = 0;
	
	char strFileName[128] = {0};
	ULONG ulFileNameLen = 0;
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	ulErrorCode = GetDeviceListHandle().GetAppletSessionInfo(ulType, bLoged);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	if(ulType != CKU_USER)
	{
		GetDeviceListHandle().AppletSessionLogOut();

		ulErrorCode = GetDeviceListHandle().AppletSessionLogIn(CKU_USER, (PBYTE)szUserPwd, strlen(szUserPwd));
		if(CKR_OK != ulErrorCode)
		{
			DebugOutPosition(__FILE__, __LINE__);
			goto end;
		}
	}
	
	sprintf(strFileName, "%d", dwFileID);
	ulFileNameLen = strlen(strFileName);

	ulErrorCode = GetDeviceListHandle().ReadFileData((PBYTE)strFileName, ulFileNameLen, NULL, ulcbDataLen);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	if(ulcbDataLen <= 0)
	{
		ulErrorCode = USBKEY_BUFFER_TOO_SMALL;
		DebugOutPosition(__FILE__, __LINE__);
		goto end;		
	}

	pcbData = new BYTE[ulcbDataLen];
	ZeroMemory(pcbData, ulcbDataLen);

	ulErrorCode = GetDeviceListHandle().ReadFileData((PBYTE)strFileName, ulFileNameLen, pcbData, ulcbDataLen);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		delete [] pcbData;
		pcbData = NULL;
		goto end;
	}

	CopyMemory(bpReadDataBuffer, pcbData + iOffset, dwReadLen);

	delete [] pcbData;
	pcbData = NULL;
	
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"讀設備文件出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	GetDeviceListHandle().CloseAppletSession();	
	return (ulErrorCode == CKR_OK) ? USBKEY_OK : USBKEY_FAILED;
}

int WINAPI CK_SetPIN(CK_SLOT_ID ckSlotID,char *szUserPwd, char *szSOPwd)
{
	ULONG ulErrorCode = CKR_OK;
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	ulErrorCode = GetDeviceListHandle().ChangePinEx((PBYTE)szSOPwd, strlen(szSOPwd), (PBYTE)szUserPwd, strlen(szUserPwd));
	
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"設置密碼出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	GetDeviceListHandle().CloseAppletSession();
	
	return (ulErrorCode == CKR_OK) ? USBKEY_OK : USBKEY_FAILED;
}

int WINAPI CK_VerifyPIN(CK_SLOT_ID ckSlotID,bool bUserPin, char *szPIN)
{
	BOOL bLoged;
	CK_USER_TYPE ulType;
	ULONG ulErrorCode = CKR_OK;	
	
	AUX_PIN_INFO ckTokenAuxInfo = {0};
	
	GetDeviceListHandle().Reset();
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto ERR;
	}
	
	ulErrorCode = GetDeviceListHandle().GetAppletSessionInfo(ulType, bLoged);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		GetDeviceListHandle().CloseAppletSession();
		goto ERR;
	}
	
	if(bLoged == TRUE) 
	{
		GetDeviceListHandle().AppletSessionLogOut();
	}
	
	ulErrorCode = GetDeviceListHandle().AppletSessionLogIn((bUserPin == TRUE) ? CKU_USER : CKU_SO, (PBYTE)szPIN, strlen(szPIN));
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);		
	
		ulErrorCode = GetDeviceListHandle().GetTokenAuxInfo(ckSlotID, &ckTokenAuxInfo);
		if(CKR_OK != ulErrorCode)
		{
			DebugOutPosition(__FILE__, __LINE__);
			GetDeviceListHandle().CloseAppletSession();
			goto ERR;
		}
		else
		{
			if(bUserPin)
				ulErrorCode = (ckTokenAuxInfo.bUserPinCurCounter == 0) ? -1 : ckTokenAuxInfo.bUserPinCurCounter;
			else
				ulErrorCode = (ckTokenAuxInfo.bSOPinCurCounter == 0) ? -1 : ckTokenAuxInfo.bSOPinCurCounter;
		}
	}
	
	GetDeviceListHandle().CloseAppletSession();
	
	return (ulErrorCode);

ERR:
	g_dwErrCode = ulErrorCode;
	sprintf(g_szErrInfo,"檢驗密碼出錯,ErrorCode:0x%x",g_dwErrCode);	
	return -2;
}

int WINAPI CK_ChangePIN(CK_SLOT_ID ckSlotID,bool bUserPin, char *szOldPIN,char *szNewPIN)
{
	ULONG ulErrorCode = CKR_OK;
	CK_USER_TYPE ulType;
	AUX_PIN_INFO ckTokenAuxInfo = {0};
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto ERR;
	}

	ulType = (bUserPin == TRUE) ? CKU_USER : CKU_SO;
	
	ulErrorCode = GetDeviceListHandle().ChangePin(ulType, 
		(PBYTE)szOldPIN, strlen(szOldPIN), (PBYTE)szNewPIN, strlen(szNewPIN));
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		
		ulErrorCode = GetDeviceListHandle().GetTokenAuxInfo(ckSlotID, &ckTokenAuxInfo);
		if(CKR_OK != ulErrorCode)
		{
			DebugOutPosition(__FILE__, __LINE__);
			goto ERR;
		}
		else
		{
			if(bUserPin)
				ulErrorCode = (ckTokenAuxInfo.bUserPinCurCounter == 0) ? -1 : ckTokenAuxInfo.bUserPinCurCounter;
			else
				ulErrorCode = (ckTokenAuxInfo.bSOPinCurCounter == 0) ? -1 : ckTokenAuxInfo.bSOPinCurCounter;
		}
	}

	GetDeviceListHandle().CloseAppletSession();
	return (ulErrorCode);
ERR:
	g_dwErrCode = ulErrorCode;
	sprintf(g_szErrInfo,"修改密碼出錯,ErrorCode:0x%x",g_dwErrCode);
	return -2;
}

int WINAPI CK_GetFileSize(CK_SLOT_ID ckSlotID,char *szUserPwd,DWORD dwFileID)
{
	BOOL bLoged;
	CK_USER_TYPE ulType;
	ULONG ulErrorCode = CKR_OK;
	
	char strFileName[128] = {0};
	ULONG ulFileNameLen = 0;
	ULONG ulFileSize = 0;
	
	ulErrorCode = GetDeviceListHandle().OpenAppletSession(ckSlotID);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	ulErrorCode = GetDeviceListHandle().GetAppletSessionInfo(ulType, bLoged);
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}	
	
	GetDeviceListHandle().AppletSessionLogOut();

	ulErrorCode = GetDeviceListHandle().AppletSessionLogIn(CKU_USER, (PBYTE)szUserPwd, strlen(szUserPwd));
	if(CKR_OK != ulErrorCode)
	{
		DebugOutPosition(__FILE__, __LINE__);
		goto end;
	}
	
	sprintf(strFileName, "%d", dwFileID);
	ulFileNameLen = strlen(strFileName);
	
	ulErrorCode = GetDeviceListHandle().GetFileSize((PBYTE)strFileName, ulFileNameLen, ulFileSize);
	
end:
	if ( ulErrorCode != CKR_OK )
	{
		sprintf(g_szErrInfo,"獲取文件大小出錯,ErrorCode:0x%x",ulErrorCode);
		g_dwErrCode = ulErrorCode;
	}
	GetDeviceListHandle().CloseAppletSession();
	return (ulErrorCode == CKR_OK) ? ulFileSize : 0;
}

const char * WINAPI CK_GetLastErrorInfor()
{
	return g_szErrInfo;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久99| 经典一区二区三区| 精品污污网站免费看| 精品一区二区三区的国产在线播放 | 中文字幕中文字幕在线一区| 亚洲国产日产av| 亚洲精品美国一| 悠悠色在线精品| 福利电影一区二区三区| 国内成人自拍视频| 国内外成人在线视频| 在线观看av不卡| 欧美日韩综合不卡| 中文字幕亚洲一区二区av在线| 中文字幕一区二区不卡| 精品一区二区三区的国产在线播放 | 日韩精品在线一区二区| 日韩一级高清毛片| 久久夜色精品国产噜噜av| 精品少妇一区二区三区免费观看| 久久久国产一区二区三区四区小说| 久久综合九色综合97婷婷女人| 一区二区三区中文免费| 天涯成人国产亚洲精品一区av| 日产国产高清一区二区三区| 午夜精品视频在线观看| 欧美视频三区在线播放| 欧美精品一区二区三区视频 | 国产精品国产三级国产有无不卡 | 久久久久久99久久久精品网站| 日韩一区精品视频| 国产成a人无v码亚洲福利| 欧美成人欧美edvon| 蜜臀av性久久久久蜜臀aⅴ| 国产成人精品网址| 91福利国产精品| 欧美一区二区三区四区视频| 国产精品福利电影一区二区三区四区| 韩国成人在线视频| 久久老女人爱爱| 成人高清免费观看| 欧美年轻男男videosbes| 日韩女优电影在线观看| 男女男精品网站| 在线日韩国产精品| 午夜国产精品影院在线观看| 5858s免费视频成人| 亚洲日本成人在线观看| 激情综合色丁香一区二区| 日韩精品一区二区三区老鸭窝| 国产制服丝袜一区| 中文一区一区三区高中清不卡| 亚洲日本va午夜在线影院| 色欧美88888久久久久久影院| 日韩欧美一区在线| 国产精品影视在线| 日韩精品一区二区三区swag| 国产真实乱偷精品视频免| 国产精品久久久久桃色tv| 在线日韩一区二区| 国内成+人亚洲+欧美+综合在线| 欧美精品一区二区三| 91在线观看高清| 久久综合狠狠综合久久综合88 | 久久精品国产成人一区二区三区| 在线观看不卡一区| 久久国产欧美日韩精品| 国产精品乱码妇女bbbb| 国产一区二区不卡老阿姨| 5858s免费视频成人| 成人黄色一级视频| 奇米精品一区二区三区在线观看一| 久久久久久久久免费| 日本乱人伦aⅴ精品| 国产综合成人久久大片91| 一区二区三区美女视频| 精品国产一区a| 欧美日韩视频专区在线播放| 国产在线精品一区二区夜色| 亚洲五码中文字幕| 国产精品第13页| 精品少妇一区二区三区日产乱码| 一本色道久久综合亚洲aⅴ蜜桃| 免费成人小视频| 亚洲va中文字幕| 91精品国产综合久久香蕉麻豆| 成人亚洲一区二区一| 中文字幕日韩一区| 精品国产乱码久久久久久1区2区| 欧美曰成人黄网| 成a人片亚洲日本久久| 久久99久久久久久久久久久| 亚洲国产人成综合网站| 国产精品理伦片| 中文字幕第一区第二区| 精品国产百合女同互慰| 欧美精三区欧美精三区| 国模一区二区三区白浆| 调教+趴+乳夹+国产+精品| 亚洲午夜激情av| 亚洲激情第一区| 亚洲女爱视频在线| 国产麻豆欧美日韩一区| 日韩激情一区二区| 亚洲国产综合视频在线观看| 亚洲另类春色校园小说| 中文字幕一区二区三区不卡| 国产欧美综合在线观看第十页| 国产99久久精品| 国产美女娇喘av呻吟久久| 国产在线不卡一区| 韩国三级电影一区二区| 国产在线视频精品一区| 国产在线精品一区二区三区不卡| 狠狠色丁香久久婷婷综合丁香| 一级精品视频在线观看宜春院| 亚洲欧美日韩人成在线播放| 国产精品视频yy9299一区| 国产精品免费aⅴ片在线观看| 久久综合久久久久88| 国产偷国产偷亚洲高清人白洁| 色av成人天堂桃色av| 日本久久一区二区| 欧美福利一区二区| 欧美一区二区久久久| 欧美大片拔萝卜| 国产色产综合色产在线视频| 国产精品妹子av| 亚洲一区二区在线观看视频 | 欧美日韩国产综合一区二区三区| 在线一区二区观看| 欧美丰满一区二区免费视频| 欧美一区二区三区思思人| 久久精品人人做人人综合| 最新中文字幕一区二区三区 | 国产精品网友自拍| 中文字幕亚洲不卡| 亚洲va欧美va国产va天堂影院| 日本不卡视频在线观看| 国产一区二区中文字幕| 99久久国产免费看| 国产91精品久久久久久久网曝门| 岛国精品在线观看| 欧美午夜精品久久久久久孕妇 | 日韩一区二区中文字幕| 欧美精品一区二区不卡 | 色偷偷88欧美精品久久久| 欧美在线短视频| 久久综合色综合88| 亚洲麻豆国产自偷在线| 日本亚洲电影天堂| 99久久99久久久精品齐齐| 欧美剧情电影在线观看完整版免费励志电影| 欧美一区二区三区免费视频 | 中文无字幕一区二区三区| 亚洲午夜一区二区三区| 国产麻豆精品在线| 欧美日韩一卡二卡| 亚洲国产精品成人综合色在线婷婷| 亚洲mv在线观看| 成人性生交大片免费| 91麻豆精品久久久久蜜臀| 中文字幕亚洲不卡| 久久超碰97中文字幕| 色婷婷精品久久二区二区蜜臂av | 精品国产污网站| 一区二区理论电影在线观看| 激情伊人五月天久久综合| 欧美日韩精品一区二区三区| 日本一二三四高清不卡| 精品一区二区三区不卡 | 国产精品系列在线观看| 欧美日韩国产成人在线91| 中文字幕中文字幕一区二区| 精品制服美女丁香| 欧美日韩不卡一区| 亚洲精品综合在线| 国产99久久久国产精品| 久久网这里都是精品| 人人狠狠综合久久亚洲| 欧美日韩亚洲综合在线 | 麻豆一区二区99久久久久| 91久久国产综合久久| 国产日韩视频一区二区三区| 久久精品国产999大香线蕉| 8v天堂国产在线一区二区| 亚州成人在线电影| 在线视频你懂得一区| 亚洲综合一二区| 在线看一区二区| 亚洲一区二区三区中文字幕在线| 99久久久国产精品免费蜜臀| 中文字幕一区二区三区不卡| fc2成人免费人成在线观看播放| 色综合久久99| 亚洲精品国产高清久久伦理二区| 99久久婷婷国产综合精品电影| 国产精品国产三级国产普通话三级 | 自拍偷拍亚洲综合| 99久久综合国产精品|