⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucryptofactory.cpp

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 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 + -