klmisc.c
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 319 行
C
319 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
KLMisc.c - KeyList miscellaneous routines
$Id: KLMisc.c,v 1.16 2002/08/28 02:06:09 wjb Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "PGPclx.h"
#include "PGPklx.h"
// external global variables
extern HINSTANCE g_hInst;
// ___________________________________________________
//
// Private memory allocation routine
VOID* KLAlloc (LONG size) {
VOID* p;
p = malloc (size);
if (p) {
memset (p, 0, size);
}
return p;
}
// ___________________________________________________
//
// Private memory deallocation routine
VOID KLFree (VOID* p) {
if (p) {
free (p);
}
}
// ___________________________________________________
//
// Get and truncate the name of a userid.
BOOL
KLGetUserIDName (
PGPKeyDBObjRef userid,
LPSTR sz,
UINT uLen)
{
PGPError err = kPGPError_NoErr;
UINT u;
PGPBoolean bAttrib;
PGPInt32 iType;
PGPGetKeyDBObjBooleanProperty (userid,
kPGPUserIDProperty_IsAttribute, &bAttrib);
if (bAttrib)
{
PGPGetKeyDBObjNumericProperty (userid,
kPGPUserIDProperty_AttributeType, &iType);
switch (iType) {
case kPGPAttribute_Image :
LoadString (g_hInst, IDS_PHOTOUSERID, sz, uLen);
break;
default :
LoadString (g_hInst, IDS_UNKNOWNFORMAT, sz, uLen);
break;
}
}
else
{
PGPclGetUserIDNameUTF8 (userid, sz, uLen, &u);
}
switch (err) {
case kPGPError_BufferTooSmall :
case kPGPError_NoErr :
return TRUE;
default :
PGPclErrorBox (NULL, err);
return FALSE;
}
}
// ___________________________________________________
//
// Get and truncate the name of a primary userid on a key.
BOOL
KLGetKeyName (
PGPKeyDBObjRef key,
LPSTR sz,
UINT uLen)
{
UINT u;
PGPError err;
err = PGPclGetPrimaryUserIDNameUTF8 (key, sz, uLen, &u);
switch (err) {
case kPGPError_BufferTooSmall :
case kPGPError_NoErr :
return TRUE;
default :
PGPclErrorBox (NULL, err);
sz[0] = '\0';
return FALSE;
}
}
// ___________________________________________________
//
// Get the keyid of a key.
BOOL
KLGetKeyIDFromKey (
PGPKeyDBObjRef key,
LPSTR sz,
UINT u)
{
PGPKeyID keyid;
CHAR szID[kPGPMaxKeyIDStringSize];
if (u < 11)
return FALSE;
PGPGetKeyID (key, &keyid);
PGPGetKeyIDString (&keyid, kPGPKeyIDString_Abbreviated, szID);
lstrcpyn (sz, szID, u);
return TRUE;
}
// ___________________________________________________
//
// Get the keyid of a signing key.
BOOL
KLGetKeyIDFromCert (
PGPKeyDBObjRef sig,
BOOL bX509,
LPSTR sz,
UINT u)
{
PGPKeyID keyid;
PGPSize size;
CHAR szID[kPGPMaxKeyIDStringSize];
if (u < 11)
return FALSE;
if (bX509)
{
PGPKeyDBObjRef keyDummy;
if (IsPGPError (PGPGetSigX509CertifierSig (
sig, kInvalidPGPKeyDBRef, &keyDummy)))
{
sz[0] = '\0';
return TRUE;
}
}
PGPGetKeyDBObjDataProperty (sig,
kPGPSigProperty_KeyID, &keyid, sizeof(keyid), &size);
PGPGetKeyIDString (&keyid, kPGPKeyIDString_Abbreviated, szID);
lstrcpyn (sz, szID, u);
return TRUE;
}
// ___________________________________________________
//
// Return handle of keymanager window
HWND PGPclExport
PGPclKeyListGetWindow (HKEYLIST hKL)
{
if (!hKL)
return NULL;
return (((PKEYLIST)hKL)->hwndTree);
}
// ___________________________________________________
//
// Set configuration
PGPError PGPclExport
PGPclKeyListConfigure (
HKEYLIST hkeylist,
PPGPclKeyListConfig pKLConfig)
{
PKEYLIST pKL = (PKEYLIST)hkeylist;
if (!pKL)
return kPGPError_BadParams;
if (pKL)
{
// set keyserver
if (pKLConfig->uMask & kPGPclKeyList_KeyServer)
{
if (pKLConfig->keyserver.protocol != kPGPKeyServerProtocol_Invalid)
CopyMemory (&pKL->keyserver, &pKLConfig->keyserver,
sizeof(PGPKeyServerEntry));
else
ZeroMemory (&pKL->keyserver, sizeof(PGPKeyServerEntry));
}
// set option flags
if (pKLConfig->uMask & kPGPclKeyList_Options)
pKL->ulOptionFlags = pKLConfig->uOptions;
// set column flags
if (pKLConfig->uMask & kPGPclKeyList_Columns)
pKL->ulShowColumns = pKLConfig->uShowColumns;
// set statusbar hwnd
if (pKLConfig->uMask & kPGPclKeyList_StatusHWND)
pKL->hwndStatusBar = pKLConfig->hwndStatusBar;
// determine validity threshold for green dot
if (pKL->ulOptionFlags & kPGPclKeyList_MarginalIsInvalid)
pKL->iValidityThreshold = PGPCL_VALIDITY_COMPLETE;
else
pKL->iValidityThreshold = PGPCL_VALIDITY_MARGINAL;
return kPGPError_NoErr;
}
else
return kPGPError_BadParams;
}
// ___________________________________________________
//
// Select columns
PGPError PGPclExport
PGPclKeyListSelectColumns (
HKEYLIST hkeylist,
PGPUInt32 uColumnFlags,
PGPBoolean bRedraw)
{
PKEYLIST pKL = (PKEYLIST)hkeylist;
KLSelectColumns (pKL, uColumnFlags);
if (bRedraw)
{
KLDeleteAllUserValues (pKL);
KLSetFocus (pKL, NULL, FALSE);
TreeList_DeleteTree (pKL->hwndTree, TRUE);
TreeList_DeleteAllColumns (pKL->hwndTree);
KLAddColumns (pKL);
KLLoadKeyRingIntoTree (pKL, FALSE, FALSE, TRUE);
InvalidateRect (pKL->hwndTree, NULL, TRUE);
UpdateWindow (pKL->hwndTree);
}
KLSetColumnPreferences (pKL);
return kPGPError_NoErr;
}
// ___________________________________________________
//
// Get selected columns
PGPError PGPclExport
PGPclKeyListGetSelectedColumns (
HKEYLIST hkeylist,
PGPUInt32* puColumnFlags)
{
PKEYLIST pKL = (PKEYLIST)hkeylist;
KLGetSelectedColumns (pKL, puColumnFlags);
return kPGPError_NoErr;
}
/*
// ___________________________________________________
//
// check if OK to close key manager
BOOL PGPclExport
PGPclOKToClose (HKEYLIST hKeyMan, PUINT puReason)
{
PKEYLIST pKL = (PKEYLIST)hKeyMan;
if (KLExistSplitKeyDialog (pKL)) {
*puReason = KLR_EXISTINGSPLITKEYDLGS;
return FALSE;
}
return TRUE;
}
*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?