📄 pgpevent.c
字号:
/*____________________________________________________________________________
pgpEvent.c
Handle application event callbacks
Copyright (C) 1997 Network Associates Inc. and affiliated companies.
All rights reserved.
$Id: pgpEvent.c,v 1.33 1999/05/07 23:47:45 hal Exp $
____________________________________________________________________________*/
#include "pgpConfig.h" /* or pgpConfig.h in the CDK */
#include <string.h>
/* Public headers */
#include "pgpPubTypes.h"
#include "pgpContext.h"
#include "pgpEncode.h"
#include "pgpErrors.h"
#include "pgpKeys.h"
#include "pgpMem.h"
/* Private headers */
#include "pgpEventPriv.h"
#include "pgpEncodePriv.h"
/************************** User event callback ****************************/
PGPError
pgpEventNull(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPFileOffset soFar,
PGPFileOffset total
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_NullEvent;
event.data.nullData.bytesWritten = soFar;
event.data.nullData.bytesTotal = total;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventInitial(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_InitialEvent;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventFinal(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_FinalEvent;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventError(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPError error,
void *errorArg
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_ErrorEvent;
event.data.errorData.error = error;
event.data.errorData.errorArg = errorArg;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventWarning(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPError warning,
void *warningArg
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_WarningEvent;
event.data.warningData.warning = warning;
event.data.warningData.warningArg = warningArg;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventEntropy(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPUInt32 entropyBitsNeeded
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_EntropyEvent;
event.data.entropyData.entropyBitsNeeded = entropyBitsNeeded;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventPassphrase(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPBoolean fConventional,
PGPKeySetRef keyset
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_PassphraseEvent;
event.data.passphraseData.fConventional = fConventional;
event.data.passphraseData.keyset = keyset;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventAnalyze(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPAnalyzeType type
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_AnalyzeEvent;
event.data.analyzeData.sectionType = type;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventRecipients(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPKeySetRef recipientSet,
PGPKeyID *keyIDArray,
PGPUInt32 passphraseCount,
PGPUInt32 keyCount
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_RecipientsEvent;
event.data.recipientsData.recipientSet = recipientSet;
event.data.recipientsData.keyIDArray = keyIDArray;
event.data.recipientsData.conventionalPassphraseCount
= passphraseCount;
event.data.recipientsData.keyCount = keyCount;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventKeyFound(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPKeySetRef keySet
)
{
PGPJob job;
PGPEvent event;
PGPError err;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
pgpClearMemory( &event, sizeof( event ) );
event.job = &job;
event.type = kPGPEvent_KeyFoundEvent;
event.data.keyFoundData.keySet = keySet;
err = func( context, &event, userValue );
*newOptionList = job.newOptionList;
return err;
}
PGPError
pgpEventOutput(
PGPContextRef context,
PGPOptionListRef *newOptionList, /* Output parameter */
PGPEventHandlerProcPtr func,
PGPUserValue userValue,
PGPUInt32 messageType,
char const *suggestedName,
PGPBoolean FYEO
)
{
PGPJob job;
PGPEvent event;
PGPError err;
char *canonicalName = NULL;
*newOptionList = NULL;
if( IsNull( func ) )
return kPGPError_NoErr;
job.context = context;
job.newOptionList = NULL;
if( IsntNull( suggestedName ) )
{
/* Convert all illegal characters to underscores */
canonicalName = (char *) PGPNewData( PGPGetContextMemoryMgr( context ),
strlen( suggestedName ) + 1, 0 );
if( IsntNull( canonicalName ) )
{
char *cur = canonicalName;
strcpy( canonicalName, suggestedName );
#if PGP_MACINTOSH
/* Macs are unhappy with filenames starting with '.' */
if( *cur == '.' )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -