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

📄 testcsp.cpp

📁 微软出的CSPDK
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////
//  FILE          : testcsp.cpp                                            //
//  DESCRIPTION   : Test to verify parameters of crypto API                //
//  USAGE         : Must have the provider csp.dll and file csp.sig        //
//                  which is the signature in the path.                    //
//  AUTHOR        :                                                        //
//  HISTORY       :                                                        //
//      Dec 22 1994 larrys   New                                           //
//      Jan  5 1995 larrys   Added CryptGetLastError                       //
//      Mar  8 1995 larrys   Removed CryptGetLastError                     //
//      Mar 21 1995 larrys   Removed Certificate APIs                      //
//      Apr  7 1995 larrys   Update to new spec                            //
//      Nov 18 1998 davidteo Ported to Windows CE                          //
//                                                                         //
//  Copyright (C) 1993 Microsoft Corporation   All Rights Reserved         //
/////////////////////////////////////////////////////////////////////////////
#define APPNAME    L"TESTCSP"
#include "..\inc\csp.h"

#define UTILITY_BUF_SIZE	1000

#define PARAMETER1 10
#define PARAMETER2 9
#define PARAMETER3 8
#define PARAMETER4 7
#define PARAMETER5 6
#define PARAMETER6 5
#define PARAMETER7 4
#define PARAMETER8 3
#define PARAMETER9 2
#define PARAMETER10 1

//*****************************************************************************

