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

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

?? getinfos.cpp

?? PKCS#11 讀取USB KEY證書
?? CPP
字號:
/*
[]=========================================================================[]

FILE:
	getinfos.cpp

DESC:
	
[]=========================================================================[]
*/

//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "getinfos.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define PKCS_LIB_NAME			"ShuttleCsp11_2001.dll"

//Initialize the token Cryptoki library:
CGetInfos::CGetInfos():m_hDll(NULL_PTR)
{
	m_path = PKCS_LIB_NAME;
}

//Free the token Cryptoki library:Finish.
CGetInfos::~CGetInfos()
{
	//if load library failed ,but m_pToke is NULL, so call C_Finalize will be wrong
	if(m_pToken != NULL)
	{
		m_pToken->C_Finalize(NULL_PTR);
		m_pToken = NULL_PTR;
	}
	
	if(m_hDll)
	{
		FreeLibrary(m_hDll);
	}
}

unsigned long CGetInfos::GetSlotInfos(CK_SLOT_INFO_PTR pSlotInfo)
{
	CK_RV rv = CKR_OK;
	CK_ULONG ulCount = 0;
	CK_SLOT_ID_PTR pSlotList = NULL_PTR;
	rv = m_pToken->C_GetSlotList(FALSE, NULL_PTR, &ulCount);
	if((rv != CKR_OK) || (ulCount <= 0))
		return CKR_DEVICE_ERROR;
	
	pSlotList = (CK_SLOT_ID_PTR)new CK_SLOT_ID [ulCount];
	if (pSlotList == NULL_PTR)
	{
		return CKR_HOST_MEMORY;
	}

	rv = m_pToken->C_GetSlotList(FALSE, pSlotList, &ulCount);
	if((rv != CKR_OK) || (ulCount <= 0))
	{
		delete [] pSlotList;
		pSlotList = NULL_PTR;
		return CKR_SLOT_ID_INVALID;
	}
	/*Get slot information for the first slot*/
	for (unsigned int i = 0; i < ulCount; ++i)
	{
		rv = m_pToken->C_GetSlotInfo(pSlotList[i], pSlotInfo);
		if(rv != CKR_OK)
		{
			delete [] pSlotList;
			pSlotList = NULL_PTR;
			return CKR_FUNCTION_FAILED;
		}
		//ShowSlotInfo(pSlotInfo);
	}

	delete [] pSlotList;
	pSlotList = NULL_PTR;
	return CKR_OK;
}

unsigned long CGetInfos::GetTokenInfos(CK_TOKEN_INFO_PTR pTokenInfo)
{
	CK_RV rv = CKR_OK;
	CK_ULONG ulCount = 0;
	CK_SLOT_ID_PTR pSlotList = NULL_PTR;

	rv = m_pToken->C_GetSlotList(TRUE, NULL_PTR, &ulCount);
	if((rv != CKR_OK) || (ulCount <= 0))
		return CKR_DEVICE_ERROR;
	pSlotList = (CK_SLOT_ID_PTR)new CK_SLOT_ID [ulCount];
	rv = m_pToken->C_GetSlotList(TRUE, pSlotList, &ulCount);
	if((rv != CKR_OK) || (ulCount <= 0))
	{
		delete [] pSlotList;
		pSlotList = NULL_PTR;
		return CKR_TOKEN_NOT_PRESENT;
	}
	/*Get slot information for the first token*/
	for (unsigned int i = 0; i < ulCount; ++i)
	{
		rv = m_pToken->C_GetTokenInfo(pSlotList[i], pTokenInfo);
		if(rv != CKR_OK)
		{
			delete [] pSlotList;
			pSlotList = NULL_PTR;
			return CKR_FUNCTION_FAILED;
		}
		//ShowTokenInfo(pTokenInfo);
	}
	delete [] pSlotList;
	pSlotList = NULL_PTR;
	return CKR_OK;
}

bool CGetInfos::CheckRV(const char* szInfo, unsigned long rv)
{
	printf(szInfo);
	if(CKR_OK == rv)
	{
		//printf(" ... OK.\n");
		return true;
	}

	printf(" ... FAILED. ");

	switch(rv)
	{
	case CKR_SLOT_ID_INVALID:
		printf("[CKR_SLOT_ID_INVALID]");
		break;
	case CKR_TOKEN_NOT_PRESENT:
		printf("[CKR_TOKEN_NOT_PRESENT]");
		break;
	case CKR_FUNCTION_FAILED:
		printf("[CKR_FUNCTION_FAILED]");
		break;
	case CKR_DEVICE_ERROR:
		printf("[CKR_DEVICE_ERROR]");
		break;
	case CKR_HOST_MEMORY:
		printf("[CKR_HOST_MEMORY]");
		break;
	default:
		printf("[Unknown ERROR: 0x%08X]", rv);
	}

	printf("\n");
	return false;
}

void CGetInfos::ShowSlotInfo(CK_SLOT_INFO_PTR slotinfo)
{
	printf("\nSlot information:\n");

	char DescBuffer[65] = {0};
	memcpy(DescBuffer,slotinfo->slotDescription,64);
	DescBuffer[64] = 0; 
	int i = 0;
	for(i = 63; i > 0; --i)
		if(' ' == DescBuffer[i])
			DescBuffer[i] = '\0';
		else
			break;

	printf("\tSlotDescription       = %s\n", DescBuffer);

	char manuBuffer[33] = {0};
	memcpy(manuBuffer,slotinfo->manufacturerID,32);
	manuBuffer[32] = 0; 
	for(i = 31; i > 0; --i)
		if(' ' == manuBuffer[i])
			manuBuffer[i] = '\0';
		else
			break;
	
	printf("\tManufacturerID        = %s\n", manuBuffer);
	printf("\tFlags                 = %08X\n", slotinfo->flags);
	printf("\tFirmwareVersion.major = %d\n", slotinfo->firmwareVersion.major);
	printf("\tFirmwareVersion.minor = %d\n", slotinfo->firmwareVersion.minor);
	printf("\tHardwareVersion.major = %d\n", slotinfo->hardwareVersion.major);
	printf("\tHardwareVersion.minor = %d\n\n", slotinfo->hardwareVersion.minor);

}

void CGetInfos::ShowTokenInfo(CK_TOKEN_INFO_PTR tokenInfo)
{
	printf("\nToken information:\n");
	char label[33] = {0};
	memcpy(label, tokenInfo->label, 32);
	printf("\tLabel                 = %s\n", label);

	char manuBuffer[33] = {0};
	memcpy(manuBuffer,tokenInfo->manufacturerID,32);
	manuBuffer[32] = 0; 
	printf("\tManufacturerID        = %s\n", manuBuffer);

	char modelBuffer[17] = {0};
	memcpy(modelBuffer,tokenInfo->model,16);
	manuBuffer[16] = 0; 
	printf("\tModel                 = %s\n", modelBuffer);

	char SNBuffer[17] = {0};
	memcpy(SNBuffer,tokenInfo->serialNumber,16);
	manuBuffer[16] = 0; 
	printf("\tSerialNumber          = %s\n", SNBuffer);

	printf("\tFlags                 = 0x%08X\n", tokenInfo->flags);
	printf("\tulMaxSessionCount     = %d\n", tokenInfo->ulMaxSessionCount);
	printf("\tulSessionCount        = %d\n", tokenInfo->ulSessionCount);
	printf("\tulMaxRwSessionCount   = %d\n",tokenInfo->ulMaxRwSessionCount);
	printf("\tulRwSessionCount      = %d\n",tokenInfo->ulRwSessionCount);
	printf("\tulMaxPinLen           = %d\n",tokenInfo->ulMaxPinLen);
	printf("\tulMinPinLen           = %d\n",tokenInfo->ulMinPinLen); 
	printf("\tulTotalPublicMemory   = %d\n", tokenInfo->ulTotalPublicMemory);
	printf("\tulTotalPrivateMemory  = %d\n", tokenInfo->ulTotalPrivateMemory);
	printf("\tulFreePublicMemory    = %d\n", tokenInfo->ulFreePublicMemory);
	printf("\tulFreePrivateMemory   = %d\n", tokenInfo->ulFreePrivateMemory);
	printf("\tHardwareVersion.major = %d\n", tokenInfo->hardwareVersion.major);
	printf("\tHardwareVersion.minor = %d\n", tokenInfo->hardwareVersion.minor);
	printf("\tFirmwareVersion.major = %d\n", tokenInfo->firmwareVersion.major);
	printf("\tFirmwareVersion.minor = %d\n", tokenInfo->firmwareVersion.minor);
	printf("\tToken utcTime         = %d\n", 0);

}

unsigned long CGetInfos::GetCryptokiInfos(CK_INFO_PTR pInfo)
{

	memset(pInfo, 0,  sizeof(pInfo));
	if(m_pToken->C_GetInfo(pInfo) != CKR_OK)
	{
		return CKR_FUNCTION_FAILED;
	}
	return CKR_OK;
}

