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

📄 adminoptions.c

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

	$Id: AdminOptions.c,v 1.37 2002/11/16 19:33:21 pbj Exp $
____________________________________________________________________________*/

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

#include "pgpUtilities.h"
#include "pgpClientLib.h"
#include "pgpClientPrefs.h"
#include "pgpNetPrefs.h"
#include "pgpHashPrefs.h"
#include "pgpFileSpec.h"
#include "pgpVersionHeader.h"

#define DEFAULT_USERINSTALLDIR	"C:\\Program Files\\PGP Corporation\\PGP"


void InitAdminOptions(PGPContextRef pgpContext, pgpConfigInfo *pConfig,
					  PGPBoolean bIsActiveX)
{
	PGPclOpenDefaultKeyrings(pgpContext, kPGPOpenKeyDBFileOptions_None, 
		&(pConfig->keyDB));

	pConfig->pgpContext = pgpContext;
	PGPNewTLSContext(pgpContext, &(pConfig->tlsContext));
	pConfig->memoryMgr = PGPPeekContextMemoryMgr(pConfig->pgpContext);
	pConfig->szAdminInstaller = NULL;
	pConfig->szClientInstaller = NULL;

	pConfig->szUserInstallDir = (char *) PGPNewData(pConfig->memoryMgr,
											strlen(DEFAULT_USERINSTALLDIR)+1, 
											kPGPMemoryMgrFlags_Clear);
	
	strcpy(pConfig->szUserInstallDir, DEFAULT_USERINSTALLDIR);
	strcpy(pConfig->szDefaultKeys, "");
	strtok(pConfig->szDefaultKeys, "."); /* Dummy call to link strtok */
	pConfig->szDefaultKeysBuffer = NULL;
	pConfig->nDefaultKeysBufferSize = 0;
	pConfig->szProductKey = NULL;
	pConfig->bActiveX = bIsActiveX;
	return;
}


