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