📄 testcsp.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 + -