extern "C" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                              LPTSTR lpCmdLine, int nCmdShow)
{
//    HANDLE         hEvent;
    HCRYPTPROV     hProv;
    HCRYPTKEY      hKey;
    HCRYPTKEY      hKey2;
    HCRYPTPROV     hHash;
    HCRYPTKEY      hPub;
    HCRYPTKEY      hUser;
    TCHAR          pszMyName[64];
//    HFILE          hFile;
//    OFSTRUCT       ImageInfoBuf;

    TRACE(L"Calling CryptAcquireContext - %d", 1);
    lstrcpy(pszMyName, TEXT("apitest"));

    // First check if key container exists
	if (RCRYPT_FAILED(CryptAcquireContext(&hProv, pszMyName,
                          CSP_PROV, CSP_PROV_TYPE, 0)))
	{
		TRACE(L"First CryptAcquireContext returned error %x\n", GetLastError());
		TRACE(L"Initialize - creating key container...\n");
		
		// Key container may not exist, try creating it
		if (RCRYPT_FAILED(CryptAcquireContext(&hProv, pszMyName, CSP_PROV, 
				CSP_PROV_TYPE, CRYPT_NEWKEYSET)))
		{
        	TRACE(L"CryptAcquireContext returned error %x\n", GetLastError());
        	TRACE(L"FAILED\n");
			return(TRUE);
		}
		else
			TRACE(L"New Key Container Created: SUCCEED\n");
	}
	else
	    TRACE(L"SUCCEED\n");

    TRACE(L"Calling CryptGenKey - ");
	if (RCRYPT_FAILED(CryptGenKey(hProv,
				      (int) PARAMETER2,
				      PARAMETER3,
				      &hKey)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptDestroyKey - ");
	if (RCRYPT_FAILED(CryptDestroyKey(hKey)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

//
//	Create key for other calls to functions
//
    TRACE(L"Calling CryptGenKey - ");
	if (RCRYPT_FAILED(CryptGenKey(hProv,
				      (int) PARAMETER2,
				      PARAMETER3,
				      &hKey)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
	        TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptSetKeyParam - ");
	if (RCRYPT_FAILED(CryptSetKeyParam(hKey,
					   PARAMETER2,
					   (BYTE *) PARAMETER3,
					   PARAMETER4)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptGetKeyParam - ");
	if (RCRYPT_FAILED(CryptGetKeyParam(hKey,
					   PARAMETER2,
					   (BYTE *) PARAMETER3,
					   (DWORD *) PARAMETER4,
					   PARAMETER5)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptSetProvParam - ");
	if (RCRYPT_FAILED(CryptSetProvParam(hProv,
					    PARAMETER2,
					    (BYTE *) PARAMETER3,
					    PARAMETER4)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptGetProvParam - ");
	if (RCRYPT_FAILED(CryptGetProvParam(hProv,
					    PARAMETER2,
					    (BYTE *) PARAMETER3,
					    (DWORD *) PARAMETER4,
					    PARAMETER5)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }


    TRACE(L"Calling CryptGenRandom - ");
	if (RCRYPT_FAILED(CryptGenRandom(hProv,
					 PARAMETER2,
					 (BYTE *) PARAMETER3)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptGetUserKey - ");
    if (RCRYPT_FAILED(CryptGetUserKey(hProv,
				  PARAMETER2,
				  &hUser)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptGenKey - ");
	if (RCRYPT_FAILED(CryptGenKey(hProv,
				      (int) PARAMETER2,
				      PARAMETER3,
				      &hPub)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptExportKey - ");
	if (RCRYPT_FAILED(CryptExportKey(hKey,
					 hPub,
				         PARAMETER3,
					 PARAMETER4,
					 (BYTE *) PARAMETER5,
					 (DWORD *) PARAMETER6)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptImportKey - ");
	if (RCRYPT_FAILED(CryptImportKey(hProv,
					 (BYTE *) PARAMETER2,
					 PARAMETER3,
					 hUser,
					 PARAMETER5,
					 &hKey2)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptCreateHash - ");
	if (RCRYPT_FAILED(CryptCreateHash(hProv,
					  (int) PARAMETER2,
					  hKey,
					  PARAMETER4,
					  &hHash)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptSetHashParam - ");
	if (RCRYPT_FAILED(CryptSetHashParam(hHash,
					    PARAMETER2,
					    (BYTE *) PARAMETER3,
					    PARAMETER4)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptGetHashParam - ");
	if (RCRYPT_FAILED(CryptGetHashParam(hHash,
					    PARAMETER2,
					    (BYTE *) PARAMETER3,
					    (DWORD *) PARAMETER4,
					    PARAMETER5)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptHashData - ");
	if (RCRYPT_FAILED(CryptHashData(hHash,
				        (BYTE *) PARAMETER2,
					PARAMETER3,
					PARAMETER4)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptHashSessionKey - ");
	if (RCRYPT_FAILED(CryptHashSessionKey(hHash, hKey, PARAMETER3)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptEncrypt - ");
	if (RCRYPT_FAILED(CryptEncrypt(hKey,
				       hHash,
				       (BOOL) PARAMETER3,
				       PARAMETER4,
				       (BYTE *) PARAMETER5,
				       (DWORD *) PARAMETER6,
				       PARAMETER7)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptDecrypt - ");
	if (RCRYPT_FAILED(CryptDecrypt(hKey,
				       hHash,
				       (BOOL) PARAMETER3,
				       PARAMETER4,
				       (BYTE *) PARAMETER5,
				       (DWORD *) PARAMETER6)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptDeriveKey - ");
	if (RCRYPT_FAILED(CryptDeriveKey(hProv,
					 (int) PARAMETER2,
					 hHash,
					 PARAMETER4,
					 &hKey2)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptSignHash - ");
	if (RCRYPT_FAILED(CryptSignHash(hHash,
					PARAMETER2,
					L"string",
					PARAMETER4,
					(BYTE *) PARAMETER5,
					(DWORD *) PARAMETER6)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptVerifySignature - ");
	if (RCRYPT_FAILED(CryptVerifySignature(hHash,
					       (BYTE *) PARAMETER2,
					       PARAMETER3,
					       hPub,
					       L"string",
					       PARAMETER6)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

    TRACE(L"Calling CryptDestroyHash - ");
	if (RCRYPT_FAILED(CryptDestroyHash(hHash)))
	{
		if (GetLastError() == ERROR_INVALID_PARAMETER)
	    {
		    TRACE(L"Access violation\n");
        }
        else
        {
		    TRACE(L"Test Failed\n");
        }
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

	if (RCRYPT_FAILED(CryptReleaseContext(hProv, PARAMETER2)))
	{
        TRACE(L"CryptReleaseContext returned error %d\n", GetLastError());
        TRACE(L"FAILED\n");
	}
	else
	{
        TRACE(L"SUCCEED\n");
    }

	return(0);
}

⌨️ 快捷键说明

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