📄 scaddkey.c
字号:
/*__________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: SCaddkey.c,v 1.8 2002/11/12 18:58:49 pbj Exp $
__________________________________________________________________________*/
#include "precomp.h"
PGPError
AddEvents(
PGPContextRef context,
PGPEvent *event,
PGPUserValue userValue
)
{
MYSTATE *s;
(void) context;
s = (MYSTATE *)userValue;
if(PGPscProgressGetCancel(s->hwndWorking))
return kPGPError_UserAbort;
switch( event->type )
{
case kPGPEvent_NullEvent:
{ PGPEventNullData *d = &event->data.nullData;
if(d->bytesTotal!=0)
{
return PGPscProgressSetBar(s->hwndWorking,
(DWORD)(d->bytesWritten*100/d->bytesTotal),FALSE);
}
}
break;
case kPGPEvent_ErrorEvent:
{ PGPEventErrorData *d = &event->data.errorData;
if((d->error!=kPGPError_BadPassphrase)&&
(d->error!=kPGPError_UserAbort))
PGPclEncDecErrorBox(s->hwndWorking,d->error);
}
break;
case kPGPEvent_WarningEvent:
{ PGPEventWarningData *d = &event->data.warningData;
}
break;
case kPGPEvent_AnalyzeEvent:
{ PGPEventAnalyzeData *d = &event->data.analyzeData;
if(d->sectionType!=kPGPAnalyze_Key)
return kPGPError_SkipSection;
s->FoundPGPData=TRUE;
}
break;
default:
break;
}
return kPGPError_NoErr;
}
PGPError GenericAddKey(MYSTATE *ms,
PGPOptionListRef opts,
char *OperationTarget)
{
PGPKeyDBRef AddKeyDB;
PGPContextRef context;
PGPError err;
err=kPGPError_NoErr;
context=ms->context;
ms->fileName=OperationTarget;
if(ms->Operation!=MS_ADDKEYCLIPBOARD)
PGPscProgressSetNewFilename(ms->hwndWorking,"From '%s'",ms->fileName,TRUE);
err=PGPImport(context,&AddKeyDB,
opts,
PGPOSendNullEvents(context,75),
PGPOEventHandler(context,AddEvents,ms),
PGPOLastOption(context));
PGPscProgressSetBar(ms->hwndWorking,100,TRUE);
AddKeys(ms->hwndWorking,AddKeyDB,ms);
return err;
}
PGPError AddKeyFileListStub (MYSTATE *ms)
{
PGPContextRef context;
PGPFileSpecRef inref;
PGPOptionListRef opts;
FILELIST *FileCurrent;
PGPError err;
err=kPGPError_NoErr;
context=ms->context;
FileCurrent=ms->ListHead;
while(!(PGPscProgressGetCancel(ms->hwndWorking))&&(FileCurrent!=0)&&(IsntPGPError(err)))
{
if(FileCurrent->IsDirectory)
{
FileCurrent=FileCurrent->next;
continue;
}
PGPNewFileSpecFromFullPath (context,
FileCurrent->name, &inref);
PGPBuildOptionList(context,&opts,
PGPOInputFile(context,inref),
PGPOLastOption(context));
err=GenericAddKey(ms,opts,FileCurrent->name);
PGPFreeOptionList(opts);
PGPFreeFileSpec( inref );
FileCurrent=FileCurrent->next;
}
return err;
}
BOOL PGPscAddKeyFileList(HWND hwnd,void *PGPsc,void *PGPtls,FILELIST *ListHead)
{
PGPContextRef context;
PGPtlsContextRef tls;
MYSTATE *ms;
PGPError err;
err=kPGPError_NoErr;
context=(PGPContextRef)PGPsc;
tls=(PGPtlsContextRef)PGPtls;
/// if(IsPGPError(PGPlnIsExpired(hwnd, kPGPlnGraceExpiration)))
/// return FALSE;
ms=(MYSTATE *)malloc(sizeof(MYSTATE));
if(ms)
{
memset(ms, 0x00, sizeof(MYSTATE) );
ms->context=context;
ms->tlsContext=tls;
ms->ListHead=ListHead;
ms->Operation=MS_ADDKEYFILELIST;
if(OpenRings(hwnd,context,&(ms->KeyDB),&(ms->bMutable)))
{
err=PGPscProgressDialog(hwnd,DoWorkThread,ms,
0,"Adding Keys from File(s)...",
"","",IDR_PROGAVI);
if(!(ms->FoundPGPData))
PGPscMessageBox (hwnd,IDS_PGPERROR,IDS_NOPGPKEYSINFILE,
MB_OK|MB_ICONEXCLAMATION);
PGPFreeKeyDB(ms->KeyDB);
}
free(ms);
}
PGPscFreeFileList(ListHead);
if(IsPGPError(err))
return FALSE;
return TRUE;
}
PGPError AddKeyClipboardStub (MYSTATE *ms)
{
PGPOptionListRef opts;
PGPContextRef context;
char StrRes[100];
PGPError err;
err=kPGPError_NoErr;
context=ms->context;
PGPBuildOptionList(context,&opts,
PGPOInputBuffer(context,ms->pInput,ms->dwInputSize),
PGPOLastOption(context));
LoadString (g_hinst, IDS_CLIPBOARD, StrRes, sizeof(StrRes));
err=GenericAddKey(ms,opts,StrRes);
PGPFreeOptionList(opts);
return err;
}
BOOL PGPscAddKeyClipboard(HWND hwnd,void *PGPsc,void *PGPtls)
{
PGPContextRef context;
char *pInput;
DWORD dwInputSize;
UINT ClipboardFormat;
MYSTATE *ms;
PGPtlsContextRef tls;
PGPError err;
// Check for files copied into clipboard from explorer
if(OpenClipboard(hwnd))
{
if(IsClipboardFormatAvailable(CF_HDROP))
{
FILELIST *ListHead;
HDROP hDrop;
hDrop=(HDROP)GetClipboardData(CF_HDROP);
ListHead=PGPscHDropToFileList(hDrop);
if(ListHead!=0)
{
CloseClipboard();
return PGPscAddKeyFileList(hwnd,
PGPsc,PGPtls,ListHead);
}
}
CloseClipboard();
}
err=kPGPError_NoErr;
context=(PGPContextRef)PGPsc;
tls=(PGPtlsContextRef)PGPtls;
/// if(IsPGPError(PGPlnIsExpired(hwnd, kPGPlnGraceExpiration)))
/// return FALSE;
pInput=RetrieveClipboardData(hwnd, &ClipboardFormat,
&dwInputSize);
if(!pInput)
{
PGPscMessageBox (hwnd,IDS_PGPERROR,IDS_NOCLIPBOARDCONTENTS,
MB_OK|MB_ICONSTOP);
}
else
{
if((ClipboardFormat != CF_TEXT)||(*pInput==0))
{
PGPscMessageBox (hwnd,IDS_PGPERROR,IDS_NOCLIPBOARDTEXT,
MB_OK|MB_ICONSTOP);
}
else
{
ms=(MYSTATE *)malloc(sizeof(MYSTATE));
if(ms)
{
memset(ms, 0x00, sizeof(MYSTATE) );
ms->context=context;
ms->tlsContext=tls;
ms->pInput=pInput;
ms->dwInputSize=dwInputSize;
ms->Operation=MS_ADDKEYCLIPBOARD;
if(OpenRings(hwnd,context,&(ms->KeyDB),&(ms->bMutable)))
{
err=PGPscProgressDialog(hwnd,DoWorkThread,ms,
0,"Adding Keys from Clipboard...",
"","",IDR_PROGAVI);
// If no PGP data in clipboard, warn....
if(!(ms->FoundPGPData))
PGPscMessageBox (hwnd,IDS_PGPERROR,IDS_NOPGPKEYSINCLIPBOARD,
MB_OK|MB_ICONEXCLAMATION);
PGPFreeKeyDB(ms->KeyDB);
}
free(ms);
}
}
memset(pInput,0x00,dwInputSize);
free(pInput);
}
if(IsPGPError(err))
return FALSE;
return TRUE;
}
/*__Editor_settings____
Local Variables:
tab-width: 4
End:
vi: ts=4 sw=4
vim: si
_____________________*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -