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

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

?? certcreate.cpp

?? 用于處理證書請求,生成證書的CA服務器源碼,
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
          &SigAlg,                         // Signature algorithm
          NULL,                            // Not used
          NULL,                            // pbSignedEncodedCertReq
          &cbEncodedCertReqSize))
	{
		nErr = -3310;
		break;
	}

	if (!(pbSignedEncodedCertReq = (BYTE*)malloc(cbEncodedCertReqSize)))
	{
		nErr = -3311;
		break;
	}

	if (!CryptSignAndEncodeCertificate(
          hCryptProv,                     // Crypto provider
          AT_SIGNATURE,                 // Key spec
          MYCODING_TYPE,               // Encoding type
          X509_CERT_REQUEST_TO_BE_SIGNED, // Struct type
          &CertReqInfo,                   // Struct info        
          &SigAlg,                        // Signature algorithm
          NULL,                           // Not used
          pbSignedEncodedCertReq,         // Pointer
          &cbEncodedCertReqSize)) 
	{
		nErr = -3312;
		break;
	}

	XFBase64encode (pbSignedEncodedCertReq, cbEncodedCertReqSize,(unsigned char *)pkcs10str,FALSE);
	break;
	} //end while


	if(pbNameEncoded) free (pbNameEncoded);
	if(pbPublicKeyInfo) free (pbPublicKeyInfo);
	if(pbSignedEncodedCertReq) free (pbSignedEncodedCertReq);
	if(hCryptProv) CryptReleaseContext (hCryptProv,0);

	*pkcs10len = strlen(pkcs10str);

	return 0;
}




int InstallCert (BYTE* pPKS7)
{
	int	 nErr=0;
	int i;


	HCERTSTORE hStoreHandle;     // PKCS#7的證書庫
	HCERTSTORE hStoreHandle2;    // 系統的證書庫

	PCCERT_CONTEXT certcontext=NULL;   // PKCS#7證書庫里面的證書context
	PCCERT_CONTEXT certcontext2=NULL;  // 系統的證書庫里面的證書context
	PCCERT_CONTEXT exist_certcontext=NULL;  // 系統的證書庫里面的已存在證書context

	WCHAR szwSignStore[260];
	BYTE certencode[2000];//(BYTE*)PKS7.String();
	DWORD certlen = 0;

	memset(certencode,0,sizeof(certencode));
	XFBase64decode (pPKS7, certencode,certlen);

	CRYPT_DATA_BLOB datablob;
	ZeroMemory(&datablob, sizeof(datablob)); 
	datablob.pbData = certencode;
	datablob.cbData = certlen;

	while(1)
	{

	if (!( hStoreHandle = CertOpenStore(
		   CERT_STORE_PROV_PKCS7,
		   MYCODING_TYPE,
		   NULL,
		   CERT_SYSTEM_STORE_CURRENT_USER,
		   &datablob)))
	{
		nErr = -3340;
		break;
	}

	certcontext = CertEnumCertificatesInStore (hStoreHandle, NULL);
	if (!certcontext) {
		nErr = -3341;
		break;
	}


	// Convert Store string to unicode
    i = MultiByteToWideChar(0, 0, szSignStore, -1, szwSignStore, 20);
    if (i == 0)
    {
          nErr = -3342;
          break;
    }


	//open SIGNCERTNAME store
	if (!( hStoreHandle2 = CertOpenStore(
		CERT_STORE_PROV_SYSTEM,
		MYCODING_TYPE,
		NULL,
		CERT_SYSTEM_STORE_CURRENT_USER,
		szwSignStore)))
	{
		nErr = -3343;
		break;
	}

	//find cert from SIGNCERTNAME store
	do
	{
		exist_certcontext = CertFindCertificateInStore(
							hStoreHandle2,
							MYCODING_TYPE,
							0,
							CERT_FIND_ANY,
							NULL,
							NULL
							);

		if(exist_certcontext)
		{
			if(!CertDeleteCertificateFromStore(exist_certcontext))
			{
				nErr = -3353;
				break;
			}
		}
	} while(exist_certcontext != NULL);
	


	if (!CertAddCertificateContextToStore(
			hStoreHandle2,
			certcontext,
			CERT_STORE_ADD_USE_EXISTING,
			&certcontext2)) 
	{
		return -3343;
		break;
	}

	CRYPT_KEY_PROV_INFO key_info;
	ZeroMemory(&key_info, sizeof(key_info));

	//key_info.pwszContainerName = W_CONTAINER_NAME_M;
	
	WCHAR szwProvider[260];
	WCHAR szwSignContainer[260];

//	int i = (int)mbstowcs(szwSignContainer, szSignContainer, (size_t)strlen(szSignContainer));
    int i = MultiByteToWideChar(0, 0, szSignContainer, -1, szwSignContainer, 260);
	if (i == 0)
    {	
        nErr = -3345;
		break;
    }

    i = MultiByteToWideChar(0, 0, szProvider, -1, szwProvider, 260);
    if (i==0)
    {
        nErr = -3346;
		break;
    }


	key_info.pwszContainerName = szwSignContainer;
	key_info.pwszProvName = szwProvider;
	key_info.dwProvType = PROV_RSA_FULL;
	key_info.dwFlags  = CERT_SET_KEY_CONTEXT_PROP_ID;
	key_info.dwKeySpec = AT_SIGNATURE;


	if (!CertSetCertificateContextProperty (certcontext2, 
											CERT_KEY_PROV_INFO_PROP_ID, 
											0, 
											(LPVOID)&key_info))
	{
		nErr = -3347;
		break;
	}

	break;
	} //end while

	if(hStoreHandle) CertCloseStore (hStoreHandle, 0);
	if(hStoreHandle2) CertCloseStore (hStoreHandle2, 0);
	if(certcontext) CertFreeCertificateContext(certcontext);
	if(certcontext2) CertFreeCertificateContext(certcontext2);
	if(exist_certcontext) CertFreeCertificateContext(exist_certcontext);

	return 0;
}


