stdafx.h

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently

#pragma once

#define WIN32_LEAN_AND_MEAN  // Exclude rarely-used stuff from Windows headers
#include <stdio.h>
#include <tchar.h>
#include <map>

#include "pkif.h"

enum Commands
{

 CMD_QUIT = 0,
 
 //Environment definition commands
 CMD_NEW_DEFAULT_MEDIATOR,
 CMD_NEW_MEDIATOR_WITH_OCSP,
 CMD_ADD_LDAP,
 CMD_SPECIFY_DEFAULT_SETTINGS, 
 CMD_USE_DEFAULT_SETTINGS,

 //Certification path processing-related commands
 CMD_BUILD_PATH,
 CMD_VAL_PATH,
 CMD_BUILD_AND_VAL_PATH,

 //Signature processing-related commands
     CMD_GEN_SIG,
 CMD_VER_SIG,

 //PKI encryption-related commands
 CMD_ENC_MSG,
 CMS_DEC_MSG

};

//UTILITY FUNCTIONS
void DisplayMainMenu();
void CleanGlobals();
bool ProcessCommand();
long filesize(FILE *stream);
void Pause();

CPKIFPathSettingsPtr GetPathSettingsFromUser();
CPKIFTimePtr GetTimeOfInterest();
void GetPolicyOIDs(vector<CPKIFPolicyInformationPtr>& oids);
CPKIFCertificatePtr GetCertificate(const char* prompt);

bool SolicitBool(const char* prompt);
bool SolicitInteger(const char* prompt);
bool SolicitFile(const char* prompt, char** ppBuf, int* pLenOfBuf);
bool WriteToFile(const char* prompt, const unsigned char* pBuf, int nLenOfBuf);

//COMMAND FUNCTIONS
void Cmd_Quit();

void Cmd_NewDefaultMediator();
void Cmd_NewMediatorWithOCSP();
void Cmd_AddLDAP();
void Cmd_SpecifyDefaultSettings();
void Cmd_UseDefaultSettings();

void Cmd_BuildPath();
void Cmd_ValidatePath();
void Cmd_BuildAndValidatePath();

void Cmd_GenerateSignature();
void Cmd_VerifySignature();

void Cmd_EncryptMessage();
void Cmd_DecryptMessage();