/* $Id: PKICheck.c $ */

/* A simple Windows program to display the CryptoSys PKI Details */

/* $Date: 2010-04-25 18:13:00 $ */

#define WIN32_LEAN_AND_MEAN
#define STRICT
#include <windows.h>
#include "diCrPKI.h"

/* Link to library in same dir as this source.
 * This works in MSVC and Borland - you may need to do otherwise
 * to link to the library.
 */
#if _MSC_VER >= 1400 
/* This should work in MS VS2005 and above */
#if _WIN64
	#if _DEBUG
	#define MYLIBDIR "../x64/Debug/"
	#else
	#define MYLIBDIR "../x64/Release/"
	#endif
#else
	#if _DEBUG
	#define MYLIBDIR "../Debug/"
	#else
	#define MYLIBDIR "../Release/"
	#endif
#endif
#pragma comment(lib, MYLIBDIR "diCrPKI.lib")
#elif defined(_WIN32) || defined(WIN32) 
/* Link to library in same dir as this source.
 * This works in old MSVC++ and Borland.
 */
//#pragma comment(lib, ".\\diCrPKI.lib")
#endif

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
				   LPSTR lpszCmdLine, int nCmdShow)
{
	char msg[2048];
	char compiled[255];
	char modname[MAX_PATH];
	long ver, lic, iswin64;

	/* Get details from PKI */
	ver = PKI_Version(NULL, NULL);
	PKI_CompileTime(compiled, sizeof(compiled)-1);
	PKI_ModuleName(modname, sizeof(modname)-1, 0);
	lic = PKI_LicenceType(0);
	/* New in version 3.4: check if DLL is compiled for Win64 */
	iswin64 = PKI_LicenceType(PKI_GEN_PLATFORM);	/* Returns 1 if X64 or 0 if Win32 */

	/* Compose into a string */
	wsprintf(msg, "Version=%ld\r\nLicence Type=%c\r\nModule=%s\r\nPlatform=%s\r\nCompiled=%s", 
		ver, lic, modname, (iswin64 ? "X64" : "Win32"), compiled);

	/* Display */
	MessageBox(NULL, msg, "CryptoSys PKI Check", 0);

	return 0;
}