⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
字号:
/*____________________________________________________________________________
	Copyright (C) 2002 PGP Corporation
	All rights reserved.

	$Id: Misc.c,v 1.18 2002/10/29 17:06:05 wjb Exp $
____________________________________________________________________________*/

#include <windows.h>
#include <stdio.h>
#include "PGPadmin.h"
#include "Utils.h"
#include "resource.h"

#include "PGPadminHelp.h"
#include "pgpClientLib.h"
#include "pgpNetPrefs.h"
#include "pgpHashPrefs.h"

static void sInitGUI(HWND hwndDlg, pgpConfigInfo *pConfig);

static DWORD aHelpIds[] = {
	IDC_ALLOW_CONVENTIONAL,	IDH_PGPADMIN_ALLOW_CONVENTIONAL,
	IDC_ALLOWENCRYPT,		IDH_PGPADMIN_ALLOW_ENCRYPTINVALID,
	IDC_ALLOWSIGN,			IDH_PGPADMIN_ALLOW_KEYSIGNING,
	IDC_ADDEXCH,			IDH_PGPADMIN_ADD_EXCHANGEID,
	IDC_ADDLOTUS,			IDH_PGPADMIN_ADD_LOTUSID,
	IDC_DISKCREATE,			IDH_PGPADMIN_DISK_CREATE,
	IDC_DISKSIZEEDIT,		IDH_PGPADMIN_DISK_SIZE,
	IDC_DISKSIZECOMBO,		IDH_PGPADMIN_DISK_SIZE,
	IDC_COMBODISKFS,		IDH_PGPADMIN_DISK_FILESYSTEM,
	IDC_DISKALGCOMBO,		IDH_PGPADMIN_DISK_ALGORITHM,
    0,0
};

#define	kDiskFat12FileSys		0 
#define	kDiskFat16FileSys		1 
#define	kDiskFat12Or16FileSys	2 
#define	kDiskFat32FileSys		3 
#define	kDiskNTFSFileSys		4 
#define	kDiskUnknownFileSys		5

#define	kDiskInvalidAlgorithm	0 
#define	kDiskCopyDataAlgorithm	1 
#define	kDiskOldCAST5Algorithm	2 
#define	kDiskCAST5Algorithm		3 
#define	kDiskTwoFishAlgorithm	4 
#define	kDiskAESAlgorithm		5

typedef struct
{
	TCHAR *wszString;
	PGPUInt32 iType;
} STRINGINFO;

static STRINGINFO AlgInfo[]={
	{TEXT("CAST5"),kDiskCAST5Algorithm},
	{TEXT("Twofish"),kDiskTwoFishAlgorithm}};

static STRINGINFO SizeInfo[]={
	{TEXT("KB"),1024/512},
	{TEXT("MB"),1024*1024/512},
	{TEXT("GB"),1024*1024*1024/512}};

static STRINGINFO FSInfo[]={
	{TEXT("FAT12"),kDiskFat12FileSys},
	{TEXT("FAT16"),kDiskFat16FileSys},
	{TEXT("FAT32"),kDiskFat32FileSys},
	{TEXT("NTFS"),kDiskNTFSFileSys}};

