📄 pkmenu.c
字号:
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, &bMul, &uSel);
if (sPromiscuousSelected (uSel)) return FALSE;
if (uSel == kPGPclKeyList_Key) return TRUE;
if (uSel == kPGPclKeyList_Signature)
{
if (bMul) return FALSE;
if (uFocus == IDX_X509CERT) return TRUE;
if (uFocus == IDX_X509EXPCERT) return TRUE;
if (uFocus == IDX_X509REVCERT) return TRUE;
}
return FALSE;
}
// paste
static BOOL
sIsPasteEnabled (PPGPKEYSSTRUCT ppks)
{
if (ppks->bReadOnly) return FALSE;
if (!PKDataToPaste ()) return FALSE;
return TRUE;
}
// delete
BOOL
PKIsDeleteEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus;
PGPKeyDBObjRef obj;
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, &obj, &bMul, NULL);
if (ppks->bReadOnly) return FALSE;
if (bMul) return TRUE;
switch (uFocus) {
case IDX_NONE :
return FALSE;
case IDX_RSAUSERID :
case IDX_DSAUSERID :
if (PKIsThisTheOnlyUserID (obj))
return FALSE;
else
return TRUE;
default :
return TRUE;
}
}
// delete from server
static BOOL
sIsDeleteFromServerEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uSel;
PGPclKeyListGetSelectionInfo (ppks->hKL, NULL, NULL, NULL, &uSel);
if (sPromiscuousSelected (uSel)) return FALSE;
if (uSel != kPGPclKeyList_Key) return FALSE;
if ((ppks->klConfig.keyserver.protocol != kPGPKeyServerProtocol_LDAP) &&
(ppks->klConfig.keyserver.protocol != kPGPKeyServerProtocol_LDAPS))
{
return FALSE;
}
return TRUE;
}
// select all
static BOOL
sIsSelectAllEnabled (PPGPKEYSSTRUCT ppks)
{
return TRUE;
}
// collapse all
static BOOL
sIsCollapseAllEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, NULL, NULL);
if (uFocus == IDX_NONE) return TRUE;
return FALSE;
}
// expand all
static BOOL
sIsExpandAllEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, NULL, NULL);
if (uFocus == IDX_NONE) return TRUE;
return FALSE;
}
// collapse selected
static BOOL
sIsCollapseSelEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, NULL, NULL);
if (uFocus == IDX_NONE) return FALSE;
return TRUE;
}
// expand selected
static BOOL
sIsExpandSelEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, NULL, NULL);
if (uFocus == IDX_NONE) return FALSE;
return TRUE;
}
// certify
static BOOL
sIsCertifyEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return sSigningAllowed (uSel);
switch (uFocus) {
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_RSASECREVKEY :
case IDX_RSAPUBEXPKEY :
case IDX_RSAPUBREVKEY :
case IDX_DSASECEXPKEY :
case IDX_DSASECREVKEY :
case IDX_DSAPUBEXPKEY :
case IDX_DSAPUBREVKEY :
case IDX_RSAV4SECEXPKEY :
case IDX_RSAV4SECREVKEY :
case IDX_RSAV4PUBEXPKEY :
case IDX_RSAV4PUBREVKEY :
case IDX_RSATOKREVKEY :
case IDX_RSATOKEXPKEY :
case IDX_RSAV4TOKREVKEY :
case IDX_RSAV4TOKEXPKEY :
case IDX_ECPUBREVKEY :
case IDX_ECPUBEXPKEY :
case IDX_ECSECREVKEY :
case IDX_ECSECEXPKEY :
if (!bMul) return FALSE;
else return TRUE;
default :
return TRUE;
}
}
// enable
static BOOL
sIsEnableEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_RSASECDISKEY :
case IDX_RSAPUBDISKEY :
case IDX_DSASECDISKEY :
case IDX_DSAPUBDISKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4PUBDISKEY :
case IDX_RSATOKDISKEY :
case IDX_RSAV4TOKDISKEY :
case IDX_ECSECDISKEY :
case IDX_ECPUBDISKEY :
return TRUE;
default :
return FALSE;
}
}
// disable
static BOOL
sIsDisableEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPKeyDBObjRef obj;
PGPBoolean b, bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, &obj, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_RSAPUBKEY :
case IDX_DSAPUBKEY :
case IDX_RSAV4PUBKEY :
case IDX_ECPUBKEY :
return TRUE;
case IDX_RSASECKEY :
case IDX_RSASECSHRKEY :
case IDX_DSASECKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSATOKKEY :
case IDX_RSAV4TOKKEY :
case IDX_ECSECKEY :
case IDX_ECSECSHRKEY :
PGPGetKeyDBObjBooleanProperty (obj,
kPGPKeyProperty_IsAxiomatic, &b);
if (b) return FALSE;
else return TRUE;
default :
return FALSE;
}
}
// disable on server
static BOOL
sIsDisableOnServerEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uSel;
PGPclKeyListGetSelectionInfo (ppks->hKL, NULL, NULL, NULL, &uSel);
if (sPromiscuousSelected (uSel)) return FALSE;
if (uSel != kPGPclKeyList_Key) return FALSE;
if ((ppks->klConfig.keyserver.protocol != kPGPKeyServerProtocol_LDAP) &&
(ppks->klConfig.keyserver.protocol != kPGPKeyServerProtocol_LDAPS))
{
return FALSE;
}
return TRUE;
}
// add user id
static BOOL
sIsAddUserEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_RSASECKEY :
case IDX_RSASECDISKEY :
case IDX_RSASECSHRKEY :
case IDX_DSASECKEY :
case IDX_DSASECDISKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSATOKKEY :
case IDX_RSATOKDISKEY :
case IDX_RSAV4TOKKEY :
case IDX_RSAV4TOKDISKEY :
case IDX_ECSECKEY :
case IDX_ECSECDISKEY :
case IDX_ECSECSHRKEY :
return TRUE;
default :
return FALSE;
}
}
// add photo id
static BOOL
sIsAddPhotoEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_DSASECKEY :
case IDX_DSASECDISKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSAV4TOKKEY :
case IDX_RSAV4TOKDISKEY :
case IDX_ECSECKEY :
case IDX_ECSECDISKEY :
case IDX_ECSECSHRKEY :
return TRUE;
default :
return FALSE;
}
}
// add revoker
static BOOL
sIsAddRevokerEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPBoolean bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, NULL, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_DSASECKEY :
case IDX_DSASECDISKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSAV4TOKKEY :
case IDX_RSAV4TOKDISKEY :
case IDX_ECSECKEY :
case IDX_ECSECDISKEY :
case IDX_ECSECSHRKEY :
return TRUE;
default :
return FALSE;
}
}
// add X509 certificate
static BOOL
sIsAddCertificateEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uFocus, uSel;
PGPKeyDBObjRef obj;
PGPBoolean b, bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, &obj, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_RSASECKEY :
case IDX_RSASECDISKEY :
case IDX_RSASECSHRKEY :
case IDX_DSASECKEY :
case IDX_DSASECDISKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSATOKKEY :
case IDX_RSATOKDISKEY :
case IDX_RSAV4TOKKEY :
case IDX_RSAV4TOKDISKEY :
case IDX_ECSECKEY :
case IDX_ECSECDISKEY :
case IDX_ECSECSHRKEY :
return TRUE;
case IDX_RSAUSERID :
case IDX_DSAUSERID :
PGPGetKeyDBObjBooleanProperty (PGPPeekKeyDBObjKey (obj),
kPGPKeyProperty_IsSecret, &b);
if (b) return TRUE;
else return FALSE;
default :
return FALSE;
}
}
// revoke
static BOOL
sIsRevokeEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uSel, uFocus;
PGPKeyDBObjRef obj;
PGPBoolean b1, b2, bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, &obj, &bMul, &uSel);
if (ppks->bReadOnly) return FALSE;
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_RSASECKEY :
case IDX_RSASECDISKEY :
case IDX_RSASECSHRKEY :
case IDX_DSASECKEY :
case IDX_DSASECDISKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSATOKKEY :
case IDX_RSATOKDISKEY :
case IDX_RSAV4TOKKEY :
case IDX_RSAV4TOKDISKEY :
case IDX_ECSECKEY :
case IDX_ECSECDISKEY :
case IDX_ECSECSHRKEY :
PGPGetKeyDBObjBooleanProperty (obj,
kPGPKeyProperty_CanSign, &b2);
if (b2) return TRUE;
else return FALSE;
case IDX_RSAPUBKEY :
case IDX_RSAPUBDISKEY :
case IDX_DSAPUBKEY :
case IDX_DSAPUBDISKEY :
case IDX_RSAV4PUBKEY :
case IDX_RSAV4PUBDISKEY :
case IDX_ECPUBKEY :
case IDX_ECPUBDISKEY :
PGPGetKeyDBObjBooleanProperty (obj,
kPGPKeyProperty_IsRevocable, &b1);
if (b1) return TRUE;
else return FALSE;
case IDX_CERT :
case IDX_BADCERT :
case IDX_EXPORTCERT :
case IDX_TRUSTEDCERT :
case IDX_METACERT :
PGPGetKeyDBObjBooleanProperty (obj,
kPGPSigProperty_IsMySig, &b1);
if (b1) return TRUE;
else return FALSE;
default :
return FALSE;
}
}
// set as default
static BOOL
sIsSetAsDefaultEnabled (PPGPKEYSSTRUCT ppks)
{
PGPUInt32 uSel, uFocus;
PGPKeyDBObjRef obj;
PGPBoolean b, bMul;
PGPclKeyListGetSelectionInfo (ppks->hKL, &uFocus, &obj, &bMul, &uSel);
if (sPromiscuousSelected (uSel)) return FALSE;
if (bMul) return FALSE;
switch (uFocus) {
case IDX_RSASECKEY :
case IDX_RSASECDISKEY :
case IDX_RSASECSHRKEY :
case IDX_DSASECKEY :
case IDX_DSASECDISKEY :
case IDX_DSASECSHRKEY :
case IDX_RSAV4SECKEY :
case IDX_RSAV4SECDISKEY :
case IDX_RSAV4SECSHRKEY :
case IDX_RSATOKKEY :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -