clerror.c

来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 392 行

C
392
字号
/*____________________________________________________________________________
	Copyright (C) 2002 PGP Corporation
	All rights reserved.
	
	CLerror.c - convert error codes to strings and display in messagebox
	
	$Id: CLerror.c,v 1.16 2002/10/29 17:38:19 pbj Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"

// project header files
#include "PGPclx.h"

// external globals
extern HINSTANCE g_hInst;

//	_____________________________________
//
//	get descriptive string for error code

PGPError PGPclExport 
PGPclErrorToString (
		INT			iCode, 
		LPSTR		szString, 
		PGPUInt32	uLen,
		PGPUInt32*	puType) 
{
	PGPError	err			= kPGPError_NoErr;
	UINT		uType		= kPGPclErrorType_Error;
	UINT		uIDS;

	if (IsntPGPError (iCode)) return FALSE;

	switch (iCode) {
		case kPGPError_UserAbort :
		case kPGPError_Interrupted :
		case kPGPError_Win32_AlreadyOpen :
		case kPGPError_Win32_UserNotInitialized :
			return err;

		case kPGPError_Win32_NoSecretKeys :
			uIDS = IDS_ERR_NOSECRETKEYS;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_Win32_Expired :
			uIDS = IDS_ERR_EXPIRED;
			break;

		case kPGPError_Win32_NoSigningKey :
			uIDS = IDS_ERR_NOSIGNINGKEYFORSEARCH;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_Win32_ImageTooBig :
			uIDS = IDS_ERR_IMAGETOOBIG;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_Win32_InvalidImage :
			uIDS = IDS_ERR_INVALIDIMAGE;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_Win32_InvalidComctl32 :
			uIDS = IDS_ERR_INVALIDCOMMONCONTROLS;
			break;

		case kPGPError_Win32_InvalidSHFolder :
			uIDS = IDS_ERR_INVALIDSHFOLDER;
			break;

		case kPGPError_Win32_UnsupportedPlatform :
			uIDS = IDS_ERR_UNSUPPORTEDPLATFORM;
			break;

		case kPGPError_Win32_UnsupportedKeyType :
			uIDS = IDS_ERR_UNSUPPORTEDKEYTYPE;
			break;

		case kPGPError_Win32_NoRootCACertPrefs :
			uIDS = IDS_ERR_NOROOTCACERT;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_Win32_NoCAServerPrefs :
			uIDS = IDS_ERR_NOCASERVER;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_Win32_InvalidCurrentDate :
			uIDS = IDS_ERR_INVALIDCURRENTDATE;
			break;

		case kPGPError_Win32_PrefRefNoLongerValid :
			uIDS = IDS_ERR_COULDNOTWRITEPREFS;
			break;

		case kPGPError_Win32_PrefsHashBad :
			uIDS = IDS_ERR_BADPREFSHASH;
			break;

		case kPGPError_Win32_NetPrefsHashBad :
			uIDS = IDS_ERR_BADNETPREFSHASH;
			break;

		case kPGPError_Win32_NoPrefsServiceResponse :
			uIDS = IDS_ERR_PREFSSERVICENOTRESPONDING;
			break;

		case kPGPError_RPCFailed :
			uIDS = IDS_ERR_CANNOTCONNECTTOSDKSERVICE;
			break;

		case kPGPError_OutOfMemory :
			uIDS = IDS_ERR_OUTOFMEMORY;
			break;

		case kPGPError_CantOpenFile :
		case kPGPError_FileNotFound :		//???
			uIDS = IDS_ERR_NOFILE;
			break;

		case kPGPError_FilePermissions :
		case kPGPError_FileLocked :
			uIDS = IDS_ERR_FILEPERMISSIONS;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_WriteFailed :
		case kPGPError_DiskFull :			//???
			uIDS = IDS_ERR_KEYIOWRITING;
			break;

		case kPGPError_IllegalFileOp:
			uIDS = IDS_ERR_INVALIDFILEOPERROR;
			break;

		case kPGPError_IncompatibleAPI :
			uIDS = IDS_ERR_INCOMPATIBLESDKAPI;
			break;

		case kPGPError_BadPassphrase :
		case kPGPError_MissingPassphrase :
			uIDS = IDS_ERR_WRONGKEYPASSPHRASE;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_BadPacket :
			uIDS = IDS_ERR_CORRUPTPACKET;
			break;

		case kPGPError_DuplicateUserID :
			uIDS = IDS_ERR_DUPLICATEUSERID;
			break;

		case kPGPError_DuplicateCert :
			uIDS = IDS_ERR_DUPLICATECERT;
			break;

		case kPGPError_NoDecryptionKeyFound :
			uIDS = IDS_ERR_EXTRACTKEYNOTEXIST;
			break;

		case kPGPError_DetachedSignatureFound :
			uIDS = IDS_ERR_DETSIGFOUND;
			break;

		case kPGPError_KeyUnusableForEncryption :
			uIDS = IDS_ERR_SIGONLYKEY;
			break;

		case kPGPError_KeyUnusableForSignature :
			uIDS = IDS_ERR_ENCRYPTONLYKEY;
			break;

		case kPGPError_RandomSeedTooSmall :
		case kPGPError_OutOfEntropy :
			uIDS = IDS_ERR_RNGNOTSEEDED;
			break;

		case kPGPError_InputFile :
			uIDS = IDS_ERR_INPUTFILENOTEXIST;
			break;

		case kPGPError_OutputBufferTooSmall :
			uIDS = IDS_ERR_OUTPUTBUFFERTOOSMALL;
			break;

		case kPGPError_KeyInvalid :
			uIDS = IDS_ERR_CANNOTUSEUNTRUSTEDKEY;
			uType = kPGPclErrorType_Alert;
			break;

		case kPGPError_FileOpFailed :
			uIDS = IDS_ERR_FILEOPFAILED;
			break;

		case kPGPError_ReadFailed :
		case kPGPError_EOF :
			uIDS = IDS_ERR_KEYRINGCORRUPT;
			break;

		case kPGPError_ServerKeyFailedPolicy :
			uIDS = IDS_ERR_KEYFAILEDPOLICY;
			break;

		case kPGPError_UnsupportedHKPFilter :
			uIDS = IDS_ERR_UNSUPPORTEDHTTPFILTER;
			break;

		case kPGPError_Win32_TokenNotInserted :
			uIDS = IDS_ERR_TOKENNOTINSERTED;
			break;

		case kPGPError_Win32_TokenParameterError :
			uIDS = IDS_ERR_TOKENPARAMETERERROR;
			break;

		case kPGPError_Win32_InvalidUnicodeChar :
			uIDS = IDS_ERR_UNICODECONVERSION;
			break;

		case kPGPError_Win32_InvalidKeyIDString :
			uIDS = IDS_ERR_INVALIDKEYIDSTRING;
			break;

		default:
			uIDS = IDS_ERR_CATCHALL;
			break;
	}

	if (uIDS == IDS_ERR_CATCHALL) 
	{
		CHAR	sz1[256];
		err = PGPGetClientErrorString (iCode, sizeof(sz1), sz1);
		if (IsntPGPError (err)) 
		{
			CHAR	sz2[256];
			LoadString (g_hInst, IDS_ERRORPREFIX, sz2, sizeof(sz2));
			lstrcat (sz2, sz1);
			lstrcpyn (szString, sz2, uLen);
			szString[uLen-1] = '\0';
		}
		else 
		{
			LoadString (g_hInst, uIDS, szString, uLen);
			wsprintf (sz1, szString, iCode);
			strncpy (szString, sz1, uLen);
			szString[uLen-1] = '\0';
		}
	}
	else 
		LoadString (g_hInst, uIDS, szString, uLen);

	if (puType)
		*puType = uType;

	return kPGPError_UnknownError;
}

//	_____________________________________
//
//	putup error messagebox (if necessary)

PGPError PGPclExport 
PGPclErrorBox (
		HWND		hwnd,
		PGPError	errIn) 
{
	PGPError	err				= kPGPError_NoErr;
	CHAR		szMessage[512];
	CHAR		szCaption[64];
	UINT		uCaptionID;
	UINT		uCaptionType;
	UINT		uFlags;

	err = PGPclErrorToString (errIn, 
			szMessage, sizeof(szMessage), &uCaptionType);

	if (IsPGPError (err)) 
	{
		uFlags = MB_OK|MB_SETFOREGROUND|MB_TASKMODAL|MB_TOPMOST;

		switch (uCaptionType) {
		case kPGPclErrorType_Warning :
			uFlags |= MB_ICONEXCLAMATION;
			uCaptionID = IDS_CAPTIONWARNING;
			break;

		case kPGPclErrorType_Alert :
			uFlags |= MB_ICONEXCLAMATION;
			uCaptionID = IDS_CAPTIONALERT;
			break;

		case kPGPclErrorType_Information :
			uFlags |= MB_ICONINFORMATION;
			uCaptionID = IDS_CAPTIONINFO;
			break;

		default :
			uFlags |= MB_ICONSTOP;
			uCaptionID = IDS_CAPTIONERROR;
			break;
		}

		LoadString (g_hInst, uCaptionID, szCaption, sizeof(szCaption));
		MessageBox (hwnd, szMessage, szCaption, uFlags);
	}

	return errIn;
}

//	_____________________________________
//
//	get descriptive string for error code

PGPError PGPclExport 
PGPclEncDecErrorToString (
		INT		iCode, 
		LPSTR	szString, 
		UINT	uLen) 
{
	PGPError	err			= kPGPError_NoErr;
	UINT		uIDS;

	if (IsntPGPError (iCode)) return FALSE;

	switch (iCode) {
		case kPGPError_UserAbort :
		case kPGPError_Interrupted :
			return err;

		default:
			uIDS = IDS_ERR_CATCHALL;
			break;
	}

	if (uIDS == IDS_ERR_CATCHALL) 
	{
		CHAR	sz1[256];
		err = PGPGetClientErrorString (iCode, sizeof(sz1), sz1);
		if (IsntPGPError (err))
		{
			CHAR	sz2[256];
			LoadString (g_hInst, IDS_ERRORPREFIX, sz2, sizeof(sz2));
			lstrcat (sz2, sz1);
			lstrcpyn (szString, sz2, uLen);
			szString[uLen-1] = '\0';
		}
		else 
		{
			LoadString (g_hInst, uIDS, szString, uLen);
			wsprintf (sz1, szString, iCode);
			strncpy (szString, sz1, uLen);
			szString[uLen-1] = '\0';
		}
	}
	else 
		LoadString (g_hInst, uIDS, szString, uLen);

	return kPGPError_UnknownError;
}

//	_____________________________________
//
//	putup error messagebox (if necessary)

PGPError PGPclExport 
PGPclEncDecErrorBox (
		HWND hWnd,
		INT iCode) 
{
	PGPError	err				= kPGPError_NoErr;
	CHAR		szMessage[512];
	CHAR		szCaption[64];

	err = PGPclEncDecErrorToString (iCode, szMessage, sizeof(szMessage));
	if (IsPGPError (err))
	{
		LoadString (g_hInst, IDS_CAPTIONERROR, szCaption, 
								sizeof(szCaption));

		MessageBox (hWnd, szMessage, szCaption, 
						MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|
						MB_TASKMODAL|MB_TOPMOST);
	}

	return err;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?