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

📄 testcsp.c

📁 微软出的CSPDK
💻 C
字号:
/////////////////////////////////////////////////////////////////////////////
//  FILE          : param.c                                                //
//  DESCRIPTION   : Test to verify parameters of crypto API                //
//  USAGE         : Must have the provider defprov.dll and file "sign"     //
//                  which is the signature in the path.                    //
//                  Placing any charactor on the command line will create  //
//                  debug output from the program.                         //
//  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                             //
//                                                                         //
//  Copyright (C) 1993 Microsoft Corporation   All Rights Reserved         //
/////////////////////////////////////////////////////////////////////////////

#undef UNICODE					// ## Not Yet
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <windows.h>
#include <wincrypt.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


int __cdecl main(int cArg, char *rgszArg[])
{
//    HANDLE         hEvent;
    HCRYPTPROV     hProv;
    HCRYPTKEY      hKey;
    HCRYPTKEY      hKey2;
    HCRYPTPROV     hHash;
    HCRYPTKEY      hPub;
    HCRYPTKEY      hUser;
    CHAR           pszMyName[64];
//    HFILE          hFile;
//    OFSTRUCT       ImageInfoBuf;

    printf("Calling CryptAcquireContext - ");
	if (RCRYPT_FAILED(CryptAcquireContext(&hProv, pszMyName,
                          "CSP Provider", 900, cArg)))
	{
        printf("CryptAcquireConext returned error %x\n", GetLastError());
        printf("FAILED\n");
		return(TRUE);
	}
	else
	    printf("SUCCEED\n");

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return(0);
}

⌨️ 快捷键说明

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