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

📄 pkmenu.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 + -