📄 cpgpkeysearcher.cpp
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CPGPKeySearcher.cpp,v 1.6 2002/08/06 20:09:23 dallen Exp $
____________________________________________________________________________*/
#include "pgpClassesConfig.h"
#include "pgpKeys.h"
#include "pgpUserInterface.h"
#include "pgpClientLib.h"
#include "CPGPContext.h"
#include "CPGPdiskEngine.h"
#include "CPGPKeyDB.h"
#include "CPGPtlsContext.h"
#include "CPGPKeySearcher.h"
_USING_PGP
// Class CPGPKeySearcher member functions
void
CPGPKeySearcher::SearchKeys(
const CPGPdiskContext& context,
HWND parentWnd,
CList<SearchItem>& items,
CPGPKeyDB& backingKeyDB)
{
pgpAssert(IsWindow(parentWnd));
if (items.Count() == 0)
return;
CPGPContext pgpContext(context.PGPContext());
// Create key ID array.
CArray<PGPKeyID> keyIDs(items.Count());
PGPUInt32 i = 0;
SearchItem *pItem = items.Head();
while (IsntNull(pItem))
{
pItem->wasFound = FALSE;
keyIDs[i++] = pItem->keyID;
pItem = items.Next(pItem);
}
// Ask server for unknown keys.
CPGPtlsContext tlsContext(pgpContext);
PGPKeyDBRef newKeysDBRef;
PGPError pgpErr = PGPclSearchServerForKeyIDs(pgpContext, tlsContext,
parentWnd, keyIDs.Get(), items.Count(), kPGPclDefaultServer,
context.PGPKeyDB(), &newKeysDBRef);
THROW_IF_PGPERROR(pgpErr);
CPGPKeyDB newKeysDB(newKeysDBRef, TRUE);
CPGPKeySet newKeys(newKeysDB);
if (newKeys.Count() > 0)
{
// Copy the new keys to the backing set.
CPGPKeySet backingKeys(backingKeyDB, newKeys);
// Update the unknown keys list.
CPGPKeyList backingKeyList(backingKeys, kPGPKeyOrdering_Any);
CPGPKeyIter backingKeyIter(backingKeyList);
SearchItem *pItem = items.Head();
while (IsntNull(pItem))
{
pItem->wasFound = FALSE;
backingKeyIter.Rewind();
CPGPKey backingKey;
while (backingKeyIter.Next(backingKey))
{
CPGPKeyID backingKeyID;
backingKey.GetKeyID(backingKeyID);
if (backingKeyID.IsEqual(pItem->keyID))
{
pItem->wasFound = TRUE;
pItem->key.Attach(backingKey);
backingKeyIter.NextSubKey(pItem->subKey);
}
}
pItem = items.Next(pItem);
}
// Ask if the user wants to import these keys.
CPGPKeyDB keyRings;
keyRings.OpenDefault(pgpContext, kPGPOpenKeyDBFileOptions_Mutable);
PGPclImportKeys(pgpContext, tlsContext, parentWnd, newKeys,
keyRings, kPGPclDefaultImportFlags);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -