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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? enumobjdlg.cpp

?? PKCS#11 讀取USB KEY證書
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	if(numObj==0)
	{
		StartOP();
		ShowMsg(NEWLINE"No certificate object."NEWLINE);
	}
	else
	{
		StartOP();
		CHAR strNumObj[4];
		wsprintf(strNumObj,"%d",numObj);
		ShowMsg(NEWLINE);
		ShowMsg(strNumObj);
		ShowMsg(" certificate object(s) was found."NEWLINE);
	}
}

void CEnumObjDlg::OnBtnLogin() 
{
	// TODO: Add your control notification handler code here
	StartOP();
	CK_RV rv;
	CK_TOKEN_INFO tokenInfo = {0};
	rv = C_GetTokenInfo(m_pSlotList[0], &tokenInfo);
	if (CKR_OK != rv)
	{
		ShowMsg(NEWLINE"Can not get token info!"NEWLINE);
		return;
	}

	DlgUserPIN dlg;
	dlg.DoModal();
	if("" == g_strUserPIN)
	{
		ShowMsg(NEWLINE"To enum all objects, you must input User PIN!"NEWLINE);
		return;
	}
	
	CK_ULONG ulPIN = g_strUserPIN.GetLength();
	CK_BYTE_PTR pPIN = (CK_BYTE_PTR)g_strUserPIN.GetBuffer(ulPIN);
	
	::SetCursor(::LoadCursor(NULL, IDC_WAIT));
	rv = C_Login(m_hSession, CKU_USER, pPIN, ulPIN);

	if(CKR_OK != rv)
	{
		ShowErr(NEWLINE"Can't login to token, ErrorCode: 0x%08X."NEWLINE, rv);
		if(rv==CKR_USER_ALREADY_LOGGED_IN)
			ShowErr(NEWLINE"You have already logged in!",NULL);
		return;
	}
	else
		ShowMsg(NEWLINE"Login to Token Successfully!"NEWLINE);
	m_btnEnum.EnableWindow(TRUE);
	m_btnData.EnableWindow(TRUE);
	m_btnPublic.EnableWindow(TRUE);
	m_btnPrivate.EnableWindow(TRUE);
	m_btnSecret.EnableWindow(TRUE);
}

void CEnumObjDlg::OnBtnData() 
{
	// TODO: Add your control notification handler code here
	CK_OBJECT_CLASS dataClass = CKO_DATA;
	BOOL IsToken=true;
	CK_ATTRIBUTE pTempl[] = 
	{
		{CKA_CLASS, &dataClass, sizeof(CKO_DATA)},
		{CKA_TOKEN, &IsToken, sizeof(true)}
	};
	
	C_FindObjectsInit(m_hSession, pTempl, 2);
	
	CK_OBJECT_HANDLE hCKObj;
	CK_ULONG ulRetCount = 0;
	CK_RV ckrv = 0;

	int numObj=0;
	do
	{
		ckrv = C_FindObjects(m_hSession, &hCKObj, 1, &ulRetCount);
		if(CKR_OK != ckrv)
		{
			break;	
		}
		if(1 != ulRetCount)
			break;
		
		CK_ATTRIBUTE pAttrTemp[] = 
		{
			{CKA_CLASS, NULL, 0},
			{CKA_LABEL, NULL, 0},
			{CKA_APPLICATION, NULL, 0},
			{CKA_VALUE, NULL,0},
		};

		ckrv = C_GetAttributeValue(m_hSession, hCKObj, pAttrTemp, 4);
		if(ckrv != CKR_OK)
		{
			break;
		}
		
		pAttrTemp[0].pValue = new char[pAttrTemp[0].ulValueLen];
		pAttrTemp[1].pValue = new char[pAttrTemp[1].ulValueLen + 1];
		pAttrTemp[2].pValue = new char[pAttrTemp[2].ulValueLen + 1];
		pAttrTemp[3].pValue = new char[pAttrTemp[3].ulValueLen];
		ZeroMemory(pAttrTemp[0].pValue, pAttrTemp[0].ulValueLen);
		ZeroMemory(pAttrTemp[1].pValue, pAttrTemp[1].ulValueLen + 1);
		ZeroMemory(pAttrTemp[2].pValue, pAttrTemp[2].ulValueLen + 1);
		ZeroMemory(pAttrTemp[3].pValue, pAttrTemp[3].ulValueLen );
		

		ckrv = C_GetAttributeValue(m_hSession, hCKObj, pAttrTemp, 4);
		if(ckrv != CKR_OK)
		{
			delete[] pAttrTemp[0].pValue;
			delete[] pAttrTemp[1].pValue;
			delete[] pAttrTemp[2].pValue;
			delete[] pAttrTemp[3].pValue;
			break;
		}
		numObj++;		
		int nClassTemp = *((int*)pAttrTemp[0].pValue);
		CString strvale = (char*)pAttrTemp[1].pValue;
		CString strApp= (char*)pAttrTemp[2].pValue;

		ShowMsg(NEWLINE);
		StartOP();
		CString strShow;
		parse_object(pAttrTemp, 10, strShow);
		ShowMsg(strShow);

		delete[] pAttrTemp[0].pValue;
		delete[] pAttrTemp[1].pValue;
		delete[] pAttrTemp[2].pValue;
		delete[] pAttrTemp[3].pValue;		
	}while(true);

	if(numObj==0)
	{
		StartOP();
		ShowMsg(NEWLINE"No data object."NEWLINE);
	}
	else
	{
		StartOP();
		CHAR strNumObj[4];
		wsprintf(strNumObj,"%d",numObj);
		ShowMsg(NEWLINE);
		ShowMsg(strNumObj);
		ShowMsg(" data object(s) was found."NEWLINE);
	}


}