int GenSignCert()
{

	int nRtn=0;
	char pkcs10str[2000];
	DWORD pkcs10len=2000;
	BYTE	pbCert[3000];
	DWORD   cbSize=3000;
	BYTE	pbData[3000];
	DWORD	cbData=3000;


	memset(pkcs10str,0,sizeof(pkcs10str));
	nRtn = CreatePKCS10(SIGNCERTNAME,pkcs10str,&pkcs10len);
	if(nRtn != 0 )
		return nRtn;

	memset(pbCert,0,sizeof(pbCert));
	nRtn =  SignP10(SIGNCERTSUBJECT,	//in 主題名
			 pkcs10str,		//in  BASE64編碼的pkcs10字符串
			 5, //in 系列號
			 120,		//in 有效期(現在開始的月數)
			 pbCert,		//out 證書
			 &cbSize);	//in-out pbCert緩沖區長度/證書長度
	if(nRtn != 0 )
		return nRtn;


	memset(pbData,0,sizeof(pbData));
	nRtn = GenP7(pbCert,	//in 用戶證書
		   cbSize,	//in 用戶證書長度
		   pbData,	//out base64編碼后的p7內容
		   &cbData);	//in/out pbData緩沖區長度/返回長度
	if(nRtn != 0 )
		return nRtn;


	//安裝pkcs7證書
	nRtn = InstallCert (pbData); //base64編碼后的pkcs7證書,安裝在CERT_STORE_PROV_SYSTEM,,CERT_SYSTEM_STORE_CURRENT_USER
								//SIGNCERTNAME為STORE名
	if(nRtn != 0 )
		return nRtn;

	return 0;
}


int RestoreKey(BYTE* pbKEYBIN,int nKeyLen,char *pKeyPwd,int nKeyFlag)
{


	DWORD dwError=0; 
	  BOOL bResult;
   HCRYPTPROV hCryptProv = 0;
   HCRYPTKEY hPubKey = 0;
   HCRYPTKEY hSessionKey = 0;
   HCRYPTHASH hHash = 0;

	while(1)
	{
	if(!CryptAcquireContext(&hCryptProv,                // 返回CSP句柄
								szContainer,                    // 密碼容器名
								szProvider,                      // NULL時使用默認CSP名(微軟RSA Base Provider)
								PROV_RSA_FULL,             // CSP類型
								0))                        // Flag values
		{ 
			if(!CryptAcquireContext(&hCryptProv, 
								  szContainer, 
								  szProvider, 
								  PROV_RSA_FULL, 
								  CRYPT_NEWKEYSET)) //創建以szContainer為名的密鑰容器
			{
				dwError = GetLastError();
				break;
			}
		}


	// Create hash
          bResult = CryptCreateHash(hCryptProv, CALG_SHA1, 0, 0, &hHash);
          if (!bResult)
          {
              dwError = GetLastError();
              break;
          }

          // Hash password
          bResult = CryptHashData(hHash, (LPBYTE)pKeyPwd, (DWORD)strlen(pKeyPwd), 0);
          if (!bResult)
          {
              dwError = GetLastError();
              break;
          }

          // Derive Session Key from hash
          bResult = CryptDeriveKey(hCryptProv, CALG_RC4, hHash, CRYPT_EXPORTABLE, &hSessionKey);
          if (!bResult)
          {
              dwError = GetLastError();
              break;
          }

		 bResult = CryptImportKey(hCryptProv,pbKEYBIN,nKeyLen,hSessionKey,CRYPT_EXPORTABLE,&hPubKey);
			if (!bResult)
          {
              dwError = GetLastError();
              break;
          }

		break;
	}//end while


      if (hPubKey) CryptDestroyKey(hPubKey);
      if (hSessionKey) CryptDestroyKey(hSessionKey);
      if (hHash) CryptDestroyHash(hHash);
      if (hCryptProv) CryptReleaseContext(hCryptProv, 0);

	return dwError;
}