BOOL CALLBACK MiscDlgProc(HWND hwndDlg, 
						  UINT uMsg, 
						  WPARAM wParam, 
						  LPARAM lParam)
{
	BOOL			bReturnCode = FALSE;
	pgpConfigInfo *	pConfig		= NULL;

	g_hCurrentDlgWnd = hwndDlg;
	pConfig = (pgpConfigInfo *) GetWindowLong(hwndDlg, GWL_USERDATA);

	switch(uMsg)
	{
	case WM_INITDIALOG:
	{
		int i,AlgSel,FSSel,SizeSel;
		HWND hwndAlgCombo,hwndFSCombo,hwndSizeCombo;
		char szSize[100];

		CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
		pConfig = (pgpConfigInfo *) GetWindowLong(hwndDlg, GWL_USERDATA);
		SendDlgItemMessage(hwndDlg, IDC_COMMENTS, EM_SETLIMITTEXT, 60, 0);

		FSSel=AlgSel=SizeSel=0;

		hwndAlgCombo=GetDlgItem(hwndDlg,IDC_DISKALGCOMBO);

		for(i=0;i<(sizeof(AlgInfo)/sizeof(STRINGINFO));i++)
		{
			SendMessage (hwndAlgCombo, CB_ADDSTRING, 0, (LPARAM)AlgInfo[i].wszString);
			if(AlgInfo[i].iType==pConfig->nDiskAlgorithm)
				AlgSel=i;
		}

		SendMessage (hwndAlgCombo, CB_SETCURSEL, AlgSel, (LPARAM)0);
		pConfig->nDiskAlgorithm=AlgInfo[AlgSel].iType;

		hwndFSCombo=GetDlgItem(hwndDlg,IDC_COMBODISKFS);

		for(i=0;i<(sizeof(FSInfo)/sizeof(STRINGINFO));i++)
		{
			SendMessage (hwndFSCombo, CB_ADDSTRING, 0, (LPARAM)FSInfo[i].wszString);
			if(FSInfo[i].iType==pConfig->nDiskFileSystem)
				FSSel=i;
		}

		SendMessage (hwndFSCombo, CB_SETCURSEL, FSSel, (LPARAM)0);

		hwndSizeCombo=GetDlgItem(hwndDlg,IDC_DISKSIZECOMBO);

		for(i=0;i<(sizeof(SizeInfo)/sizeof(STRINGINFO));i++)
		{
			SendMessage (hwndSizeCombo, CB_ADDSTRING, 0, (LPARAM)SizeInfo[i].wszString);
			if((pConfig->nDiskSize%SizeInfo[i].iType)==0)
				SizeSel=i;
		}

		SendMessage (hwndSizeCombo, CB_SETCURSEL, SizeSel, (LPARAM)0);

		wsprintf(szSize,"%d",pConfig->nDiskSize/SizeInfo[SizeSel].iType);
		SetWindowText(GetDlgItem(hwndDlg,IDC_DISKSIZEEDIT),szSize);

		sInitGUI(hwndDlg, pConfig);
		break;
	}

	case WM_HELP:
	case WM_CONTEXTMENU:
		return PGPclHtmlHelp (hwndDlg, uMsg, wParam, lParam, 
				(char *) kPGPclAdminHelpFile, aHelpIds);

	case WM_NOTIFY:
		{
			LPNMHDR pnmh;

			pnmh = (LPNMHDR) lParam;
			switch(pnmh->code)
			{
			case PSN_HELP:
				PGPclHtmlHelp (hwndDlg, kPGPclHelpContext, 0, 0, 
						(char *) kPGPclAdminHelpFile, 
						(DWORD *) IDH_PGPADMIN_MISCDIALOG);
				break;

			default:
				bReturnCode = CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
				break;
			}
			
			break;
		}

	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDC_ALLOW_CONVENTIONAL:
			{
				if (IsDlgButtonChecked(hwndDlg, IDC_ALLOW_CONVENTIONAL) == 
					BST_CHECKED)
				{
					pConfig->bAllowConventionalEncryption = TRUE;
				}
				else
				{
					pConfig->bAllowConventionalEncryption = FALSE;
				}

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_ALLOWENCRYPT:
			{
				if (IsDlgButtonChecked(hwndDlg, IDC_ALLOWENCRYPT) == 
					BST_CHECKED)
				{
					pConfig->bAllowEncryptInvalidKeys = TRUE;
				}
				else
				{
					pConfig->bAllowEncryptInvalidKeys = FALSE;
				}

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_ALLOWSIGN:
			{
				if (IsDlgButtonChecked(hwndDlg, IDC_ALLOWSIGN) == 
					BST_CHECKED)
				{
					pConfig->bAllowKeySigning = TRUE;
				}
				else
				{
					pConfig->bAllowKeySigning = FALSE;
				}

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_ADDEXCH:
			{
				if (IsDlgButtonChecked(hwndDlg, IDC_ADDEXCH) == 
					BST_CHECKED)
				{
					pConfig->bAutoAddExchangeServerAddress = TRUE;
				}
				else
				{
					pConfig->bAutoAddExchangeServerAddress = FALSE;
				}

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_ADDLOTUS:
			{
				if (IsDlgButtonChecked(hwndDlg, IDC_ADDLOTUS) == 
					BST_CHECKED)
				{
					pConfig->bAutoAddLotusNotesAddress = TRUE;
				}
				else
				{
					pConfig->bAutoAddLotusNotesAddress = FALSE;
				}

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_DISKCREATE:
			{
				if (IsDlgButtonChecked(hwndDlg, IDC_DISKCREATE) == 
					BST_CHECKED)
				{
					pConfig->bDiskCreate = TRUE;
				}
				else
				{
					pConfig->bDiskCreate = FALSE;
				}

				sInitGUI(hwndDlg, pConfig);
				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_DISKSIZEEDIT:
		case IDC_DISKSIZECOMBO:
			{
				char szSize[100];
				PGPUInt32 uSize;
				PGPUInt32 mult;

				GetWindowText(GetDlgItem(hwndDlg,IDC_DISKSIZEEDIT),
					szSize,100);

				uSize=atoi(szSize);

				mult=SendMessage(GetDlgItem(hwndDlg,IDC_DISKSIZECOMBO),
					CB_GETCURSEL,0,0);

				uSize=uSize*SizeInfo[mult].iType;
			
				pConfig->nDiskSize=uSize;

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_COMBODISKFS:
			{
				PGPUInt32 uFS;

				uFS=SendMessage(GetDlgItem(hwndDlg,IDC_COMBODISKFS),
					CB_GETCURSEL,0,0);

				pConfig->nDiskFileSystem=FSInfo[uFS].iType;

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_DISKALGCOMBO:
			{
				PGPUInt32 uAlg;

				uAlg=SendMessage(GetDlgItem(hwndDlg,IDC_DISKALGCOMBO),
					CB_GETCURSEL,0,0);

				pConfig->nDiskAlgorithm=AlgInfo[uAlg].iType;

				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		}

		break;

	default:
		bReturnCode = CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
		break;
	}

	return(bReturnCode);
}


static void sInitGUI(HWND hwndDlg, pgpConfigInfo *pConfig)
{
	if (pConfig->bAllowConventionalEncryption)
		CheckDlgButton(hwndDlg, IDC_ALLOW_CONVENTIONAL, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_ALLOW_CONVENTIONAL, BST_UNCHECKED);
	
	if (pConfig->bAllowEncryptInvalidKeys)
		CheckDlgButton(hwndDlg, IDC_ALLOWENCRYPT, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_ALLOWENCRYPT, BST_UNCHECKED);
	
	if (pConfig->bAllowKeySigning)
		CheckDlgButton(hwndDlg, IDC_ALLOWSIGN, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_ALLOWSIGN, BST_UNCHECKED);
	
	if (pConfig->bDiskCreate)
	{
		CheckDlgButton(hwndDlg, IDC_DISKCREATE, BST_CHECKED);

		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZEEDIT), TRUE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZECOMBO), TRUE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_COMBODISKFS), TRUE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGCOMBO), TRUE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZESTATIC), TRUE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKFSSTATIC), TRUE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGSTATIC), TRUE);
	}
	else
	{
		CheckDlgButton(hwndDlg, IDC_DISKCREATE, BST_UNCHECKED);

		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZEEDIT), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZECOMBO), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_COMBODISKFS), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGCOMBO), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZESTATIC), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKFSSTATIC), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGSTATIC), FALSE);
	}

	if (pConfig->bAutoAddExchangeServerAddress)
		CheckDlgButton(hwndDlg, IDC_ADDEXCH, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_ADDEXCH, BST_UNCHECKED);

	if (pConfig->bAutoAddLotusNotesAddress)
		CheckDlgButton(hwndDlg, IDC_ADDLOTUS, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_ADDLOTUS, BST_UNCHECKED);

	return;
}


/*__Editor_settings____

	Local Variables:
	tab-width: 4
	End:
	vi: ts=4 sw=4
	vim: si
_____________________*/

⌨️ 快捷键说明

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