void CEnumObjDlg::OnBtnPublic() 
{
	CK_OBJECT_CLASS dataClass = CKO_PUBLIC_KEY;
	BOOL IsToken=true;
	CK_ATTRIBUTE pTempl[] = 
	{
		{CKA_CLASS, &dataClass, sizeof(CKO_PUBLIC_KEY)},
		{CKA_TOKEN, &IsToken, sizeof(true)}
	};

	
	C_FindObjectsInit(m_hSession, pTempl, 2);
	
	CK_OBJECT_HANDLE hCKObj;
	CK_ULONG ulRetCount = 0;
	CK_RV ckrv = 0;
	int numObj=0;

    CK_MECHANISM smech;
	smech.mechanism = CKM_RSA_PKCS;
	smech.pParameter = NULL_PTR;
	smech.ulParameterLen = 0;
     

	//CK_ULONG  slen = 1024;
	char *_message = "Simple message for signing & verifying.";
    CK_ULONG messagelen = strlen(_message);
    CK_RV rv = CKR_OK;

	do
	{
		ckrv = C_FindObjects(m_hSession, &hCKObj, 1, &ulRetCount);
		if(CKR_OK != ckrv)
		{
			break;	
		}
		if(1 != ulRetCount)
			break;
		
        if (hCKObj!=0)
		{
		  C_FindObjectsFinal(m_hSession);
		  rv = C_VerifyInit(m_hSession, &smech, hCKObj);

  

	      if (rv != CKR_OK) {

		    fprintf(stderr, "C_VerifyInit: rv = 0x%.8X\n", rv);
            ShowMsg("C_VerifyInit error!\n ");
		    break;

	      }



	      rv = C_Verify(m_hSession, (CK_BYTE_PTR)_message, messagelen,

	      (CK_BYTE_PTR)sign, slen);


	    if (rv != CKR_OK) {

		fprintf(stderr, "C_Verify: rv = 0x%.8X\n", rv);
        ShowMsg("C_Verify error!\n ");
		 

		break;

	}
	fprintf(stdout, "Message was successfully verified with public key!\n");
    ShowMsg("Message was successfully verified with public key!\n ");

		
		break;
		}

	}while(true);

	
		


}





void CEnumObjDlg::OnBtnPrivate() 
{
	// TODO: Add your control notification handler code here
	
	CK_OBJECT_CLASS dataClass = CKO_PRIVATE_KEY;
	BOOL IsToken=true;
	CK_ATTRIBUTE pTempl[] = 
	{
		{CKA_CLASS, &dataClass, sizeof(CKO_PRIVATE_KEY)},
		{CKA_TOKEN, &IsToken, sizeof(true)}
	};
	
	
	C_FindObjectsInit(m_hSession, pTempl, 2);
	//私鑰

    
	CK_OBJECT_HANDLE hCKObj;
	CK_ULONG ulRetCount = 0;
	CK_RV ckrv = 0;
	int numObj=0;
/****************************數(shù)字簽名*******************************/
	//設(shè)置簽名
    FILE *file;
	FILE *sigfile;
	
    pbBuffer= new BYTE[1002];
	memset(pbBuffer,0,1002);
	file=fopen("c:\\testin.txt","rb");
	if ( file == NULL ){ 
		return; 
	}
	frlens=fread(pbBuffer,sizeof(BYTE),1000,file);
	fclose(file);




    CK_MECHANISM smech;
	smech.mechanism = CKM_RSA_PKCS;
	smech.pParameter = NULL_PTR;
	smech.ulParameterLen = 0;


	
	 
    
	do
	{
		ckrv = C_FindObjects(m_hSession, &hCKObj, 1, &ulRetCount);
		if(CKR_OK != ckrv)
		{
			break;	
		}
		if(1 != ulRetCount)
			break;
		
		if (hCKObj != 0)
		{
		  
			CK_RV rv = CKR_OK;
         C_FindObjectsFinal(m_hSession);
         rv =  C_SignInit(m_hSession, &smech, hCKObj);
		 if (rv != CKR_OK) {
          
		   fprintf(stderr, "C_SignInit: rv = 0x%.8X\n", rv);
		  ShowMsg("C_SignInit error!\n");
		 return;
		 }

       	rv =  C_Sign(m_hSession, (CK_BYTE_PTR)pbBuffer, frlens,

	     (CK_BYTE_PTR)sign, &slen);

     	if (rv != CKR_OK) 
		{
			fprintf(stderr, "C_Sign: ckrv = 0x%.8X\n", ckrv);
			ShowMsg("C_Sign error!\n");
		return;
		}
			// 簽名信息寫入文件
	   sigfile=fopen("c:\\sigfile.txt","wb");
	   if ( sigfile == NULL ){ 
		 return; 
	    }
	   fwrite(&slen, sizeof(DWORD), 1, sigfile);
	   fwrite(sign, 1, slen, sigfile);
	   fclose(sigfile);
	   fprintf(stdout, "Message was successfully signed with private key!\n");
		ShowMsg("Message was successfully signed with private key! \n");
        break;
		}

	}while(true);
	/****************************數(shù)字簽名*******************************/

}



void CEnumObjDlg::OnBtnSecret() 
{
	// TODO: Add your control notification handler code here
	CK_OBJECT_CLASS dataClass = CKO_SECRET_KEY;
	BOOL IsToken=true;
	CK_ATTRIBUTE pTempl[] = 
	{
		{CKA_CLASS, &dataClass, sizeof(CKO_PUBLIC_KEY)},
		{CKA_TOKEN, &IsToken, sizeof(true)}
	};

	
	C_FindObjectsInit(m_hSession, pTempl, 2);
	
	CK_OBJECT_HANDLE hCKObj;
	CK_ULONG ulRetCount = 0;
	CK_RV ckrv = 0;

	int numObj=0;

	do
	{
		ckrv = C_FindObjects(m_hSession, &hCKObj, 1, &ulRetCount);
		if(CKR_OK != ckrv)
		{
			break;
		}
		if(1 != ulRetCount)
			break;
		
		CK_ATTRIBUTE pAttrTemp[] = 
		{
			{CKA_CLASS, NULL, 0},
			{CKA_KEY_TYPE,NULL,0},
			{CKA_LABEL, NULL, 0},
			{CKA_DERIVE,NULL,0},
			{CKA_VALUE,NULL,0},
		};
		
		ckrv = C_GetAttributeValue(m_hSession, hCKObj, pAttrTemp, 5);
		if(ckrv != CKR_OK)
		{
			break;
		}
		
		pAttrTemp[0].pValue = new char[pAttrTemp[0].ulValueLen];
		pAttrTemp[1].pValue = new char[pAttrTemp[1].ulValueLen];
		pAttrTemp[2].pValue = new char[pAttrTemp[2].ulValueLen+1];
		pAttrTemp[3].pValue = new char[pAttrTemp[3].ulValueLen];
		pAttrTemp[4].pValue = new char[pAttrTemp[4].ulValueLen];

		
		ZeroMemory(pAttrTemp[0].pValue, pAttrTemp[0].ulValueLen);
		ZeroMemory(pAttrTemp[1].pValue, pAttrTemp[1].ulValueLen);
		ZeroMemory(pAttrTemp[2].pValue, pAttrTemp[2].ulValueLen+1);	
		ZeroMemory(pAttrTemp[3].pValue, pAttrTemp[3].ulValueLen);
		ZeroMemory(pAttrTemp[4].pValue, pAttrTemp[4].ulValueLen);

		
		ckrv = C_GetAttributeValue(m_hSession, hCKObj, pAttrTemp, 5);
		if(ckrv != CKR_OK)
		{
			delete[] pAttrTemp[0].pValue;
			delete[] pAttrTemp[1].pValue;
			delete[] pAttrTemp[2].pValue;
			delete[] pAttrTemp[3].pValue;
			delete[] pAttrTemp[4].pValue;
			break;
		}

		numObj++;

		ShowMsg(NEWLINE);
		StartOP();
		CString strShow;
		parse_object(pAttrTemp, 5, strShow);
		ShowMsg(strShow);

		delete[] pAttrTemp[0].pValue;
		delete[] pAttrTemp[1].pValue;
		delete[] pAttrTemp[2].pValue;
		delete[] pAttrTemp[3].pValue;
		delete[] pAttrTemp[4].pValue;

	}while(true);
	

	if(numObj==0)
	{
		StartOP();
		ShowMsg(NEWLINE"No secret key."NEWLINE);
	}
	else
	{
		StartOP();
		CHAR strNumObj[4];
		wsprintf(strNumObj,"%d",numObj);
		ShowMsg(NEWLINE);
		ShowMsg(strNumObj);
		ShowMsg(" secret key object(s) was found."NEWLINE);
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国v精品久久久网| 岛国一区二区三区| 国产日韩欧美一区二区三区乱码| www.一区二区| 麻豆国产欧美一区二区三区| 国产精品成人免费| 欧美成人伊人久久综合网| 99国产精品99久久久久久| 免费观看91视频大全| 亚洲桃色在线一区| 国产亚洲欧洲997久久综合| 欧美日韩大陆一区二区| 国产成人在线色| 青青青伊人色综合久久| 亚洲精品高清在线| 国产视频一区二区在线| 欧美一区二区三区视频在线观看| 91麻豆精品秘密| 东方aⅴ免费观看久久av| 久久机这里只有精品| 亚洲成a人v欧美综合天堂下载| 国产精品三级电影| 久久综合99re88久久爱| 日韩欧美成人一区二区| 欧美精品久久久久久久多人混战 | 亚洲va在线va天堂| 中文字幕视频一区| 国产欧美日韩综合精品一区二区| 欧美第一区第二区| 欧美精品欧美精品系列| 精品视频色一区| 在线免费观看视频一区| 色综合久久66| 色综合激情五月| 色视频欧美一区二区三区| 91色视频在线| 91精彩视频在线| 在线观看国产精品网站| 色婷婷综合久久久中文一区二区| 99免费精品视频| 99re免费视频精品全部| 91麻豆福利精品推荐| 91在线一区二区| 色婷婷激情综合| 在线观看www91| 欧美日免费三级在线| 欧美日韩中文一区| 欧美肥妇free| 日韩欧美国产综合| 久久综合色综合88| 国产视频在线观看一区二区三区 | av不卡在线观看| av网站一区二区三区| 91蜜桃网址入口| 欧美性生交片4| 7777精品久久久大香线蕉| 欧美一区二区三区四区五区| 精品福利av导航| 国产亚洲精品免费| 亚洲同性同志一二三专区| 亚洲美女在线国产| 亚洲国产综合视频在线观看| 午夜精品aaa| 精品一区二区在线观看| 国产一区二区美女| 99久久综合精品| 欧美性猛交xxxx黑人交| 欧美成人video| 欧美韩日一区二区三区四区| 亚洲激情综合网| 免费高清不卡av| 播五月开心婷婷综合| 欧美性大战xxxxx久久久| 日韩精品一区二区三区视频在线观看| 精品99久久久久久| 亚洲人成网站精品片在线观看| 亚洲午夜一区二区| 韩国欧美国产一区| 91毛片在线观看| 欧美mv和日韩mv的网站| 国产精品夫妻自拍| 水野朝阳av一区二区三区| 国产精品亚洲第一| 在线免费av一区| 久久奇米777| 一区二区高清免费观看影视大全| 日韩国产欧美在线播放| 高清成人免费视频| 51精品国自产在线| 国产精品久久久久久久浪潮网站| 丝袜亚洲精品中文字幕一区| 丰满少妇久久久久久久 | 国产精品女人毛片| 亚洲chinese男男1069| 国产麻豆视频精品| 欧美在线免费观看亚洲| 国产亚洲欧美日韩在线一区| 亚洲乱码国产乱码精品精可以看| 免费成人在线视频观看| 色婷婷综合中文久久一本| 久久久久国产精品免费免费搜索| www欧美成人18+| 国产精品的网站| 另类的小说在线视频另类成人小视频在线 | 中文字幕不卡在线播放| 日韩中文字幕亚洲一区二区va在线 | 午夜精品久久久久久久99樱桃| 国产成人激情av| 欧美一区二区播放| 亚洲激情六月丁香| 大尺度一区二区| 欧美一区二区三区视频| 亚洲免费在线播放| 成人18精品视频| 欧美mv日韩mv| 美女在线视频一区| 欧洲日韩一区二区三区| 国产精品久久久久久久久晋中 | 亚洲免费观看视频| 成人一区二区三区在线观看 | 91精品国产综合久久久久久久 | 视频一区在线播放| 欧美色图免费看| 亚洲欧美日韩成人高清在线一区| 国产成人精品在线看| 精品三级在线观看| 美女mm1313爽爽久久久蜜臀| 欧美日韩精品欧美日韩精品| 成人欧美一区二区三区1314| 成人丝袜高跟foot| 国产欧美一区视频| 国产精品一区三区| 精品国产免费人成电影在线观看四季 | 日本欧美大码aⅴ在线播放| 欧美午夜在线观看| 亚洲综合在线免费观看| 日本乱人伦aⅴ精品| 中文字幕精品综合| 成人免费毛片高清视频| 国产精品网站在线观看| 成人深夜在线观看| 亚洲欧美日韩成人高清在线一区| 91香蕉视频mp4| 亚洲狠狠丁香婷婷综合久久久| 99精品桃花视频在线观看| 亚洲色欲色欲www| 91视频免费播放| 亚洲午夜免费电影| 538prom精品视频线放| 蜜臀91精品一区二区三区| 欧美大片拔萝卜| 国产精选一区二区三区| 日本一区二区三区在线不卡| 成人午夜激情片| 亚洲精品中文在线影院| 欧美日韩一级视频| 蜜臀av性久久久久av蜜臀妖精 | 亚洲图片欧美一区| 91麻豆精品国产91久久久久久 | 亚洲国产精品ⅴa在线观看| 99精品视频在线播放观看| 亚洲一区二区三区中文字幕| 欧美日韩一区在线观看| 日本91福利区| 久久蜜桃香蕉精品一区二区三区| 国产99久久久国产精品潘金 | 91在线视频网址| 亚洲国产欧美在线人成| 欧美一区二区视频网站| 国产精品99久久久久久似苏梦涵 | 蜜桃在线一区二区三区| 久久精品亚洲麻豆av一区二区 | 欧美亚洲丝袜传媒另类| 另类中文字幕网| 中文字幕五月欧美| 日韩三级视频在线看| 成人在线一区二区三区| 亚洲一区二区三区影院| 久久综合九色综合欧美98| 91小宝寻花一区二区三区| 全部av―极品视觉盛宴亚洲| 国产精品国模大尺度视频| 欧美区在线观看| 成人亚洲一区二区一| 日韩成人av影视| 亚洲日本在线a| 日韩免费高清电影| 色呦呦网站一区| 激情文学综合丁香| 亚洲中国最大av网站| 国产亚洲视频系列| 91精品一区二区三区久久久久久| 成人av中文字幕| 蜜臀av性久久久久蜜臀av麻豆| 综合久久久久久久| 久久人人爽爽爽人久久久| 9191成人精品久久| 91小视频在线| 国产suv精品一区二区6| 麻豆精品一二三|