void CGetInfos::ShowCryptokiInfos(CK_INFO_PTR pInfo)
{
	printf("\nCryptoki information:\n");
	printf("\tCryptokiVersion.major = %d\n", pInfo->cryptokiVersion.major);
	printf("\tCryptokiVersion.minor = %d\n", pInfo->cryptokiVersion.minor);
	printf("\tLibraryVersion.major  = %d\n", pInfo->libraryVersion.major);
	printf("\tLibraryVersion.minor  = %d\n", pInfo->libraryVersion.minor);
	printf("\tFlags                 = 0x%08X\n", pInfo->flags);

	char LibDescBuffer[33] = {0};
	memcpy(LibDescBuffer,pInfo->libraryDescription,32);
	LibDescBuffer[32] = 0; 
	
	printf("\tLibraryDescription    = %s\n", LibDescBuffer);

	char manuBuffer[33] = {0};
	memcpy(manuBuffer,pInfo->manufacturerID,32);
	manuBuffer[32] = 0;

	printf("\tManufacturerID        = %s\n\n", manuBuffer);
}

bool CGetInfos::LoadLib()
{
#if defined(WIN32)
	m_hDll = LoadLibrary(m_path);
#else
	m_hDll = dlopen(m_path, RTLD_NOW);
#endif
	
	if(m_hDll == NULL_PTR)
	{
		printf("Load Library Error!");
		return false;
	}

	typedef CK_RV (* C_GETFUNCTIONLISTPROC)(CK_FUNCTION_LIST_PTR_PTR);
	C_GETFUNCTIONLISTPROC pC_GetFunctionList = (C_GETFUNCTIONLISTPROC)GetProcAddress(m_hDll,"C_GetFunctionList");
	if(pC_GetFunctionList == NULL_PTR)
	{
		printf("Get function list failed.\n");
		return false;
	}
	if(CKR_OK!=pC_GetFunctionList(&m_pToken))
	{
		printf("Get function list failed.\n");
		return false;
	}
	if(CKR_OK != m_pToken->C_Initialize(NULL_PTR))
	{
		printf("Call C_Initialize failed.\n");
		return false;
	}
	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美综合在线| 中文乱码免费一区二区| 成人ar影院免费观看视频| 亚洲一本大道在线| 久久综合久久鬼色中文字| 欧美在线观看视频在线| 国产麻豆精品95视频| 午夜精品久久久久久久99樱桃| 国产日韩欧美一区二区三区综合| 欧美日韩一区精品| jiyouzz国产精品久久| 韩日欧美一区二区三区| 亚洲午夜一区二区三区| 国产精品超碰97尤物18| 久久久久久影视| 欧美精品99久久久**| 在线国产亚洲欧美| 成人黄色在线网站| 狠狠色综合播放一区二区| 性做久久久久久免费观看| 亚洲欧美激情插| 国产调教视频一区| 日韩欧美成人激情| 6080午夜不卡| 欧美日韩高清一区二区三区| 懂色av一区二区三区蜜臀| 精品中文字幕一区二区| 日韩电影免费在线看| 免费高清在线一区| 亚洲一区二区成人在线观看| 中文字幕一区二区三区四区 | 久久国产视频网| 五月婷婷综合激情| 亚洲成人动漫av| 亚洲二区在线观看| 亚洲一区二区三区中文字幕在线| 亚洲欧美色一区| 成人欧美一区二区三区在线播放| 中文字幕av一区二区三区| 久久免费美女视频| 国产午夜精品福利| 国产欧美精品国产国产专区 | 欧美午夜一区二区三区 | 久久先锋资源网| 欧美r级在线观看| 欧美高清dvd| 欧美性猛交xxxxxx富婆| 99久久久国产精品免费蜜臀| 成人夜色视频网站在线观看| 国产成人精品三级| 狠狠网亚洲精品| 激情久久五月天| 久久91精品国产91久久小草| 久色婷婷小香蕉久久| 午夜精品成人在线| 一区二区三区资源| 国产精品久久久久久久久动漫 | 欧美视频一区二区三区在线观看 | 国产精品青草久久| 欧美国产日韩精品免费观看| 久久久欧美精品sm网站| 久久久久国产精品麻豆ai换脸| 欧美成人精品福利| 精品处破学生在线二十三| 欧美成人在线直播| 久久欧美中文字幕| 国产欧美精品在线观看| 欧美精品一区二区三区蜜桃| 欧美精品一区二区三区久久久 | 色美美综合视频| 91在线国产观看| 不卡的电影网站| 欧美日本一区二区三区四区| 欧美一二三四在线| xvideos.蜜桃一区二区| 中文字幕欧美一| 亚洲免费毛片网站| 丝袜美腿一区二区三区| 久久精品免费观看| 国产aⅴ综合色| 色天天综合久久久久综合片| 欧美午夜不卡在线观看免费| 日韩三级.com| 欧美一级黄色片| 久久久亚洲精华液精华液精华液| 中文字幕亚洲欧美在线不卡| 亚洲一区视频在线| 蓝色福利精品导航| 成人国产精品免费网站| 精品视频在线看| 日韩欧美中文一区| 国产精品免费久久| 香蕉影视欧美成人| 国产精品996| 在线视频一区二区三区| 欧美色图激情小说| 欧美精品一区二区三区四区| 最近日韩中文字幕| 日韩av电影天堂| 成人妖精视频yjsp地址| 欧美日韩国产a| 国产喷白浆一区二区三区| 亚洲愉拍自拍另类高清精品| 久久国产精品无码网站| 日本韩国欧美国产| 欧美sm极限捆绑bd| 一区二区三区在线影院| 成人免费毛片aaaaa**| 欧美区一区二区三区| 国产女人18毛片水真多成人如厕 | 99热精品一区二区| 日韩视频一区二区三区| 亚洲欧美一区二区视频| 九九国产精品视频| 欧美日韩在线三级| 国产欧美日韩精品a在线观看| 日日夜夜精品视频免费| 国产白丝精品91爽爽久久| 欧美日韩一区视频| 中文字幕永久在线不卡| 国产资源在线一区| 欧美另类高清zo欧美| 综合色天天鬼久久鬼色| 国产精品18久久久久久久久久久久 | 国产人伦精品一区二区| 视频一区二区欧美| 91精品91久久久中77777| 欧美国产国产综合| 日韩不卡在线观看日韩不卡视频| 欧美在线观看你懂的| 国产精品蜜臀在线观看| 狠狠色综合播放一区二区| 欧美一区午夜视频在线观看 | 日本sm残虐另类| 欧美亚洲一区三区| 日韩美女精品在线| 成人一级片在线观看| 亚洲精品一区二区在线观看| 秋霞午夜鲁丝一区二区老狼| 91国产视频在线观看| 久久久久国产成人精品亚洲午夜 | 男人的j进女人的j一区| 欧美色图在线观看| 又紧又大又爽精品一区二区| eeuss鲁片一区二区三区| 日韩欧美色综合网站| 奇米888四色在线精品| 欧美日韩国产另类不卡| 亚洲国产一区视频| 91电影在线观看| 一区二区三区在线观看欧美| 99久久久免费精品国产一区二区| 久久午夜羞羞影院免费观看| 国产一区欧美二区| 日本一区二区综合亚洲| 国产成人一区在线| 欧美韩国日本综合| 色综合激情五月| 亚洲一区二区三区四区五区黄 | 欧美一级一区二区| 美女一区二区视频| 日韩免费成人网| 另类欧美日韩国产在线| 精品88久久久久88久久久| 国产一区亚洲一区| 中文一区二区完整视频在线观看| 国产精华液一区二区三区| 国产精品午夜久久| 精品制服美女丁香| 中文字幕中文在线不卡住| 91浏览器在线视频| 亚洲一二三区不卡| 日韩精品一区二区三区四区| 国产酒店精品激情| 久久久高清一区二区三区| 国产成人精品免费| 亚洲欧美日本在线| 在线成人小视频| 国产在线一区观看| 亚洲欧洲日韩一区二区三区| 在线免费观看日本欧美| 日本vs亚洲vs韩国一区三区二区| 精品黑人一区二区三区久久| 国产综合成人久久大片91| 国产精品女同一区二区三区| 色噜噜狠狠一区二区三区果冻| 日韩成人免费电影| 亚洲国产成人一区二区三区| 99精品国产视频| 首页欧美精品中文字幕| 国产亚洲人成网站| 欧美这里有精品| 国内精品伊人久久久久av影院 | 亚洲va欧美va天堂v国产综合| 欧美日韩一卡二卡| 国产精品99久久久久久似苏梦涵| 亚洲狠狠丁香婷婷综合久久久| 日韩一区二区三区高清免费看看| 成人性色生活片| 五月天婷婷综合|