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

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

?? csp.cpp

?? PKCS#11的微軟CSP實現源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
* library : pkcs_csp.dll
* Purpose : It is a cryptographic service provider which is an independent 
* software module that actually performs cryptography algorithms for 
* authentication, encoding, and encryption.
* This DLL can be interfaced on any PKCS#11 module.  
*
* Copyright (C) 2003 Ilex Syst鑝es Informatiques
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Contact :
* Ilex 
* 51 boulevard Voltaire
* 92600 Asni鑢es-sur-Seine
* pkizy@ilex.fr
*
* Author: Delouvrier Antoine
*
*******************************************************************************/

/*
%----------------------------------------------------------------------------
% PROJECT : CSP_PKCS
%
% MODULE : csp
%
% VERSION : 1.00
%
% FILE : csp.cpp
%
% Entrance points of the DLL:  all the entrance points are redirected towards handlecontainer which manages a container
%----------------------------------------------------------------------------
% Version 1.00
% 
% CPX-31/03/2003-Creation
%----------------------------------------------------------------------------
% The PKCS#11 module must be defined in the csp_pkcs.ini as below :
% [CSP_PKCS]
% Name=name of pkcs#11 module
%
%----------------------------------------------------------------------------
% You can register the csp in Windows thanks to samples which one can find in 
% the CSPDK which is downloadable at the adress :
% http://www.microsoft.com/downloads/details.aspx?FamilyId=0F436C75-2304-42BB-B81A-BA0C2C47BAC2&displaylang=en
%
*/ 

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif


/*
% HEADER Files include
%-----------------------
*/
#include "handlecontainer.h"
#include "csp_pkcs_const.h"
#include "resource.h"


/*
%Declaration of the private static variables
%-------------------------------------------
*/
extern "C" HINSTANCE g_hModule = NULL;
extern bool		 already_initialized=false;
extern int		 pkcsInitialized=0;





/*
%--------------------------------------------------------------------------
% DllMain
%
% Main of the dll
%--------------------------------------------------------------------------
*/
BOOL WINAPI
DllMain(
  HINSTANCE hinstanceDLL, 
  DWORD ulRaison,     
  LPVOID lpvReserve)  
{
    if (ulRaison == DLL_PROCESS_ATTACH)
    {
		setTraceLevel();
        TRACE(__LINE__,"DLL_PROCESS_ATTACH",NULL);
        DisableThreadLibraryCalls(hinstanceDLL);
        g_hModule = hinstanceDLL;

	}	
	return TRUE;
}	

/*------------------------------------------------------------------------*/

/*
Each of these functions can be found in MSDN.  Please refer there
for additional information.
*/

/*------------------------------------------------------------------------
	CPAcquireContext
-------------------------------------------------------------------------*/
BOOL WINAPI
CPAcquireContext(
    OUT HCRYPTPROV *phProv,
    IN  CHAR *pszContainer,
    IN  DWORD dwFlags,
    IN  PVTableProvStruc pVTable)
{

	BOOL rv=TRUE;
    TRACE(__LINE__,"CPAcquireContext BEGIN :%d %s %d %d",phProv,pszContainer,dwFlags,pVTable);
	rv=Pkcs::Initialize();
	if(rv!=TRUE)
		return FALSE;

	if (((dwFlags & CRYPT_VERIFYCONTEXT) == CRYPT_VERIFYCONTEXT) &&
        (NULL != pszContainer) && (0 != *pszContainer))

    {
        SetLastError((DWORD) NTE_BAD_FLAGS);
	    TRACE(__LINE__,"CPAcquireContext ERROR :%d %s %d %d",phProv,pszContainer,dwFlags,pVTable);
        return FALSE;
    }
	
	const CHAR * pszFinalContainer;
    
	if(!pszContainer || (0 == *pszContainer))
		pszFinalContainer = DEFAULT_CONTAINER;
	else
		pszFinalContainer =pszContainer;

	HandleContainer* pHandleContainer = new HandleContainer();

	if(!pHandleContainer){
	    TRACE(__LINE__,"CPAcquireContext ERROR :%d %s %d %d",phProv,pszContainer,dwFlags,pVTable);
		return FALSE;
	}

	if(!pHandleContainer->CreateHandleContainer(pszFinalContainer, dwFlags, pVTable))
	{
		delete pHandleContainer;
	    TRACE(__LINE__,"CPAcquireContext ERROR :%d %s %d %d",phProv,pszContainer,dwFlags,pVTable);
		return FALSE;
	}

	if((dwFlags & CRYPT_DELETEKEYSET) == CRYPT_DELETEKEYSET)
		delete pHandleContainer;
	else
		*phProv = (HCRYPTPROV)pHandleContainer;


    TRACE(__LINE__,"CPAcquireContext TRUE :%d %s %d %d",phProv,pszContainer,dwFlags,pVTable);
	return TRUE;
}


