📄 adminoptions.c
字号:
/*____________________________________________________________________________
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 + -