void LoadAdminOptions(pgpConfigInfo *pConfig)
{
	PGPPrefRef		prefRef = pConfig->prefRef;
	PGPSize			dataSize;
	PGPByte *		pData;
	PGPPrefArray *	prefArray;
	char *			szInstallDir = NULL;

	PGPGetPrefBoolean(prefRef, kPGPPrefUseOutgoingADK, 
		&(pConfig->bUseOutgoingADK));
	PGPGetPrefBoolean(prefRef, kPGPPrefUseDHADK, 
		&(pConfig->bUseIncomingADK));
	PGPGetPrefBoolean(prefRef, kPGPPrefUsePGPdiskADK, 
		&(pConfig->bUseDiskADK));
	PGPGetPrefBoolean(prefRef, kPGPPrefEnforceIncomingADK, 
		&(pConfig->bEnforceIncomingADK));
	PGPGetPrefBoolean(prefRef, kPGPPrefEnforceOutgoingADK, 
		&(pConfig->bEnforceOutgoingADK));
	PGPGetPrefBoolean(prefRef, kPGPPrefEnforceRemoteADKClass, 
		&(pConfig->bEnforceRemoteADK));
	PGPGetPrefBoolean(prefRef, kPGPPrefEnforceMinChars, 
		&(pConfig->bEnforceMinChars));
	PGPGetPrefBoolean(prefRef, kPGPPrefEnforceMinQuality, 
		&(pConfig->bEnforceMinQuality));
	PGPGetPrefBoolean(prefRef, kPGPPrefAutoSignTrustCorp,
		&(pConfig->bAutoSignTrustCorp));
	PGPGetPrefBoolean(prefRef, kPGPPrefMetaIntroducerCorp,
		&(pConfig->bMetaIntroducerCorp));
	PGPGetPrefBoolean(prefRef, kPGPPrefAllowKeyGeneration,
		&(pConfig->bAllowKeyGen));
	PGPGetPrefBoolean(prefRef, kPGPPrefPresetKeyGeneration,
		&(pConfig->bSetKeyGen));
	PGPGetPrefBoolean(prefRef, kPGPPrefGenerateKeysOnSmartCard, 
		&(pConfig->bUseSmartCard));
	PGPGetPrefBoolean(prefRef, kPGPPrefAllowConventionalEncryption,
		&(pConfig->bAllowConventionalEncryption));
	PGPGetPrefBoolean(prefRef, kPGPPrefAllowEncryptInvalidKeys,
		&(pConfig->bAllowEncryptInvalidKeys));
	PGPGetPrefBoolean(prefRef, kPGPPrefAllowKeySigning,
		&(pConfig->bAllowKeySigning));
	PGPGetPrefBoolean(prefRef, kPGPPrefAutoAddExchangeServerAddress,
		&(pConfig->bAutoAddExchangeServerAddress));
	PGPGetPrefBoolean(prefRef, kPGPPrefAddLotusNotesUserID,
		&(pConfig->bAutoAddLotusNotesAddress));
	PGPGetPrefBoolean(prefRef, kPGPPrefUpdateAllKeys,
		&(pConfig->bUpdateAllKeys));
	PGPGetPrefBoolean(prefRef, kPGPPrefUpdateTrustedIntroducers,
		&(pConfig->bUpdateTrustedIntroducers));
	PGPGetPrefBoolean(prefRef, kPGPPrefAutoAddRevoker,
		&(pConfig->bAutoAddRevoker));
	PGPGetPrefBoolean(prefRef, kPGPPrefKeyGenX509CertRequest,
		&(pConfig->bKeyGenCertRequest));
	PGPGetPrefBoolean(prefRef, kPGPPrefAllowManualX509CertRequest,
		&(pConfig->bAllowManualCertRequest));
	PGPGetPrefBoolean(prefRef, kPGPPrefAutoUpdateX509CRL,
		&(pConfig->bAutoUpdateCRL));
	PGPGetPrefBoolean(prefRef, kPGPPrefUpdatePrefs,
		&(pConfig->bUpdateAdminPrefs));
	PGPGetPrefBoolean(prefRef, kPGPPrefAlwaysSendKeys,
		&(pConfig->bAlwaysSendKeys));
	PGPGetPrefBoolean(prefRef, kPGPPrefAutoKeyReconstruction,
		&(pConfig->bAutoKeyReconstruction));
	PGPGetPrefBoolean(prefRef, kPGPPrefAutoSignRootCAKey,
		&(pConfig->bAutoSignRootCAKey));
	PGPGetPrefBoolean(prefRef, kPGPPrefCopyClientPrefs, 
		&(pConfig->bCopyClientPrefs));
	PGPGetPrefBoolean(prefRef, kPGPPrefRemainSilentAfterInstall,
		&(pConfig->bRemainSilentAfterInstall));
	PGPGetPrefBoolean(prefRef, kPGPPrefPreselectInstall, 
		&(pConfig->bPreselectInstall));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallPrograms, 
		&(pConfig->bInstallPrograms));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallLogin, 
		&(pConfig->bInstallLogin));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallDisk, 
		&(pConfig->bInstallDisk));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallEudora, 
		&(pConfig->bInstallEudora));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallOutlook, 
		&(pConfig->bInstallOutlook));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallOutlookExpress, 
		&(pConfig->bInstallOutExpress));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallICQ, 
		&(pConfig->bInstallICQ));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallLotusNotes, 
		&(pConfig->bInstallLotus));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallGroupwise, 
		&(pConfig->bInstallGroupwise));
	PGPGetPrefBoolean(prefRef, kPGPPrefInstallDocumentation, 
		&(pConfig->bInstallManual));
	PGPGetPrefBoolean(prefRef, kPGPPrefUninstallOldPGP, 
		&(pConfig->bUninstallOld));
	PGPGetPrefBoolean(prefRef, kPGPPrefRebootAfterSilentInstall, 
		&(pConfig->bAutoReboot));

	PGPGetPrefBoolean(prefRef, kPGPPrefDiskCreate, 
		&(pConfig->bDiskCreate));
	
	PGPGetPrefNumber(prefRef, kPGPPrefMinChars, 
		&(pConfig->nMinChars));
	PGPGetPrefNumber(prefRef, kPGPPrefMinQuality, 
		&(pConfig->nMinQuality));
	PGPGetPrefNumber(prefRef, kPGPPrefKeySize, 
		&(pConfig->nKeySize));
	PGPGetPrefNumber(prefRef, kPGPPrefLDAPReconServerType, 
		&(pConfig->nReconServerType));
	PGPGetPrefNumber(prefRef, kPGPPrefDaysUpdateAllKeys,
		&(pConfig->nDaysUpdateAllKeys));
	PGPGetPrefNumber(prefRef, kPGPPrefDaysUpdateTrustedIntroducers,
		&(pConfig->nDaysUpdateTrustedIntroducers));
	PGPGetPrefNumber(prefRef, kPGPPrefDaysUpdatePrefs,
		&(pConfig->nDaysUpdatePrefs));
	PGPGetPrefNumber(prefRef, kPGPPrefKeyPublicKeyAlgorithm,
		&(pConfig->keyType));
	PGPGetPrefNumber(prefRef, kPGPPrefKeyExpiration,
		&(pConfig->keyExpiration));
	PGPGetPrefNumber(prefRef, kPGPPrefCorpKeyTrustDepth,
		&(pConfig->nCorpKeyTrustDepth));
	PGPGetPrefNumber(prefRef, kPGPPrefCertRequestType,
		&(pConfig->nCertRequestType));

	PGPGetPrefNumber(prefRef, kPGPPrefDiskSize,
		&(pConfig->nDiskSize));
	PGPGetPrefNumber(prefRef, kPGPPrefDiskAlgorithm,
		&(pConfig->nDiskAlgorithm));
	PGPGetPrefNumber(prefRef, kPGPPrefDiskFileSystem,
		&(pConfig->nDiskFileSystem));

	PGPGetPrefStringAlloc(prefRef, kPGPPrefLDAPPrefsServer, 
		&(pConfig->szLDAPServer));
	
	PGPGetPrefStringAlloc(prefRef, kPGPPrefLDAPReconServer, 
		&(pConfig->szReconServer));
	
	PGPGetPrefStringAlloc(prefRef, kPGPPrefInstallDir, 
		&szInstallDir);

	if (szInstallDir != NULL)
	{
		if (strlen(szInstallDir) > 0)
		{
			PGPFreeData(pConfig->szUserInstallDir);
			pConfig->szUserInstallDir = szInstallDir;
		}
		else
			PGPFreeData(szInstallDir);
	}
	
	PGPGetPrefData(prefRef, kPGPPrefOutgoingADKID, &dataSize, &pData);
	if (pData != NULL)
	{
		memcpy(pConfig->outgoingADKID.opaqueBytes, pData, dataSize);
		PGPFreeData(pData);
		pConfig->bUseOutgoingADK = TRUE;
	}
	else
		pConfig->bUseOutgoingADK = FALSE;
	
	PGPGetPrefData(prefRef, kPGPPrefDHADKID, &dataSize, &pData);
	if (pData != NULL)
	{
		memcpy(pConfig->incomingADKID.opaqueBytes, pData, dataSize);
		PGPFreeData(pData);
		pConfig->bUseIncomingADK = TRUE;
	}
	else
		pConfig->bUseIncomingADK = FALSE;
	
	PGPGetPrefData(prefRef, kPGPPrefPGPdiskADKKeyID, &dataSize, &pData);
	if (pData != NULL)
	{
		memcpy(pConfig->diskADKID.opaqueBytes, pData, dataSize);
		PGPFreeData(pData);
		pConfig->bUseDiskADK = TRUE;
	}
	else
		pConfig->bUseDiskADK = FALSE;
	
	PGPGetPrefData(prefRef, kPGPPrefCorpKeyID, &dataSize, &pData);
	if (pData != NULL)
	{
		memcpy(pConfig->corpKeyID.opaqueBytes, pData, dataSize);
		PGPFreeData(pData);
		pConfig->bAutoSignTrustCorp = TRUE;
	}
	else
		pConfig->bAutoSignTrustCorp = FALSE;
	
	PGPGetPrefData(prefRef, kPGPPrefRevokerKeyID, &dataSize, &pData);
	if (pData != NULL)
	{
		memcpy(pConfig->revokerKeyID.opaqueBytes, pData, dataSize);
		PGPFreeData(pData);
		pConfig->bAutoAddRevoker = TRUE;
	}
	else
		pConfig->bAutoAddRevoker = FALSE;
	
	pConfig->avData = NULL;
	pConfig->avDataSize = 0;
	PGPGetPrefNumber(prefRef, kPGPPrefCAType, &(pConfig->nCAType));
	if (pConfig->nCAType != kPGPKeyServerClass_Invalid)
		PGPGetPrefData(prefRef, kPGPPrefExtraAVPairs, &(pConfig->avDataSize), 
			&(pConfig->avData));

	pConfig->defaultKeys = NULL;
	pConfig->nNumDefaultKeys = 0;

	PGPGetPrefArray(prefRef, kPGPPrefDefaultKeys, &prefArray);
	if (prefArray != NULL)
	{
		PGPSize dataSize;
		void *pData;

		PGPGetPrefArrayByte(prefRef, prefArray, 0, &dataSize, &pData);
		if (pData != NULL)
		{
			UINT nIndex;

			PGPFreeData(pData);

			pConfig->defaultKeys = (PGPKeyID *) PGPNewData(pConfig->memoryMgr,
												sizeof(PGPKeyID) *
												prefArray->numElements,
												kPGPMemoryMgrFlags_Clear);

			pConfig->nNumDefaultKeys = prefArray->numElements;

			for (nIndex=0; nIndex<prefArray->numElements; nIndex++)
			{
				PGPGetPrefArrayByte(prefRef, prefArray, nIndex, &dataSize,
					&pData);
				memcpy(pConfig->defaultKeys[nIndex].opaqueBytes, pData,
					dataSize);
				PGPFreeData(pData);
			}
		}

		PGPFreePrefArray(prefArray);
	}
	
	return;
}


void AdminOptions(HWND hwndMain, pgpConfigInfo *pConfig)
{
	PROPSHEETPAGE		psp[NUM_ADMIN_PAGES];
	PROPSHEETHEADER		psh;
	int					nIndex;
	int					nNumPages;
	InstallerProduct	nProduct;

	pConfig->bCancel = FALSE;
	pConfig->bCenter = TRUE;
	pConfig->nPageCount = 0;
	pConfig->nApplyCount = 0;
	pConfig->bApplied = FALSE;
	nNumPages = 0;
	nProduct = GetInstalledProduct(NULL);

	// Set the values common to all pages

	for (nIndex=0; nIndex<NUM_ADMIN_PAGES; nIndex++)
	{
		psp[nIndex].dwSize		= sizeof(PROPSHEETPAGE);
		psp[nIndex].dwFlags		= PSP_HASHELP;
		psp[nIndex].hInstance	= g_hInstance;
		psp[nIndex].pszTemplate	= NULL;
		psp[nIndex].hIcon		= NULL;
		psp[nIndex].pszTitle	= NULL;
		psp[nIndex].pfnDlgProc	= NULL;
		psp[nIndex].lParam		= (LPARAM) pConfig;
		psp[nIndex].pfnCallback	= NULL;
		psp[nIndex].pcRefParent	= NULL;
	}

	if (nProduct & (Installer_PGPds | Installer_PGPmail | Installer_PGPdisk | 
		Installer_PGPvpn))
	{
		// Set up the additional decryption key page
		
		psp[nNumPages].pszTemplate	= MAKEINTRESOURCE(IDD_ADK);
		psp[nNumPages].pfnDlgProc	= (DLGPROC) ADKDlgProc;
		nNumPages++;
		
		// Set up the pass phrase page
		
		psp[nNumPages].pszTemplate	= MAKEINTRESOURCE(IDD_PASSPHRASE);
		psp[nNumPages].pfnDlgProc	= (DLGPROC) PassPhraseDlgProc;
		nNumPages++;

⌨️ 快捷键说明

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