/*------------------------------------------------------------------------
	CPReleaseContext
-------------------------------------------------------------------------*/
BOOL WINAPI
CPReleaseContext(
    IN  HCRYPTPROV hProv,
    IN  DWORD ulFlags)
{
	TRACE(__LINE__,"CPReleaseContext : %d, %d",hProv,ulFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		TRACE(__LINE__,"CPReleaseContext ERROR: %d, %d",hProv,ulFlags);
		SetLastError(NTE_BAD_UID);
		return FALSE;
	}
	delete (HandleContainer*)hProv;
	Pkcs::FreePkcs();

	TRACE(__LINE__,"CPReleaseContext TRUE: %d, %d",hProv,ulFlags);
	return TRUE;
}




/*------------------------------------------------------------------------
	CPGenKey
-------------------------------------------------------------------------*/

BOOL WINAPI
CPGenKey(
    IN  HCRYPTPROV hProv,
    IN  ALG_ID uiAlgid,
    IN  DWORD ulFlags,
    OUT HCRYPTKEY *phKey)
{
	TRACE(__LINE__,"CPGenKey NOT IMPLEMENTED",NULL);
	SetLastError(E_NOTIMPL);
	return FALSE;
    
}


/*------------------------------------------------------------------------
	CPDeriveKey
-------------------------------------------------------------------------*/

BOOL WINAPI
CPDeriveKey(
    IN  HCRYPTPROV hProv,
    IN  ALG_ID Algid,
    IN  HCRYPTHASH hHash,
    IN  DWORD dwFlags,
    OUT HCRYPTKEY *phKey)
{
	TRACE(__LINE__,"CPDeriveKey NOT IMPLEMENTED",NULL);
	SetLastError(E_NOTIMPL);
	return FALSE;
}


/*------------------------------------------------------------------------
	CPDestroyKey
-------------------------------------------------------------------------*/

BOOL WINAPI
CPDestroyKey(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTKEY hKey)
{
	TRACE(__LINE__,"CPDestroyKey NOT IMPLEMENTED",NULL);
    return CryptDestroyKey(hKey);
}



/*------------------------------------------------------------------------
	CPSetKeyParam
-------------------------------------------------------------------------*/

BOOL WINAPI
CPSetKeyParam(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTKEY hKey,
    IN  DWORD ulParametre,
    IN  CONST BYTE *pucData,
    IN  DWORD ulFlags)
{
	BOOL result;
	TRACE(__LINE__,"CPSetKeyParam BEGIN: %d %d %x %d %d",hProv,hKey,ulParametre,pucData,ulFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPSetKeyParam ERROR: %d %d %x %d %d",hProv,hKey,ulParametre,pucData,ulFlags);
		return FALSE;
	}

	result=((HandleContainer*)hProv)->SetKeyParam(hKey, ulParametre, pucData, ulFlags);
	if(!result)
	{
		TRACE(__LINE__,"CPSetKeyParam ERROR: %d %d %x %d %d",hProv,hKey,ulParametre,pucData,ulFlags);
		return FALSE;
	}
	
	TRACE(__LINE__,"CPSetKeyParam TRUE: %d %d %x %d %d",hProv,hKey,ulParametre,pucData,ulFlags);
	return TRUE;
}
   

/*------------------------------------------------------------------------
	CPGetKeyParam
-------------------------------------------------------------------------*/

BOOL WINAPI
CPGetKeyParam(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTKEY hKey,
    IN  DWORD ulParametre,
    OUT LPBYTE pucData,
    IN OUT LPDWORD pulDataLen,
    IN  DWORD ulFlags)
{
	BOOL result;
	TRACE(__LINE__,"CPGetKeyParam BEGIN :%d %d %d %d %d %d",hProv,hKey,ulParametre,pucData,pulDataLen,ulFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPGetKeyParam ERROR :%d %d %d %d %d %d",hProv,hKey,ulParametre,pucData,pulDataLen,ulFlags);
		return FALSE;
	}

	result= ((HandleContainer*)hProv)->GetKeyParam(hKey, ulParametre, pucData, pulDataLen, ulFlags);
	if(!result)
	{
		TRACE(__LINE__,"CPGetKeyParam ERROR :%d %d %d %d %d %d",hProv,hKey,ulParametre,pucData,pulDataLen,ulFlags);
		return FALSE;
	}

	TRACE(__LINE__,"CPGetKeyParam TRUE :%d %d %d %d %d %d",hProv,hKey,ulParametre,pucData,pulDataLen,ulFlags);
	return TRUE;
}



/*------------------------------------------------------------------------
	CPSetProvParam
-------------------------------------------------------------------------*/
BOOL WINAPI
CPSetProvParam(
    IN  HCRYPTPROV hProv,
    IN  DWORD ulParametre,
    IN  CONST BYTE *pucData,
    IN  DWORD ulFlags)
{
	TRACE(__LINE__,"CPSetProvParam NOT IMPLEMENTED",NULL);
	SetLastError(E_NOTIMPL);
	return FALSE;
}



/*------------------------------------------------------------------------
	CPGetProvParam
-------------------------------------------------------------------------*/

