tripwire-open-source/src/cryptlib/config.h

211 lines
5.0 KiB
C++

#ifndef CONFIG_H
#define CONFIG_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
// define this if you want the library to throw exceptions when things go wrong
#define THROW_EXCEPTIONS
// define this if your compiler doesn't support namespaces
// NOTE:dmb For OST we will be using 2.95.2 which supports namespaces
//#ifdef __GNUC__
//#define NO_NAMESPACE
//#endif
// define this if your compiler only has the old version of iostream library
// NOTE:dmb For OST we will be using the current ostreams
//#ifdef __GNUC__
//#define OLD_IOSTREAM
//#endif
// switch between different secure memory allocation mechnisms, this is the only
// one available right now
#define SECALLOC_DEFAULT
// Define this to 0 if your system doesn't differentiate between
// text mode and binary mode files.
// #define BINARY_MODE 0
#define BINARY_MODE ios::binary
// #define BINARY_MODE ios::bin
// Define this to 0 if your compiler doesn't have ios::nocreate.
// This is needed because some compilers automaticly create a new file
// when you try to open one for reading if it doesn't already exist.
#define FILE_NO_CREATE 0
// #define FILE_NO_CREATE ios::nocreate
// define this if you have a copy of RSAREF and want to compile the RSAREF
// class wrappers
// #define USE_RSAREF
// define this if you want to be able to initialize RSAREF structures with bignums
// #define USE_BIGNUM_WITH_RSAREF
#define GZIP_OS_CODE 0
// how much memory to use for deflation (compression)
// note 16 bit compilers don't work with BIG_MEM (pointer wraps around segment boundary)
// #define SMALL_MEM
#define MEDIUM_MEM
// #define BIG_MEM
// Define the following to use the updated standard SHA-1 instead of SHA
#define NEW_SHA
// Try this if your CPU has 256K internal cache or a slow multiply instruction
// and you want a (possibly) faster IDEA implementation using log tables
// #define IDEA_LARGECACHE
// Try this if you have a large cache or your CPU is slow manipulating
// individual bytes.
// #define DIAMOND_USE_PERMTABLE
// Define this if, for the linear congruential RNG, you want to use
// the original constants as specified in S.K. Park and K.W. Miller's
// CACM paper.
// #define LCRNG_ORIGINAL_NUMBERS
// Make sure these typedefs are correct for your computer
typedef unsigned char byte;
typedef unsigned short word16;
#if SIZEOF_INT == 4
typedef unsigned int word32;
#elif SIZEOF_LONG == 4
typedef unsigned long word32;
#else
#error "I don't seem to have a 32-bit integer type on this system."
#endif
// word should have the same size as your CPU registers
// dword should be twice as big as word
#if defined(_MSC_VER)
typedef unsigned __int32 word;
typedef unsigned __int64 dword;
#define WORD64_AVAILABLE
typedef unsigned __int64 word64;
#define W64LIT(x) x##i64
#elif defined(_KCC)
#if defined(_ALPHA)
typedef unsigned int word;
typedef unsigned long dword;
#define WORD64_AVAILABLE
typedef unsigned long word64;
#define W64LIT(x) x##LL
#elif defined(_IRIX)
typedef unsigned long word;
typedef unsigned long long dword;
#define WORD64_AVAILABLE
typedef unsigned long long word64;
#define W64LIT(x) x##LL
#else
typedef unsigned long word;
typedef unsigned long long dword;
#define WORD64_AVAILABLE
typedef unsigned long long word64;
#define W64LIT(x) x##LL
#endif
#elif defined(_SUNPRO)
typedef unsigned long word;
typedef unsigned long long dword;
#define WORD64_AVAILABLE
typedef unsigned long long word64;
#define W64LIT(x) x##LL
#elif defined(__GNUC__)
typedef word32 word;
#if SIZEOF_LONG_LONG == 8
typedef unsigned long long dword;
#define WORD64_AVAILABLE
typedef unsigned long long word64;
#define W64LIT(x) x##LL
#else
#error "I don't seem to have a 64-bit integer type on this system."
#endif
#else
typedef unsigned int word;
typedef unsigned long dword;
#endif
// You may need to tweak this to fit your architecture
typedef unsigned long ptr_size_type;
const unsigned int WORD_SIZE = sizeof(word);
const unsigned int WORD_BITS = WORD_SIZE * 8;
#if defined(_IRIX)
#define LOW_WORD(x) (word)((x) & 0xffffffff)
#else
#define LOW_WORD(x) (word)(x)
#endif
#ifdef WORDS_BIGENDIAN
#define HIGH_WORD(x) (*((word *)&(x)))
#else
#define HIGH_WORD(x) (*(((word *)&(x))+1))
#endif
// if the above HIGH_WORD macro doesn't work (if you are not sure, compile it
// and run the validation tests), try this:
// #define HIGH_WORD(x) (word)((x)>>WORD_BITS)
#ifdef _MSC_VER
// 4250: dominance
// 4660: explicitly instantiating a class that's already implicitly instantiated
#pragma warning(disable: 4250 4660)
#endif
#ifdef NO_NAMESPACE
#define std
#define USING_NAMESPACE(x)
#define NAMESPACE_BEGIN(x)
#define NAMESPACE_END
#define ANONYMOUS_NAMESPACE_BEGIN
#else
#define USING_NAMESPACE(x) using namespace x;
#define NAMESPACE_BEGIN(x) namespace x {
#define ANONYMOUS_NAMESPACE_BEGIN namespace {
#define NAMESPACE_END }
#endif
#ifdef _MSC_VER
// VC50 workaround
#define STDMIN std::_cpp_min
#define STDMAX std::_cpp_max
#else
#define STDMIN std::min
#define STDMAX std::max
#endif
#endif