windows-nt/Source/XPSP1/NT/ds/win32/ntcrypto/test/testsuit/cspstruc.h

174 lines
4.2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//
// CSPStruc.h
//
// 7/17/00 dangriff created
//
#ifndef __CSPSTRUC__H__
#define __CSPSTRUC__H__
#include <windows.h>
#include <wincrypt.h>
#define LOG_TRY(X) { if (! X) { goto Cleanup; } }
typedef enum _KNOWN_ERROR_ID
{
KNOWN_ERROR_UNKNOWN,
//
// Positive test cases
//
KNOWN_CRYPTGETPROVPARAM_MAC,
KNOWN_CRYPTGETPROVPARAM_PPNAME,
KNOWN_CRYPTSETKEYPARAM_EXPORT,
KNOWN_CRYPTGETKEYPARAM_SALT,
KNOWN_CRYPTGENKEY_SALTDES,
//
// Negative test cases
//
KNOWN_CRYPTACQUIRECONTEXT_NULLPHPROV,
KNOWN_CRYPTACQUIRECONTEXT_BADFLAGS,
KNOWN_ERRORINVALIDHANDLE,
KNOWN_CRYPTGETPROVPARAM_MOREDATA,
KNOWN_CRYPTSETPROVPARAM_RNG,
KNOWN_CRYPTSETPROVPARAM_BADFLAGS,
KNOWN_CRYPTCREATEHASH_BADKEY,
KNOWN_CRYPTIMPORTKEY_BADFLAGS,
KNOWN_CRYPTIMPORTKEY_BADALGID,
KNOWN_NTEBADKEY,
KNOWN_NTEBADHASH,
KNOWN_CRYPTGENKEY_SILENTCONTEXT,
//
// Scenario test cases
//
KNOWN_TESTDECRYPTPROC_3DES112
} KNOWN_ERROR_ID;
//
// Struct: TESTCASE
// Purpose: Contains test case state data that is passed to
// the API wrappers for logging and setting result expectation.
//
typedef struct _TESTCASE
{
DWORD dwErrorLevel;
DWORD dwTestCaseID;
KNOWN_ERROR_ID KnownErrorID;
BOOL fExpectSuccess;
DWORD dwErrorCode;
DWORD dwTestLevel;
DWORD dwCSPClass;
BOOL fSmartCardCSP;
//
// If fEnumerating is TRUE, calls to TGetProv will directly return
// what CryptGetProvParam returned.
//
// If fEnumerating is FALSE, TGetProv will return the result
// of CheckContinueStatus.
//
BOOL fEnumerating;
//
// If fTestingReleaseContext is TRUE, TRelease will check fExpectSuccess
// to determine the expected return value of the call to CryptReleaseContext.
//
// If fTestingReleaseContext if FALSE, TRelease will always expect
// CryptReleaseContext to succeed. If it doesn't succeed, an error
// will be logged.
//
BOOL fTestingReleaseContext;
//
// Use of fTestingDestroyKey is similar to fTestingReleaseContext above.
//
BOOL fTestingDestroyKey;
//
// Use of fTestingDestroyHash is similar to fTestingReleaseContext above.
//
BOOL fTestingDestroyHash;
//
// If fTestingUserProtected is FALSE, CreateNewContext will acquire a
// CRYPT_SILENT context handle regardless of the dwFlags parameter.
//
// If fTestingUserProtected is TRUE, CreateNewContext will not OR in
// the CRYPT_SILENT flag.
//
BOOL fTestingUserProtected;
//
// Optional. If pwszErrorHelp is non-null when a test case fails, the string
// will be part of the logging output.
//
LPWSTR pwszErrorHelp;
} TESTCASE, *PTESTCASE;
//
// Struct: KNOWN_ERROR_INFO
// Purpose: Data regarding a known error in the Microsoft CSP's
//
typedef struct _KNOWN_ERROR_INFO
{
KNOWN_ERROR_ID KnownErrorID;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwServicePackMajor;
DWORD dwServicePackMinor;
DWORD dwErrorLevel;
} KNOWN_ERROR_INFO, *PKNOWN_ERROR_INFO;
//
// Struct: ALGNODE
// Purpose: A list-node structure that stores information about each algorithm
// supported by the CSP under test.
//
typedef struct _ALGNODE
{
PROV_ENUMALGS_EX ProvEnumalgsEx;
BOOL fIsRequiredAlg;
BOOL fIsKnownAlg;
struct _ALGNODE *pAlgNodeNext;
} ALGNODE, *PALGNODE;
//
// Struct: CSPINFO
// Purpose: This struct is used to pass data that has been gathered about
// the CSP under test through the testing routines.
//
typedef struct _CSPINFO
{
PALGNODE pAlgList;
LPWSTR pwszCSPName;
DWORD dwCSPInternalClass;
DWORD dwExternalProvType;
DWORD dwInternalProvType;
DWORD dwSigKeysizeInc;
DWORD dwKeyXKeysizeInc;
DWORD dwKeySpec;
TESTCASE TestCase;
//
// This flag is set to true if the CSP under test is a
// Smart Card CSP.
//
BOOL fSmartCardCSP;
//
// For SmartCard CSP's, this flag will be set to true after the execution
// of the first CSP entry point that is expected to have resulted in
// the user being prompted to enter the card PIN. For software CSP's
// this field is ignored.
//
BOOL fPinEntered;
} CSPINFO, *PCSPINFO;
typedef BOOL (*PFN_CSPTEST)(PCSPINFO pCspInfo);
#endif