⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csp.cpp

📁 PKCS#11的微软CSP实现源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}


/*------------------------------------------------------------------------
	CPSetHashParam
-------------------------------------------------------------------------*/

BOOL WINAPI
CPSetHashParam(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTHASH hHash,
    IN  DWORD ulParametre,
    IN  BYTE *pucData,
    IN  DWORD ulFlags)
{
	TRACE(__LINE__,"CPSetHashParam BEGIN : %d %d %d %d %d",hProv,hHash,ulParametre,pucData,ulFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPSetHashParam ERROR : %d %d %d %d %d",hProv,hHash,ulParametre,pucData,ulFlags);
		return FALSE;
	}

	TRACE(__LINE__,"CPSetHashParam TRUE : %d %d %d %d %d",hProv,hHash,ulParametre,pucData,ulFlags);
	return ((HandleContainer*)hProv)->SetHashParam(hHash, ulParametre, pucData, ulFlags);
}


/*------------------------------------------------------------------------
	CPGetHashParam
-------------------------------------------------------------------------*/


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

	TRACE(__LINE__,"CPSetHashParam TRUE : %d %d %d %d %d %d",hProv,hHash,ulParametre,pucData,pulDataLen,ulFlags);
	return ((HandleContainer*)hProv)->GetHashParam(hHash, ulParametre, pucData, pulDataLen, ulFlags);
}


/*------------------------------------------------------------------------
	CPExportKey
-------------------------------------------------------------------------*/

BOOL WINAPI
CPExportKey(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTKEY hKey,
    IN  HCRYPTKEY hPubKey,
    IN  DWORD ulBlobType,
    IN  DWORD ulFlags,
    OUT LPBYTE pucData,
    IN OUT LPDWORD pulDataLen)
{
	TRACE(__LINE__,"CPExportKey NOT IMPLEMENTED",NULL);
	SetLastError(E_NOTIMPL);
	return FALSE;
}


/*------------------------------------------------------------------------
	CPImportKey
-------------------------------------------------------------------------*/

BOOL WINAPI
CPImportKey(
    IN  HCRYPTPROV hProv,
    IN  CONST BYTE *pucData,
    IN  DWORD pulDataLen,
    IN  HCRYPTKEY hPubKey,
    IN  DWORD ulFlags,
    OUT HCRYPTKEY *phKey)
{
	
	TRACE(__LINE__,"CPImportKey BEGIN : %d %d %d %d %d %d",hProv,pucData,pulDataLen,hPubKey,ulFlags,phKey);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPImportKey ERROR : %d %d %d %d %d %d",hProv,pucData,pulDataLen,hPubKey,ulFlags,phKey);
		return FALSE;
	}
	//
	TRACE(__LINE__,"CPImportKey TRUE : %d %d %d %d %d %d",hProv,pucData,pulDataLen,hPubKey,ulFlags,phKey);
	return ((HandleContainer*)hProv)->ImportKey((unsigned char * )pucData, pulDataLen, hPubKey, ulFlags, phKey);
}


/*------------------------------------------------------------------------
	CPEncrypt
-------------------------------------------------------------------------*/

BOOL WINAPI
CPEncrypt(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTKEY hKey,
    IN  HCRYPTHASH hHash,
    IN  BOOL fFinal,
    IN  DWORD dwFlags,
    IN OUT LPBYTE pbData,
    IN OUT LPDWORD pcbDataLen,
    IN  DWORD cbBufLen)
{
	TRACE(__LINE__,"CPEncrypt BEGIN : %d %d %d %d %d %d %d %d",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen,cbBufLen );
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPEncrypt ERROR: %d %d %d %d %d %d %d %d",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen,cbBufLen );
		return FALSE;
	}

	TRACE(__LINE__,"CPEncrypt TRUE : %d %d %d %d %d %d %d %d",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen,cbBufLen );
	return ((HandleContainer*)hProv)->Encrypt(hKey, hHash, fFinal, dwFlags, pbData, pcbDataLen, cbBufLen);
}