BOOL WINAPI
CPGetProvParam(
    IN  HCRYPTPROV hProv,
    IN  DWORD ulParametre,
    OUT LPBYTE pucData,
    IN OUT LPDWORD pulDataLen,
    IN  DWORD ulFlags)
{
	TRACE(__LINE__,"CPGetProvParam BEGIN :%d,%d;%d,%d,%d",hProv,ulParametre,pucData,pulDataLen,ulFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPGetProvParam ERROR :%d,%d;%d,%d,%d",hProv,ulParametre,pucData,pulDataLen,ulFlags);
		return FALSE;
	}

	TRACE(__LINE__,"CPGetProvParam TRUE :%d,%d;%d,%d,%d",hProv,ulParametre,pucData,pulDataLen,ulFlags);
	return ((HandleContainer*)hProv)->GetProvParam(ulParametre, pucData, pulDataLen, ulFlags);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产片| 欧美日韩在线播放一区| 国产在线播放一区三区四| 午夜欧美在线一二页| 亚洲午夜一区二区三区| 香蕉成人伊视频在线观看| 亚洲成人免费在线| 日产国产高清一区二区三区| 美女脱光内衣内裤视频久久网站 | 日韩欧美电影一区| 欧美成人女星排行榜| 久久精品亚洲麻豆av一区二区 | 亚洲男同性视频| 亚洲乱码国产乱码精品精的特点 | 久久久夜色精品亚洲| 欧美国产精品久久| 亚洲乱码中文字幕综合| 日本女优在线视频一区二区| 麻豆精品在线播放| 97久久超碰国产精品电影| 欧美视频一二三区| 精品久久久久久无| 国产精品婷婷午夜在线观看| 亚洲国产精品尤物yw在线观看| 肉色丝袜一区二区| 国产精品资源在线| 欧美这里有精品| 日韩欧美一区二区在线视频| 国产日韩av一区二区| 亚洲综合一区二区| 国内精品免费**视频| 色天使久久综合网天天| 久久综合给合久久狠狠狠97色69| 国产精品传媒视频| 美女性感视频久久| 色狠狠av一区二区三区| 久久综合久久综合亚洲| 亚洲综合成人在线| 国产精品99久久久| 91精品国产综合久久久久久| 中文字幕中文字幕一区| 久久精品国产色蜜蜜麻豆| 91影视在线播放| 精品成a人在线观看| 亚洲成人激情社区| 91免费看片在线观看| www激情久久| 天堂va蜜桃一区二区三区漫画版| av资源网一区| 久久久精品日韩欧美| 午夜精品久久久久| 色综合久久久久综合| 国产色产综合色产在线视频| 麻豆久久久久久| 欧美人妖巨大在线| 一区二区三区美女视频| 国产高清不卡一区| 久久九九影视网| 久草这里只有精品视频| 欧美一区二区免费观在线| 亚洲一区二区三区美女| 色综合欧美在线| 一区精品在线播放| youjizz国产精品| 国产欧美精品在线观看| 国产精品资源网| 精品国产成人在线影院| 精品一区二区三区免费视频| 日韩一区二区三区四区五区六区| 五月天久久比比资源色| 欧美高清视频不卡网| 亚洲电影你懂得| 欧美日韩国产另类一区| 偷窥少妇高潮呻吟av久久免费| 色哟哟精品一区| 久久国产尿小便嘘嘘尿| 欧美国产97人人爽人人喊| 久久国产三级精品| 91精品国产综合久久香蕉麻豆| 亚洲综合色在线| 欧美日韩精品免费| 青娱乐精品在线视频| 欧美一区二区日韩| 国产一区欧美一区| 欧美激情自拍偷拍| 色狠狠桃花综合| 丝袜美腿成人在线| 日韩精品一区二区三区视频播放| 久久精品国产在热久久| 久久久亚洲综合| 91在线视频播放地址| 亚洲成人av免费| 欧美zozo另类异族| 成人avav在线| 亚洲制服丝袜av| 91在线高清观看| 一区二区三区自拍| 日韩亚洲欧美中文三级| 精品影院一区二区久久久| 国产欧美日韩三级| 欧美性大战久久久久久久蜜臀| 蜜桃91丨九色丨蝌蚪91桃色| 欧美激情一二三区| 欧美日韩一区视频| 国产精品一区二区三区乱码| 亚洲美女视频在线观看| 欧美一区二区视频在线观看2022| 福利一区二区在线| 视频精品一区二区| 国产精品视频免费看| 91精品国产综合久久精品| www.欧美日韩国产在线| 午夜在线成人av| 国产精品久久久久久久浪潮网站 | 日av在线不卡| 国产精品日日摸夜夜摸av| 亚洲午夜在线电影| 91精品国产色综合久久不卡电影| 精品一区二区三区在线播放| 成人欧美一区二区三区| 制服视频三区第一页精品| 成人av在线资源网站| 日韩黄色免费网站| 亚洲品质自拍视频网站| 久久综合九色综合欧美就去吻| 在线观看av一区| 国产91精品一区二区麻豆亚洲| 午夜亚洲国产au精品一区二区| 国产清纯在线一区二区www| 欧美一级二级三级蜜桃| 欧美性做爰猛烈叫床潮| 99麻豆久久久国产精品免费| 精彩视频一区二区三区| 免费在线成人网| 亚洲国产精品人人做人人爽| 天天综合日日夜夜精品| 亚洲视频一二区| 亚洲国产精华液网站w| 久久久久88色偷偷免费| 欧美麻豆精品久久久久久| 成人中文字幕合集| 激情深爱一区二区| 蜜桃免费网站一区二区三区| 亚洲综合丁香婷婷六月香| 亚洲欧美一区二区三区国产精品| 久久久久88色偷偷免费| 国产亚洲污的网站| 久久午夜老司机| 久久亚洲私人国产精品va媚药| 精品免费视频一区二区| 精品乱人伦小说| 日韩欧美国产综合一区 | 日韩精品专区在线影院重磅| 91精品国产欧美一区二区18| 欧美一区二区三区视频免费播放 | 另类专区欧美蜜桃臀第一页| 久久精品国产99久久6| 国产精品一二三区在线| 蜜臀av一区二区在线免费观看| 亚洲欧美成aⅴ人在线观看| 国产精品不卡在线| 国产精品久久久99| 亚洲视频免费看| 一区二区视频在线| 亚洲成a人在线观看| 亚洲chinese男男1069| 蜜臀av国产精品久久久久 | 狠狠色综合播放一区二区| 国产一区日韩二区欧美三区| 成人av动漫网站| 欧美在线小视频| 欧美一区二区网站| 国产三级欧美三级日产三级99 | 国产精品电影院| 亚洲一区二区三区自拍| 久久精品国产亚洲a| 波多野结衣精品在线| 色香色香欲天天天影视综合网| 成人福利视频在线看| 欧美性猛交xxxxxxxx| 日韩欧美激情一区| 亚洲狠狠丁香婷婷综合久久久| 亚洲1区2区3区4区| 国产精品18久久久久久久久久久久 | 91激情五月电影| 欧美高清dvd| 日本一区二区免费在线观看视频 | 91蝌蚪国产九色| 日韩一区二区在线观看| 亚洲欧洲av在线| 裸体一区二区三区| 99国产精品99久久久久久| 4438成人网| 中文字幕亚洲视频| 国产资源在线一区| 欧美午夜精品久久久久久超碰| 久久亚洲免费视频| 日韩高清不卡一区二区三区| 丁香激情综合国产| 欧美成人在线直播|