📄 ucryptofactory.cpp
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: UCryptoFactory.cpp,v 1.3 2002/08/06 20:10:18 dallen Exp $
____________________________________________________________________________*/
#include "pgpClassesConfig.h"
#include "CString.h"
#include "pgpClientErrors.h"
#include "UCryptoFactory.h"
#include "UNativeCryptoModule.h"
_USING_PGP
_UNNAMED_BEGIN
enum {kNumSupportedAlgs = 3};
_UNNAMED_END
// UCryptoFactory functions
PGPUInt32
UCryptoFactory::GetNumAlgorithms()
{
return kNumSupportedAlgs;
}
SMART_ERROR
UCryptoFactory::GetAlgorithmIdString(
PGPdiskEncryptionAlgorithm algorithm,
CString& idString)
{
SMART_ERROR_DECLARE
Crypto::CipherVTable vTable;
UNativeCryptoModule::GetVTable(vTable);
char *strBuf;
#if PGP_EXCEPTIONS
strBuf = idString.GetBuffer(kPGPdiskMaxAlgStringIdLength);
try
#else // !PGP_EXCEPTIONS
error = idString.GetBuffer(kPGPdiskMaxAlgStringIdLength, strBuf);
if (error.IsntError())
#endif // PGP_EXCEPTIONS;
{
switch (algorithm)
{
case kPGPdiskOldCAST5Algorithm:
case kPGPdiskCAST5Algorithm:
case kPGPdiskTwoFishAlgorithm:
vTable.pfnGetAlgorithmIdString(algorithm, strBuf,
kPGPdiskMaxAlgStringIdLength);
break;
default:
#if PGP_EXCEPTIONS
THROW_PGPERROR(kPGPError_BadParams);
#else // !PGP_EXCEPTIONS
error.pgpErr = kPGPError_BadParams;
#endif // PGP_EXCEPTIONS
break;
}
}
#if PGP_EXCEPTIONS
catch (CComboError&)
{
idString.ReleaseBuffer();
throw;
}
#endif // PGP_EXCEPTIONS
idString.ReleaseBuffer();
SMART_ERROR_RETURN
}
SMART_ERROR
UCryptoFactory::GetSupportedAlgorithms(
CArray<PGPdiskEncryptionAlgorithm>& algArray,
PGPUInt32& usedLength)
{
SMART_ERROR_DECLARE
#if PGP_EXCEPTIONS
algArray.Resize(kNumSupportedAlgs);
#else // !PGP_EXCEPTIONS
error = algArray.Resize(kNumSupportedAlgs);
if (error.IsntError())
#endif // PGP_EXCEPTIONS;
{
algArray[0] = kPGPdiskOldCAST5Algorithm;
algArray[1] = kPGPdiskCAST5Algorithm;
algArray[2] = kPGPdiskTwoFishAlgorithm;
usedLength = kNumSupportedAlgs;
}
SMART_ERROR_RETURN
}
SMART_ERROR
UCryptoFactory::RegisterModuleClient(
PGPdiskEncryptionAlgorithm algorithm,
Crypto::CipherVTable& vTable)
{
SMART_ERROR_DECLARE
switch (algorithm)
{
case kPGPdiskOldCAST5Algorithm:
case kPGPdiskCAST5Algorithm:
case kPGPdiskTwoFishAlgorithm:
UNativeCryptoModule::GetVTable(vTable);
break;
default:
#if PGP_EXCEPTIONS
THROW_PGPERROR(kPGPClientError_BadDiskAlgorithm);
#else // !PGP_EXCEPTIONS
error.pgpErr = kPGPClientError_BadDiskAlgorithm;
#endif // PGP_EXCEPTIONS
break;
}
SMART_ERROR_RETURN
}
void
UCryptoFactory::DeregisterModuleClient(PGPdiskEncryptionAlgorithm algorithm)
{
// Nothing needed here yet.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -