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

📄 kmmenu.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*____________________________________________________________________________
	Copyright (C) 1998 Network Associates, Inc.
	All rights reserved.
	
	KMMenu.c - handle menu enabling/disabling chores
	

	$Id: KMMenu.c,v 1.31 1999/04/01 23:15:28 pbj Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"

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

// External globals
extern HINSTANCE g_hInst;

//	___________________________________________________
//
//	determine if each action is enabled or not

//	copy 
static BOOL 
sIsCopyEnabled (PKEYMAN pKM) {
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMFocusedObjectType (pKM) != OBJECT_KEY) return FALSE;
	return TRUE;
}

//	paste 
static BOOL 
sIsPasteEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (!KMDataToPaste ()) return FALSE;
	return TRUE;
}

//	delete 
BOOL 
IsDeleteEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMMultipleSelected (pKM)) return TRUE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_NONE : 
			return FALSE;
		case IDX_RSAUSERID :
		case IDX_DSAUSERID :
			if (KMIsThisTheOnlyUserID (pKM, 
					(PGPUserIDRef)KMFocusedObject (pKM))) 
				return FALSE;
			else
				return TRUE;
		default :
			return TRUE;
	}
}

//	delete from server
static BOOL 
sIsDeleteFromServerEnabled (PKEYMAN pKM) {
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMFocusedObjectType (pKM) != OBJECT_KEY) return FALSE;
	if ((pKM->keyserver.protocol != kPGPKeyServerType_LDAP) &&
		(pKM->keyserver.protocol != kPGPKeyServerType_LDAPS)) 
		return FALSE;
	return TRUE;
}

//	select all 
static BOOL 
sIsSelectAllEnabled (PKEYMAN pKM) {
	return TRUE;
}

//	collapse all 
static BOOL 
sIsCollapseAllEnabled (PKEYMAN pKM) {
	if (KMFocusedItemType (pKM) == IDX_NONE) return TRUE;
	return FALSE;
}

//	expand all 
static BOOL 
sIsExpandAllEnabled (PKEYMAN pKM) {
	if (KMFocusedItemType (pKM) == IDX_NONE) return TRUE;
	return FALSE;
}

//	collapse selected 
static BOOL 
sIsCollapseSelEnabled (PKEYMAN pKM) {
	if (KMFocusedItemType (pKM) == IDX_NONE) return FALSE;
	return TRUE;
}

//	expand selected 
static BOOL 
sIsExpandSelEnabled (PKEYMAN pKM) {
	if (KMFocusedItemType (pKM) == IDX_NONE) return FALSE;
	return TRUE;
}

//	certify 
static BOOL 
sIsCertifyEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return KMSigningAllowed (pKM);
	switch (KMFocusedItemType (pKM)) {
		case IDX_NONE : 
			return FALSE;
		case IDX_CERT :
		case IDX_REVCERT :
		case IDX_EXPCERT :
		case IDX_BADCERT :
		case IDX_EXPORTCERT :
		case IDX_TRUSTEDCERT :
		case IDX_METACERT :
			return FALSE;
		case IDX_RSASECEXPKEY :
		case IDX_DSASECEXPKEY :
		case IDX_RSASECREVKEY :
		case IDX_DSASECREVKEY :
		case IDX_RSAPUBEXPKEY :
		case IDX_DSAPUBEXPKEY :
		case IDX_RSAPUBREVKEY :
		case IDX_DSAPUBREVKEY :
			if (!KMMultipleSelected (pKM)) return FALSE;
			else return TRUE;
		default :
			return TRUE;
	}
}

// enable 
static BOOL 
sIsEnableEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_RSASECDISKEY :
		case IDX_DSASECDISKEY :
		case IDX_RSAPUBDISKEY :
		case IDX_DSAPUBDISKEY :
			return TRUE;
		default :
			return FALSE;
	}
}

//	disable 
static BOOL 
sIsDisableEnabled (PKEYMAN pKM) {
	PGPBoolean b;

	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_RSAPUBKEY :
		case IDX_DSAPUBKEY :
			return TRUE;
		case IDX_RSASECKEY :
		case IDX_RSASECSHRKEY :
		case IDX_DSASECKEY :
		case IDX_DSASECSHRKEY :
			PGPGetKeyBoolean ((PGPKeyRef)KMFocusedObject (pKM),
				kPGPKeyPropIsAxiomatic, &b);
			if (b) return FALSE;
			else return TRUE;
		default :
			return FALSE;
	}
}

//	disable on server
static BOOL 
sIsDisableOnServerEnabled (PKEYMAN pKM) {
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMFocusedObjectType (pKM) != OBJECT_KEY) return FALSE;
	if ((pKM->keyserver.protocol != kPGPKeyServerType_LDAP) &&
		(pKM->keyserver.protocol != kPGPKeyServerType_LDAPS)) 
		return FALSE;
	return TRUE;
}