/*------------------------------------------------------------------------
	CPDecrypt
-------------------------------------------------------------------------*/

BOOL WINAPI
CPDecrypt(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTKEY hKey,
    IN  HCRYPTHASH hHash,
    IN  BOOL fFinal,
    IN  DWORD dwFlags,
    IN OUT LPBYTE pbData,
    IN OUT LPDWORD pcbDataLen)
{
	BOOL result;
	
	LPBYTE pbKeyMaterial  = NULL;
   

	TRACE(__LINE__,"CPDecrypt BEGIN : %d %d %d %d %d %d %d",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPDecrypt ERROR : %d %d %d %d %d %d %d",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen);
		return FALSE;
	}
	
	

	result=((HandleContainer*)hProv)->Decrypt(hKey, hHash, fFinal, dwFlags, pbData, pcbDataLen);
	if(!result)
	{
		TRACE(__LINE__,"CPDecrypt ERROR : %d %d %d %d %d %d %d error:%x\n",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen,GetLastError());
		return FALSE;
	}
	TRACE(__LINE__,"CPDecrypt TRUE : %d %d %d %d %d %d %d",hProv,hKey,hHash,fFinal,dwFlags,pbData,pcbDataLen);
	return TRUE;
	
}


/*------------------------------------------------------------------------
	CPCreateHash
-------------------------------------------------------------------------*/

BOOL WINAPI
CPCreateHash(
    IN  HCRYPTPROV hProv,
    IN  ALG_ID Algid,
    IN  HCRYPTKEY hKey,
    IN  DWORD dwFlags,
    OUT HCRYPTHASH *phHash)
{
	TRACE(__LINE__,"CPCreateHash BEGIN :%d %d %d %d %d",hProv,Algid,hKey,dwFlags,phHash);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPCreateHash ERROR :%d %d %d %d %d",hProv,Algid,hKey,dwFlags,phHash);
		return FALSE;
	}
	
	TRACE(__LINE__,"CPCreateHash TRUE :%d %d %d %d %d",hProv,Algid,hKey,dwFlags,phHash);
	return ((HandleContainer*)hProv)->CreateHash(Algid, hKey, dwFlags, phHash);
}



/*------------------------------------------------------------------------
	CPHashData
-------------------------------------------------------------------------*/

BOOL WINAPI
CPHashData(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTHASH hHash,
    IN  CONST BYTE *pbData,
    IN  DWORD cbDataLen,
    IN  DWORD dwFlags)
{
	TRACE(__LINE__,"CPHashData BEGIN : %d %d %d %d %d",hProv,hHash,pbData,cbDataLen,dwFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPHashData ERROR : %d %d %d %d %d",hProv,hHash,pbData,cbDataLen,dwFlags);
		return FALSE;
	}

	TRACE(__LINE__,"CPHashData TRUE : %d %d %d %d %d",hProv,hHash,pbData,cbDataLen,dwFlags);
	return ((HandleContainer*)hProv)->HashData(hHash, pbData, cbDataLen, dwFlags);
}


/*------------------------------------------------------------------------
	CPHashSessionKey
-------------------------------------------------------------------------*/

BOOL WINAPI
CPHashSessionKey(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTHASH hHash,
    IN  HCRYPTKEY hKey,
    IN  DWORD dwFlags)
{
	TRACE(__LINE__,"CPHashSessionKey NOT IMPLEMENTED",NULL);
	SetLastError(E_NOTIMPL);
	return FALSE;
}


/*------------------------------------------------------------------------
	CPSignHash
-------------------------------------------------------------------------*/

BOOL WINAPI
CPSignHash(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTHASH hHash,
    IN  DWORD dwKeySpec,
    IN  LPCWSTR szDescription,
    IN  DWORD dwFlags,
    OUT LPBYTE pbSignature,
    IN OUT LPDWORD pcbSigLen)
{
	TRACE(__LINE__,"CPSignHash BEGIN : %d %d %d %d %d %d %d",hProv,hHash,dwKeySpec,szDescription,dwFlags,pbSignature,pcbSigLen);
    if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPSignHash ERROR : %d %d %d %d %d %d %d",hProv,hHash,dwKeySpec,szDescription,dwFlags,pbSignature,pcbSigLen);
		return FALSE;
	}

	TRACE(__LINE__,"CPSignHash TRUE : %d %d %d %d %d %d %d",hProv,hHash,dwKeySpec,szDescription,dwFlags,pbSignature,pcbSigLen);
	return ((HandleContainer*)hProv)->SignHash(hHash,dwKeySpec,szDescription,dwFlags,pbSignature, pcbSigLen);
   
}


/*------------------------------------------------------------------------
	CPDestroyHash
-------------------------------------------------------------------------*/

BOOL WINAPI
CPDestroyHash(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTHASH hHash)
{
	TRACE(__LINE__,"CPDestryHash BEGIN : %d %d",hProv,hHash);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPDestryHash ERROR : %d %d",hProv,hHash);
		return FALSE;
	}

	TRACE(__LINE__,"CPDestryHash TRUE : %d %d",hProv,hHash);
	return ((HandleContainer*)hProv)->DestroyHash(hHash);
}


/*------------------------------------------------------------------------
	CPVerifySignature
-------------------------------------------------------------------------*/

BOOL WINAPI
CPVerifySignature(
    IN  HCRYPTPROV hProv,
    IN  HCRYPTHASH hHash,
    IN  CONST BYTE *pbSignature,
    IN  DWORD cbSigLen,
    IN  HCRYPTKEY hPubKey,
    IN  LPCTSTR szDescription,
    IN  DWORD dwFlags)
{
	TRACE(__LINE__,"CPVerifySignature BEGIN : %d %d %d %d %d %d %d",hProv,hHash,pbSignature,cbSigLen,hPubKey,szDescription,dwFlags);
	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPVerifySignature ERROR : %d %d %d %d %d %d %d",hProv,hHash,pbSignature,cbSigLen,hPubKey,szDescription,dwFlags);
		return FALSE;
	}

	TRACE(__LINE__,"CPVerifySignature TRUE : %d %d %d %d %d %d %d",hProv,hHash,pbSignature,cbSigLen,hPubKey,szDescription,dwFlags);
	return ((HandleContainer*)hProv)->VerifySignature(hHash, pbSignature, cbSigLen, hPubKey, szDescription, dwFlags);
}


/*------------------------------------------------------------------------
	CPGenRandom
-------------------------------------------------------------------------*/

BOOL WINAPI
CPGenRandom(
    IN  HCRYPTPROV hProv,
    IN  DWORD cbLen,
    OUT LPBYTE pbBuffer)
{
	TRACE(__LINE__,"CPGenRandom NOT IMPLEMENTED",NULL);
 	SetLastError(E_NOTIMPL);
	return FALSE;
}


/*------------------------------------------------------------------------
	CPGetUserKey
-------------------------------------------------------------------------*/


BOOL WINAPI
CPGetUserKey(
    IN  HCRYPTPROV hProv,
    IN  DWORD dwKeySpec,
    OUT HCRYPTKEY *phUserKey)
{
	TRACE(__LINE__,"CPGetUserKey BEGIN : %d %d %d",hProv,dwKeySpec,phUserKey);

	if(!HandleContainer::VerifyHandleContainer((HandleContainer*)hProv))
	{
		SetLastError(NTE_BAD_UID);
		TRACE(__LINE__,"CPGetUserKey ERROR : %d %d %d",hProv,dwKeySpec,phUserKey);
		return FALSE;
	}
	((HandleContainer*)hProv)->GetUserKey(dwKeySpec,phUserKey);
	TRACE(__LINE__,"CPGetUserKey TRUE : %d %d %d",hProv,dwKeySpec,phUserKey);
    return TRUE;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -