From bdf3852cf0cf46a2fbcce196339cbf51a0902e6d Mon Sep 17 00:00:00 2001 From: weidai Date: Sun, 20 Jun 2004 17:56:15 +0000 Subject: [PATCH] port to CodeWarrior 8.3 --- config.h | 6 ++- crypto++.mcp | Bin 862921 -> 739753 bytes dll.cpp | 17 ++++++ eccrypto.h | 6 +-- gf2n.h | 13 ++--- gfpcrypt.h | 8 +-- hrtimer.cpp | 145 ++++++++++++++++++++++++++------------------------- hrtimer.h | 24 ++++----- test.cpp | 2 +- 9 files changed, 124 insertions(+), 97 deletions(-) diff --git a/config.h b/config.h index 1089c11c..b3642802 100644 --- a/config.h +++ b/config.h @@ -177,7 +177,7 @@ NAMESPACE_END # pragma warning(disable: 4231 4250 4251 4275 4660 4661 4786 4355) #endif -#if !(defined(_MSC_VER) && _MSC_VER <= 1300) +#if !(defined(_MSC_VER) && _MSC_VER <= 1300) && !defined(__MWERKS__) #define CRYPTOPP_UNCAUGHT_EXCEPTION_AVAILABLE #endif @@ -271,12 +271,16 @@ NAMESPACE_END #if defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES) && !defined(CRYPTOPP_IMPORTS) #define CRYPTOPP_DLL_TEMPLATE_CLASS template class CRYPTOPP_DLL +#elif defined(__MWERKS__) +#define CRYPTOPP_DLL_TEMPLATE_CLASS extern class CRYPTOPP_DLL #else #define CRYPTOPP_DLL_TEMPLATE_CLASS extern template class CRYPTOPP_DLL #endif #if defined(CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES) && !defined(CRYPTOPP_EXPORTS) #define CRYPTOPP_STATIC_TEMPLATE_CLASS template class +#elif defined(__MWERKS__) +#define CRYPTOPP_STATIC_TEMPLATE_CLASS extern class #else #define CRYPTOPP_STATIC_TEMPLATE_CLASS extern template class #endif diff --git a/crypto++.mcp b/crypto++.mcp index 5f087ac5ac055cbcf9b1d563ad3c26bf785ea3e7..fff134e35df719f3bc38aaf4c7010ab03c3e43b0 100644 GIT binary patch delta 18269 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 gV|+8L%Zt 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 b^X-|Q!p;%@IgYnX=j*{>s{bhvI`RJiiXeew diff --git a/dll.cpp b/dll.cpp index ae67c129..24f4d8df 100644 --- a/dll.cpp +++ b/dll.cpp @@ -20,6 +20,23 @@ NAMESPACE_BEGIN(CryptoPP) +#ifdef __MWERKS__ +// CodeWarrior 8 workaround: explicit instantiations have to appear after member function definitions +CRYPTOPP_DLL_TEMPLATE_CLASS DL_GroupParameters_EC; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_GroupParameters_EC; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_FixedBasePrecomputationImpl; +CRYPTOPP_STATIC_TEMPLATE_CLASS IteratedHashBase; +CRYPTOPP_DLL_TEMPLATE_CLASS IteratedHashBase; +CRYPTOPP_STATIC_TEMPLATE_CLASS IteratedHashBase; +CRYPTOPP_DLL_TEMPLATE_CLASS CFB_CipherTemplate >; +CRYPTOPP_DLL_TEMPLATE_CLASS CFB_EncryptionTemplate >; +CRYPTOPP_DLL_TEMPLATE_CLASS CFB_DecryptionTemplate >; +CRYPTOPP_DLL_TEMPLATE_CLASS AdditiveCipherTemplate<>; +CRYPTOPP_DLL_TEMPLATE_CLASS AdditiveCipherTemplate >; +CRYPTOPP_DLL_TEMPLATE_CLASS AdditiveCipherTemplate >; +CRYPTOPP_DLL_TEMPLATE_CLASS AbstractEuclideanDomain; +#endif + template<> const byte PKCS_DigestDecoration::decoration[] = {0x30,0x21,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x04,0x14}; template<> const unsigned int PKCS_DigestDecoration::length = sizeof(PKCS_DigestDecoration::decoration); diff --git a/eccrypto.h b/eccrypto.h index 20a69409..3005fafa 100644 --- a/eccrypto.h +++ b/eccrypto.h @@ -212,9 +212,6 @@ struct DL_Keys_EC template struct ECDSA; -CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_WithSignaturePairwiseConsistencyTest, ECDSA >; -CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_WithSignaturePairwiseConsistencyTest, ECDSA >; - //! . template struct DL_Keys_ECDSA @@ -248,6 +245,9 @@ struct ECDSA : public DL_SS, DL_Algorithm_ECDSA, DL_Signat { }; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_WithSignaturePairwiseConsistencyTest, ECDSA >; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_WithSignaturePairwiseConsistencyTest, ECDSA >; + //! ECNR template struct ECNR : public DL_SS, DL_Algorithm_ECNR, DL_SignatureMessageEncodingMethod_NR, H> diff --git a/gf2n.h b/gf2n.h index b1cfba48..e50576de 100644 --- a/gf2n.h +++ b/gf2n.h @@ -236,12 +236,6 @@ private: SecWordBlock reg; }; -CRYPTOPP_DLL_TEMPLATE_CLASS AbstractGroup; -CRYPTOPP_DLL_TEMPLATE_CLASS AbstractRing; -CRYPTOPP_DLL_TEMPLATE_CLASS AbstractEuclideanDomain; -CRYPTOPP_DLL_TEMPLATE_CLASS EuclideanDomainOf; -CRYPTOPP_DLL_TEMPLATE_CLASS QuotientRing >; - //! GF(2^n) with Polynomial Basis class CRYPTOPP_DLL GF2NP : public QuotientRing > { @@ -353,6 +347,13 @@ inline CryptoPP::PolynomialMod2 operator/(const CryptoPP::PolynomialMod2 &a, con //! inline CryptoPP::PolynomialMod2 operator%(const CryptoPP::PolynomialMod2 &a, const CryptoPP::PolynomialMod2 &b) {return a.Modulo(b);} +// CodeWarrior 8 workaround: put these template instantiations after overloaded operator declarations +CRYPTOPP_DLL_TEMPLATE_CLASS AbstractGroup; +CRYPTOPP_DLL_TEMPLATE_CLASS AbstractRing; +CRYPTOPP_DLL_TEMPLATE_CLASS AbstractEuclideanDomain; +CRYPTOPP_DLL_TEMPLATE_CLASS EuclideanDomainOf; +CRYPTOPP_DLL_TEMPLATE_CLASS QuotientRing >; + NAMESPACE_END NAMESPACE_BEGIN(std) diff --git a/gfpcrypt.h b/gfpcrypt.h index 0bc6b3bb..206c0bf6 100644 --- a/gfpcrypt.h +++ b/gfpcrypt.h @@ -372,10 +372,6 @@ public: struct DSA; -CRYPTOPP_DLL_TEMPLATE_CLASS DL_PublicKey_GFP; -CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_GFP; -CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_WithSignaturePairwiseConsistencyTest, DSA>; - //! . struct DL_Keys_DSA { @@ -413,6 +409,10 @@ struct CRYPTOPP_DLL DSA : public DL_SS< MAX_PRIME_LENGTH = 1024, PRIME_LENGTH_MULTIPLE = 64}; }; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_PublicKey_GFP; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_GFP; +CRYPTOPP_DLL_TEMPLATE_CLASS DL_PrivateKey_WithSignaturePairwiseConsistencyTest, DSA>; + //! . template class DL_EncryptionAlgorithm_Xor : public DL_SymmetricEncryptionAlgorithm diff --git a/hrtimer.cpp b/hrtimer.cpp index 904bc52f..38763fbf 100644 --- a/hrtimer.cpp +++ b/hrtimer.cpp @@ -4,8 +4,7 @@ #include "hrtimer.h" #include "misc.h" #include // for NULL - -#ifdef HIGHRES_TIMER_AVAILABLE +#include #if defined(CRYPTOPP_WIN32_AVAILABLE) #include @@ -19,73 +18,6 @@ NAMESPACE_BEGIN(CryptoPP) -word64 Timer::GetCurrentTimerValue() -{ -#if defined(CRYPTOPP_WIN32_AVAILABLE) - LARGE_INTEGER now; - if (!QueryPerformanceCounter(&now)) - throw Exception(Exception::OTHER_ERROR, "Timer: QueryPerformanceCounter failed with error " + IntToString(GetLastError())); - return now.QuadPart; -#elif defined(CRYPTOPP_UNIX_AVAILABLE) - timeval now; - gettimeofday(&now, NULL); - return (word64)now.tv_sec * 1000000 + now.tv_usec; -#endif -} - -word64 Timer::TicksPerSecond() -{ -#if defined(CRYPTOPP_WIN32_AVAILABLE) - static LARGE_INTEGER freq = {0}; - if (freq.QuadPart == 0) - { - if (!QueryPerformanceFrequency(&freq)) - throw Exception(Exception::OTHER_ERROR, "Timer: QueryPerformanceFrequency failed with error " + IntToString(GetLastError())); - } - return freq.QuadPart; -#elif defined(CRYPTOPP_UNIX_AVAILABLE) - return 1000000; -#endif -} - -word64 ThreadUserTimer::GetCurrentTimerValue() -{ -#if defined(CRYPTOPP_WIN32_AVAILABLE) - static bool getCurrentThreadImplemented = true; - if (getCurrentThreadImplemented) - { - FILETIME now, ignored; - if (!GetThreadTimes(GetCurrentThread(), &ignored, &ignored, &ignored, &now)) - { - DWORD lastError = GetLastError(); - if (lastError == ERROR_CALL_NOT_IMPLEMENTED) - { - getCurrentThreadImplemented = false; - goto GetCurrentThreadNotImplemented; - } - throw Exception(Exception::OTHER_ERROR, "ThreadUserTimer: GetThreadTimes failed with error " + IntToString(lastError)); - } - return now.dwLowDateTime + ((word64)now.dwHighDateTime << 32); - } -GetCurrentThreadNotImplemented: - return (word64)clock() * (10*1000*1000 / CLOCKS_PER_SEC); -#elif defined(CRYPTOPP_UNIX_AVAILABLE) - tms now; - times(&now); - return now.tms_utime; -#endif -} - -word64 ThreadUserTimer::TicksPerSecond() -{ -#if defined(CRYPTOPP_WIN32_AVAILABLE) - return 10*1000*1000; -#elif defined(CRYPTOPP_UNIX_AVAILABLE) - static const long ticksPerSecond = sysconf(_SC_CLK_TCK); - return ticksPerSecond; -#endif -} - double TimerBase::ConvertTo(word64 t, Unit unit) { static unsigned long unitsPerSecondTable[] = {1, 1000, 1000*1000, 1000*1000*1000}; @@ -120,6 +52,79 @@ unsigned long TimerBase::ElapsedTime() return (unsigned long)elapsed; } -NAMESPACE_END +word64 ThreadUserTimer::GetCurrentTimerValue() +{ +#if defined(CRYPTOPP_WIN32_AVAILABLE) + static bool getCurrentThreadImplemented = true; + if (getCurrentThreadImplemented) + { + FILETIME now, ignored; + if (!GetThreadTimes(GetCurrentThread(), &ignored, &ignored, &ignored, &now)) + { + DWORD lastError = GetLastError(); + if (lastError == ERROR_CALL_NOT_IMPLEMENTED) + { + getCurrentThreadImplemented = false; + goto GetCurrentThreadNotImplemented; + } + throw Exception(Exception::OTHER_ERROR, "ThreadUserTimer: GetThreadTimes failed with error " + IntToString(lastError)); + } + return now.dwLowDateTime + ((word64)now.dwHighDateTime << 32); + } +GetCurrentThreadNotImplemented: + return (word64)clock() * (10*1000*1000 / CLOCKS_PER_SEC); +#elif defined(CRYPTOPP_UNIX_AVAILABLE) + tms now; + times(&now); + return now.tms_utime; +#else + return clock(); +#endif +} + +word64 ThreadUserTimer::TicksPerSecond() +{ +#if defined(CRYPTOPP_WIN32_AVAILABLE) + return 10*1000*1000; +#elif defined(CRYPTOPP_UNIX_AVAILABLE) + static const long ticksPerSecond = sysconf(_SC_CLK_TCK); + return ticksPerSecond; +#else + return CLOCKS_PER_SEC; +#endif +} + +#ifdef HIGHRES_TIMER_AVAILABLE + +word64 Timer::GetCurrentTimerValue() +{ +#if defined(CRYPTOPP_WIN32_AVAILABLE) + LARGE_INTEGER now; + if (!QueryPerformanceCounter(&now)) + throw Exception(Exception::OTHER_ERROR, "Timer: QueryPerformanceCounter failed with error " + IntToString(GetLastError())); + return now.QuadPart; +#elif defined(CRYPTOPP_UNIX_AVAILABLE) + timeval now; + gettimeofday(&now, NULL); + return (word64)now.tv_sec * 1000000 + now.tv_usec; +#endif +} + +word64 Timer::TicksPerSecond() +{ +#if defined(CRYPTOPP_WIN32_AVAILABLE) + static LARGE_INTEGER freq = {0}; + if (freq.QuadPart == 0) + { + if (!QueryPerformanceFrequency(&freq)) + throw Exception(Exception::OTHER_ERROR, "Timer: QueryPerformanceFrequency failed with error " + IntToString(GetLastError())); + } + return freq.QuadPart; +#elif defined(CRYPTOPP_UNIX_AVAILABLE) + return 1000000; +#endif +} #endif + +NAMESPACE_END diff --git a/hrtimer.h b/hrtimer.h index 3b74b016..4c7402c4 100644 --- a/hrtimer.h +++ b/hrtimer.h @@ -5,8 +5,6 @@ NAMESPACE_BEGIN(CryptoPP) -#ifdef HIGHRES_TIMER_AVAILABLE - class TimerBase { public: @@ -28,17 +26,8 @@ private: word64 m_start; }; -//! high resolution timer -class Timer : public TimerBase -{ -public: - Timer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {} - word64 GetCurrentTimerValue(); - word64 TicksPerSecond(); -}; - //! measure CPU time spent executing instructions of this thread (if supported by OS) -/*! /note This only works correctly on Windows NT or later. On Unix it reports process time, and on Windows 98 wall clock time. +/*! /note This only works correctly on Windows NT or later. On Unix it reports process time, and others wall clock time. */ class ThreadUserTimer : public TimerBase { @@ -48,6 +37,17 @@ public: word64 TicksPerSecond(); }; +#ifdef HIGHRES_TIMER_AVAILABLE + +//! high resolution timer +class Timer : public TimerBase +{ +public: + Timer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {} + word64 GetCurrentTimerValue(); + word64 TicksPerSecond(); +}; + #endif NAMESPACE_END diff --git a/test.cpp b/test.cpp index 77546d2c..fcb7b250 100644 --- a/test.cpp +++ b/test.cpp @@ -24,7 +24,7 @@ #include #endif -#ifdef USE_BERKELEY_STYLE_SOCKETS +#if defined(USE_BERKELEY_STYLE_SOCKETS) && !defined(macintosh) #include #include #endif