//	add user id 
static BOOL 
sIsAddUserEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_RSASECKEY :
		case IDX_DSASECKEY :
		case IDX_RSASECDISKEY :
		case IDX_DSASECDISKEY :
		case IDX_RSASECSHRKEY :
		case IDX_DSASECSHRKEY :
			return TRUE;
		default :
			return FALSE;
	}
}

//	add photo id 
static BOOL 
sIsAddPhotoEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_DSASECKEY :
		case IDX_DSASECDISKEY :
		case IDX_DSASECSHRKEY :
			return TRUE;
		default :
			return FALSE;
	}
}

//	add revoker 
static BOOL 
sIsAddRevokerEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_DSASECKEY :
		case IDX_DSASECDISKEY :
		case IDX_DSASECSHRKEY :
			return TRUE;
		default :
			return FALSE;
	}
}

//	add X509 certificate 
static BOOL 
sIsAddCertificateEnabled (PKEYMAN pKM) {
	PGPKeyRef	key;
	PGPBoolean	b;

	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_RSASECKEY :
		case IDX_DSASECKEY :
		case IDX_RSASECDISKEY :
		case IDX_DSASECDISKEY :
		case IDX_RSASECSHRKEY :
		case IDX_DSASECSHRKEY :
			return TRUE;
		case IDX_RSAUSERID :
		case IDX_DSAUSERID :
			key = KMGetKeyFromUserID (
					pKM, (PGPUserIDRef)KMFocusedObject (pKM));
			PGPGetKeyBoolean (key, kPGPKeyPropIsSecret, &b);
			if (b) return TRUE;
			else return FALSE;
		default :
			return FALSE;
	}
}

//	revoke 
static BOOL 
sIsRevokeEnabled (PKEYMAN pKM) {
	PGPBoolean b1, b2;

	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;

	switch (KMFocusedItemType (pKM)) {
		case IDX_RSASECKEY :
		case IDX_DSASECKEY :
		case IDX_RSASECDISKEY :
		case IDX_DSASECDISKEY :
		case IDX_RSASECSHRKEY :
		case IDX_DSASECSHRKEY :
			PGPGetKeyBoolean ((PGPKeyRef)KMFocusedObject (pKM),
				kPGPKeyPropCanSign, &b2);
			if (b2) return TRUE;
			else return FALSE;

		case IDX_RSAPUBKEY :
		case IDX_DSAPUBKEY :
		case IDX_RSAPUBDISKEY :
		case IDX_DSAPUBDISKEY :
			PGPGetKeyBoolean ((PGPKeyRef)KMFocusedObject (pKM),
				kPGPKeyPropIsRevocable, &b1);
 			if (b1) return TRUE;
			else return FALSE;

		case IDX_CERT :
		case IDX_BADCERT :
		case IDX_EXPORTCERT :
		case IDX_TRUSTEDCERT :
		case IDX_METACERT :
			PGPGetSigBoolean ((PGPSigRef)KMFocusedObject (pKM), 
				kPGPSigPropIsMySig, &b1);
			if (b1) return TRUE;
			else return FALSE;

		default :
			return FALSE;
	}
}

//	set as default
static BOOL 
sIsSetAsDefaultEnabled (PKEYMAN pKM) {
	PGPBoolean b;

	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_RSASECKEY :
		case IDX_RSASECDISKEY :
		case IDX_RSASECSHRKEY :
		case IDX_DSASECKEY :
		case IDX_DSASECDISKEY :
		case IDX_DSASECSHRKEY :
			PGPGetKeyBoolean ((PGPKeyRef)KMFocusedObject (pKM),
				kPGPKeyPropCanSign, &b);
			if (b) return TRUE;
///			PGPGetKeyBoolean ((PGPKeyRef)KMFocusedObject (pKM),
///				kPGPKeyPropCanEncrypt, &b);
///			if (b) return TRUE;
			return FALSE;
		default :
			return FALSE;
	}
}

//	set as primary
static BOOL 
sIsSetAsPrimaryEnabled (PKEYMAN pKM) {
	if (pKM->ulOptionFlags & KMF_READONLY) return FALSE;
	if (KMPromiscuousSelected (pKM)) return FALSE;
	if (KMMultipleSelected (pKM)) return FALSE;
	switch (KMFocusedItemType (pKM)) {
		case IDX_RSAUSERID :
		case IDX_DSAUSERID :
			return (!KMIsThisThePrimaryUserID (pKM, 
				(PGPUserIDRef)KMFocusedObject (pKM)));
		default :
			return FALSE;
	}
}

⌨️ 快捷键说明

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