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