int RestoreCert(BYTE* pbCERTBIN,int nCertLen)
{

   int nRtn = 0;
   DWORD dwError=0; 
   BOOL bResult = FALSE;
   DWORD dwSubjectFlags =CERT_SYSTEM_STORE_LOCAL_MACHINE;

	WCHAR szwStore[260];
	WCHAR szwContainer[260];
	WCHAR szwProvider[260];

   CRYPT_KEY_PROV_INFO CryptKeyProvInfo;
   HCERTSTORE hStore = 0;
   PCCERT_CONTEXT pCertContext = NULL;
   PCCERT_CONTEXT pTmpCertContext = NULL;
 
	  while(1)
	  {
      // Convert Store string to unicode
      nRtn = MultiByteToWideChar(0, 0, szIssuerStore, -1, szwStore, 260);
      if (nRtn == 0)
      {
          dwError = GetLastError();
          break;
      }

	  // Convert Container string to unicode
      nRtn = MultiByteToWideChar(0, 0, szContainer, -1, szwContainer, 260);
      if (nRtn == 0)
      {
          dwError = GetLastError();
          break;
      }

	  // Convert Provider string to unicode
      nRtn = MultiByteToWideChar(0, 0, szProvider, -1, szwProvider, 260);
      if (nRtn == 0)
      {
          dwError = GetLastError();
          break;
      }



	  // Delete Certificate store
	  hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,
                             MYCODING_TYPE,
                             CERT_STORE_DELETE_FLAG, dwSubjectFlags, (LPVOID)szwStore);
	  
      // Open Certificate store
      hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM,
                             MYCODING_TYPE,
                             0, dwSubjectFlags, (LPVOID)szwStore);
      if (!hStore)
      {
          dwError = GetLastError();
          break;
      }


	  //find and delete cert from SIGNCERTNAME store
		do
		{
			pTmpCertContext = CertFindCertificateInStore(
								hStore,
								MYCODING_TYPE,
								0,
								CERT_FIND_ANY,
								NULL,
								NULL
								);

			if(pTmpCertContext)
			{
				if(!CertDeleteCertificateFromStore(pTmpCertContext))
				{
					dwError = -3409;
					break;
				}
			}
		} while(pTmpCertContext != NULL);

      // Place Certificate in store
      bResult = CertAddEncodedCertificateToStore(hStore, MYCODING_TYPE,
                                pbCERTBIN, nCertLen,
                                CERT_STORE_ADD_REPLACE_EXISTING,
                                &pCertContext);
      if (!bResult)
      {
          dwError = GetLastError();
          break;
      }


	  // Convert container to unicode
      nRtn = MultiByteToWideChar(0, 0, szContainer, -1, szwContainer, 160);
      if (nRtn == 0)
      {
          dwError = GetLastError();
          break;
      }

      // Initialize CRYPT_KEY_PROV_INFO structure
      ZeroMemory(&CryptKeyProvInfo, sizeof(CryptKeyProvInfo));
      CryptKeyProvInfo.pwszContainerName = szwContainer;
      CryptKeyProvInfo.pwszProvName = szwProvider;
      CryptKeyProvInfo.dwProvType = PROV_RSA_FULL;
      CryptKeyProvInfo.dwKeySpec = AT_SIGNATURE;

      // Set Certificate's Key Provider info
      bResult = CertSetCertificateContextProperty(pCertContext,
                                    CERT_KEY_PROV_INFO_PROP_ID,
                                    0, (LPVOID)&CryptKeyProvInfo);
      if (!bResult)
      {
          dwError = GetLastError();
          break;
      }
	  break;
	  }//end while

      if (pCertContext) CertFreeCertificateContext(pCertContext);
	  if (pTmpCertContext) CertFreeCertificateContext(pTmpCertContext);
      if (hStore) CertCloseStore(hStore, 0);

	return dwError;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区| 欧美日韩国产另类一区| 97久久超碰国产精品电影| 91久久精品日日躁夜夜躁欧美| 欧美日韩免费视频| 精品国产一区二区在线观看| 国产精品无遮挡| 亚洲3atv精品一区二区三区| 久久99国产精品免费| 99re热这里只有精品视频| 欧美日韩国产一区| 国产午夜精品理论片a级大结局| 亚洲黄色性网站| 美女视频第一区二区三区免费观看网站| 国产一区二区三区四区五区入口| 91一区在线观看| 日韩欧美二区三区| 亚洲蜜桃精久久久久久久| 久久综合综合久久综合| 色综合天天视频在线观看| 欧美一区二区三区影视| 国产精品国产三级国产aⅴ原创| 香蕉影视欧美成人| 粉嫩aⅴ一区二区三区四区五区| 欧美三级韩国三级日本一级| 国产亚洲一本大道中文在线| 午夜精品久久久久久久99水蜜桃 | 丰满亚洲少妇av| 欧美日韩一二区| 国产精品欧美精品| 奇米影视7777精品一区二区| 色综合久久中文字幕| 国产人妖乱国产精品人妖| 欧美a级理论片| 91福利区一区二区三区| 国产日韩欧美不卡在线| 蜜臀av一区二区在线免费观看 | 亚洲欧洲综合另类| 国内精品伊人久久久久av影院| 欧美视频中文一区二区三区在线观看| 久久久久久久久久久久久久久99| 午夜伊人狠狠久久| 色综合天天综合网天天看片| 精品国产乱码久久久久久蜜臀| 亚洲成人免费影院| 99久久久免费精品国产一区二区| 精品福利一区二区三区免费视频| 亚洲成人综合在线| 色悠悠久久综合| 国产精品九色蝌蚪自拍| 黄色成人免费在线| 欧美mv日韩mv亚洲| 日韩av成人高清| 欧美日本在线观看| 亚洲一区二区三区影院| 一本一本大道香蕉久在线精品| 久久精品一区二区三区不卡牛牛| 琪琪久久久久日韩精品| 欧美群妇大交群中文字幕| 一区二区三区在线观看视频| jlzzjlzz亚洲日本少妇| 国产欧美日韩亚州综合| 激情六月婷婷久久| 久久人人超碰精品| 久久97超碰色| 欧美xxxxxxxxx| 九九九久久久精品| 欧美电影免费提供在线观看| 麻豆极品一区二区三区| 日韩一区二区三区观看| 日本少妇一区二区| 欧美一区二区三区四区视频| 爽好久久久欧美精品| 欧美日韩国产另类一区| 日韩电影在线免费| 欧美精品1区2区3区| 日本aⅴ精品一区二区三区| 538在线一区二区精品国产| 蜜芽一区二区三区| 欧美不卡123| 国产精品99久久久久久宅男| 国产亚洲欧美在线| 粉嫩av一区二区三区粉嫩| 国产精品国产自产拍高清av| 91丨九色丨国产丨porny| 日韩美女视频19| 欧美偷拍一区二区| 视频在线观看一区| 欧美不卡视频一区| 国产成人精品免费在线| 国产精品国产三级国产有无不卡| 色诱视频网站一区| 午夜精品一区二区三区免费视频| 91麻豆精品国产91久久久久久久久| 日韩中文字幕不卡| 精品久久五月天| 成人国产精品免费网站| 亚洲精品乱码久久久久久| 欧美日韩高清一区二区三区| 狠狠色狠狠色综合日日91app| 久久精品一区二区| 色猫猫国产区一区二在线视频| 亚洲成人一区二区在线观看| 欧美一级精品大片| 成人免费va视频| 亚洲综合色在线| 精品久久久久香蕉网| 成人97人人超碰人人99| 伊人夜夜躁av伊人久久| 日韩一区二区在线观看视频 | 国产午夜亚洲精品不卡| 一本色道久久综合精品竹菊| 秋霞午夜av一区二区三区| 欧美激情综合在线| 在线观看91视频| 国产一区二区三区最好精华液| 国产精品女上位| 欧美日韩在线播| 国产在线精品不卡| 亚洲码国产岛国毛片在线| 日韩欧美精品在线视频| 粉嫩aⅴ一区二区三区四区| 亚洲午夜久久久久久久久电影院 | 日本不卡的三区四区五区| 国产精品五月天| 欧美精品v日韩精品v韩国精品v| 国产精品白丝jk白祙喷水网站| 亚洲一区在线观看网站| ww亚洲ww在线观看国产| 欧美综合在线视频| 成人中文字幕合集| 日本aⅴ免费视频一区二区三区| 国产精品国产三级国产三级人妇| 91精品国产综合久久久久久| 成人午夜看片网址| 日本欧美加勒比视频| 亚洲视频1区2区| 26uuu国产在线精品一区二区| 欧美在线免费播放| 国产成人免费视频| 男人的天堂亚洲一区| 亚洲精品国产一区二区精华液 | 国产一区二区三区不卡在线观看| 亚洲国产人成综合网站| 国产婷婷色一区二区三区在线| 欧美精品久久一区| 91麻豆精东视频| 国产成人精品1024| 久久精品国产第一区二区三区| 亚洲一二三区不卡| 国产精品福利影院| 久久色.com| 欧美一卡二卡三卡四卡| 91久久国产最好的精华液| 成人午夜av影视| 韩国三级中文字幕hd久久精品| 五月婷婷久久丁香| 一区二区在线观看av| 国产精品久久夜| 久久久久久久久免费| 精品日产卡一卡二卡麻豆| 在线成人午夜影院| 欧美日韩精品一区二区在线播放| 91看片淫黄大片一级在线观看| 国产麻豆视频精品| 黄网站免费久久| 久久av中文字幕片| 蜜臀久久久99精品久久久久久| 午夜亚洲国产au精品一区二区 | 欧美视频日韩视频| 色综合久久天天综合网| 91香蕉视频污| www.在线成人| 成人午夜激情视频| 成人午夜电影网站| 丁香一区二区三区| 国产aⅴ综合色| 懂色中文一区二区在线播放| 国产精品综合网| 国产一区美女在线| 国产高清不卡一区| 国产在线不卡一卡二卡三卡四卡| 久久成人免费电影| 国产一区二区网址| 国产精品一品二品| 丰满少妇在线播放bd日韩电影| 粉嫩aⅴ一区二区三区四区五区| 国产成人自拍在线| 成人综合婷婷国产精品久久免费| 国产成人av一区二区三区在线| 国产精品一区二区在线播放| 国产高清久久久久| eeuss鲁片一区二区三区| 97成人超碰视| 在线观看欧美黄色| 88在线观看91蜜桃国自产| 91麻豆精品国产91久久久资源速度 | 日韩一区二区三免费高清| 日韩视频免费直播| 久久久久久97三级|