📄 pkreconstruct.c
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
PKReconstruct.c - show key reconstruction dialog and then do it
$Id: PKReconstruct.c,v 1.17 2002/08/06 20:09:46 dallen Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "PGPkeysx.h"
// system header files
#include <commdlg.h>
// external globals
extern HINSTANCE g_hinst;
extern PGPContextRef g_context;
extern PGPtlsContextRef g_tlscontext;
// ___________________________________________________
//
// get the first key from a keyset
static PGPError
sGetFirstKeyInSet(
PGPKeySetRef keyset,
PGPKeyDBObjRef* pkey)
{
PGPError err;
PGPKeyIterRef keyiter;
*pkey = kInvalidPGPKeyDBObjRef;
err = PGPNewKeyIterFromKeySet (keyset, &keyiter);
if (IsntPGPError (err))
{
err = PGPKeyIterNextKeyDBObj (keyiter,
kPGPKeyDBObjType_Key, pkey);
if (err == kPGPError_EndOfIteration)
err = kPGPError_ItemNotFound;
PGPFreeKeyIter (keyiter);
}
return err;
}
// ___________________________________________________
//
// Query user for key reconstruction information
BOOL
PKReconstructKey (
PGPKEYSSTRUCT* ppks)
{
PGPError err = kPGPError_NoErr;
PGPKeyDBRef keydb = kInvalidPGPKeyDBRef;
BOOL bReturn = FALSE;
PGPKeyDBObjRef key;
PGPKeySetRef keyset;
PGPclKeyListGetSelectionInfo (ppks->hKL, NULL, &key, NULL, NULL);
err = PGPclRetrieveReconstructedKeyFromServer (g_context, g_tlscontext,
ppks->hwndMain, key, ppks->keydbMain, &keydb);
if (err == kPGPError_BadPassphrase)
{
PKMessageBox (ppks->hwndMain, IDS_CAPTIONALERT,
IDS_BADANSWERS, MB_OK|MB_ICONEXCLAMATION);
}
else if (err == kPGPError_ItemNotFound)
{
PKMessageBox (ppks->hwndMain, IDS_CAPTIONALERT,
IDS_KEYNOTONRECONSERVER, MB_OK|MB_ICONEXCLAMATION);
}
else if ((err == kPGPError_LDAPNoSuchObject) ||
(err == kPGPError_LDAPInvalidCredentials))
{
PKMessageBox (ppks->hwndMain, IDS_CAPTIONALERT,
IDS_INVALIDRECONUSERID, MB_OK|MB_ICONEXCLAMATION);
}
else
PGPclErrorBox (ppks->hwndMain, err);
if (IsntPGPError (err) &&
PGPKeyDBRefIsValid (keydb))
{
PKDeletePropertiesWindowForObject (key);
PGPclKeyListUpdateTree (ppks->hKL,
kPGPclKeyListRemoveObject, key, FALSE);
PGPDeleteKeyDBObj (key);
PGPCopyKeys (PGPPeekKeyDBRootKeySet (keydb), ppks->keydbMain, &keyset);
if (IsntPGPError (sGetFirstKeyInSet (keyset, &key)))
{
PGPSetKeyAxiomatic (key, TRUE,
PGPOLastOption (g_context));
PKKeyDBModified (ppks, PK_MOD_INDEX_0);
PGPclKeyListUpdateTree (ppks->hKL,
kPGPclKeyListReplaceObject, key, FALSE);
PGPclKeyListSetTree (ppks->hKL,
kPGPclSelectSpecifiedOnly, key);
}
PKMessageBox (ppks->hwndMain, IDS_CAPTIONINFO,
IDS_KEYRECONSTRUCTED, MB_OK|MB_ICONINFORMATION);
bReturn = TRUE;
}
if (PGPKeyDBRefIsValid (keydb))
PGPFreeKeyDB (keydb);
return bReturn;
}
// ___________________________________________________
//
// send reconstruction blob to server
BOOL
PKSendToReconServer (
PGPKEYSSTRUCT* ppks)
{
PGPError err = kPGPError_NoErr;
PGPKeyDBObjRef key;
PGPclKeyListGetSelectionInfo (ppks->hKL, NULL, &key, NULL, NULL);
err = PGPclSendReconstructionBlobToServer (g_context, g_tlscontext,
ppks->hwndMain, key, ppks->keydbMain);
if (IsPGPError (PGPclErrorBox (ppks->hwndMain, err)))
return FALSE;
else
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -