diff options
author | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2009-03-04 09:27:52 +0000 |
---|---|---|
committer | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2009-03-04 09:27:52 +0000 |
commit | 15b0c807eb736f7f3800a514fc9a099466654ab9 (patch) | |
tree | daab854b2a29bd8884224e9118cecebf04ca53c7 | |
parent | d73287b2b051540d487b5ac6f8aea342aa5b9678 (diff) | |
download | cryptopp-15b0c807eb736f7f3800a514fc9a099466654ab9.tar.gz |
fix compile on ICC 11
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@438 57ff6487-cd31-0410-9ec3-f628ee90f5f0
-rw-r--r-- | GNUmakefile | 6 | ||||
-rw-r--r-- | adler32.h | 3 | ||||
-rw-r--r-- | bench.cpp | 42 | ||||
-rw-r--r-- | crc.h | 3 | ||||
-rw-r--r-- | dll.h | 3 | ||||
-rw-r--r-- | regtest.cpp | 8 | ||||
-rw-r--r-- | strciphr.h | 1 |
7 files changed, 26 insertions, 40 deletions
diff --git a/GNUmakefile b/GNUmakefile index d59c71c..8f07552 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -35,6 +35,12 @@ CXXFLAGS += -march=native -mtune=native endif endif +ifneq ($(INTEL_COMPILER),0) +# "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and some x64 inline assembly with ICC 11 +# if you want to use Crypto++'s assembly code with ICC, try enabling it on individual files +CXXFLAGS += -DCRYPTOPP_DISABLE_ASM +endif + ifeq ($(GAS210_OR_LATER),0) # .intel_syntax wasn't supported until GNU assembler 2.10 CXXFLAGS += -DCRYPTOPP_DISABLE_ASM else @@ -14,7 +14,8 @@ public: void Update(const byte *input, size_t length); void TruncatedFinal(byte *hash, size_t size); unsigned int DigestSize() const {return DIGESTSIZE;} - std::string AlgorithmName() const {return "Adler32";} + static const char * StaticAlgorithmName() {return "Adler32";} + std::string AlgorithmName() const {return StaticAlgorithmName();} private: void Reset() {m_s1 = 1; m_s2 = 0;} @@ -3,10 +3,6 @@ #define _CRT_SECURE_NO_DEPRECATE #include "bench.h" -#include "crc.h" -#include "adler32.h" -#include "wake.h" -#include "seal.h" #include "aes.h" #include "blumshub.h" #include "rng.h" @@ -178,34 +174,6 @@ void BenchMarkKeying(SimpleKeyingInterface &c, size_t keyLength, const NameValue } //VC60 workaround: compiler bug triggered without the extra dummy parameters -template <class T> -void BenchMarkKeyed(const char *name, double timeTotal, const NameValuePairs ¶ms = g_nullNameValuePairs, T *x=NULL) -{ - T c; - c.SetKey(key, c.DefaultKeyLength(), CombinedNameValuePairs(params, MakeParameters(Name::IV(), ConstByteArrayParameter(key, c.IVSize()), false))); - BenchMark(name, c, timeTotal); - BenchMarkKeying(c, c.DefaultKeyLength(), CombinedNameValuePairs(params, MakeParameters(Name::IV(), ConstByteArrayParameter(key, c.IVSize()), false))); -} - -//VC60 workaround: compiler bug triggered without the extra dummy parameters -template <class T> -void BenchMarkKeyedVariable(const char *name, double timeTotal, unsigned int keyLength, const NameValuePairs ¶ms = g_nullNameValuePairs, T *x=NULL) -{ - T c; - c.SetKey(key, keyLength, CombinedNameValuePairs(params, MakeParameters(Name::IV(), ConstByteArrayParameter(key, c.IVSize()), false))); - BenchMark(name, c, timeTotal); - BenchMarkKeying(c, keyLength, CombinedNameValuePairs(params, MakeParameters(Name::IV(), ConstByteArrayParameter(key, c.IVSize()), false))); -} - -//VC60 workaround: compiler bug triggered without the extra dummy parameters -template <class T> -void BenchMarkKeyless(const char *name, double timeTotal, T *x=NULL) -{ - T c; - BenchMark(name, c, timeTotal); -} - -//VC60 workaround: compiler bug triggered without the extra dummy parameters // on VC60 also needs to be named differently from BenchMarkByName template <class T_FactoryOutput, class T_Interface> void BenchMarkByName2(const char *factoryName, size_t keyLength = 0, const char *displayName=NULL, const NameValuePairs ¶ms = g_nullNameValuePairs, T_FactoryOutput *x=NULL, T_Interface *y=NULL) @@ -282,8 +250,8 @@ void BenchmarkAll(double t, double hertz) BenchMarkByName<MessageAuthenticationCode>("DMAC(AES)"); cout << "\n<TBODY style=\"background: yellow\">"; - BenchMarkKeyless<CRC32>("CRC-32", t); - BenchMarkKeyless<Adler32>("Adler-32", t); + BenchMarkByNameKeyLess<HashTransformation>("CRC32"); + BenchMarkByNameKeyLess<HashTransformation>("Adler32"); BenchMarkByNameKeyLess<HashTransformation>("MD5"); BenchMarkByNameKeyLess<HashTransformation>("SHA-1"); BenchMarkByNameKeyLess<HashTransformation>("SHA-256"); @@ -303,10 +271,8 @@ void BenchmarkAll(double t, double hertz) BenchMarkByName<SymmetricCipher>("Salsa20", 0, "Salsa20/8", MakeParameters(Name::Rounds(), 8)); BenchMarkByName<SymmetricCipher>("Sosemanuk"); BenchMarkByName<SymmetricCipher>("MARC4"); - BenchMarkKeyed<SEAL<BigEndian>::Encryption>("SEAL-3.0-BE", t); - BenchMarkKeyed<SEAL<LittleEndian>::Encryption>("SEAL-3.0-LE", t); - BenchMarkKeyed<WAKE_OFB<BigEndian>::Encryption>("WAKE-OFB-BE", t); - BenchMarkKeyed<WAKE_OFB<LittleEndian>::Encryption>("WAKE-OFB-LE", t); + BenchMarkByName<SymmetricCipher>("SEAL-3.0-LE"); + BenchMarkByName<SymmetricCipher>("WAKE-OFB-LE"); cout << "\n<TBODY style=\"background: yellow\">"; BenchMarkByName<SymmetricCipher>("AES/CTR", 16); @@ -24,7 +24,8 @@ public: void Update(const byte *input, size_t length); void TruncatedFinal(byte *hash, size_t size); unsigned int DigestSize() const {return DIGESTSIZE;} - std::string AlgorithmName() const {return "CRC32";} + static const char * StaticAlgorithmName() {return "CRC32";} + std::string AlgorithmName() const {return StaticAlgorithmName();} void UpdateByte(byte b) {m_crc = m_tab[CRC32_INDEX(m_crc) ^ b] ^ CRC32_SHIFTED(m_crc);} byte GetCrcByte(size_t i) const {return ((byte *)&(m_crc))[i];} @@ -10,6 +10,8 @@ #include "aes.h" #include "cbcmac.h" +#include "ccm.h" +#include "cmac.h" #include "channels.h" #include "des.h" #include "dh.h" @@ -19,6 +21,7 @@ #include "ecp.h" #include "files.h" #include "fips140.h" +#include "gcm.h" #include "hex.h" #include "hmac.h" #include "modes.h" diff --git a/regtest.cpp b/regtest.cpp index 8f85bc9..6a32e6c 100644 --- a/regtest.cpp +++ b/regtest.cpp @@ -42,6 +42,10 @@ #include "dmac.h" #include "blowfish.h" #include "seed.h" +#include "wake.h" +#include "seal.h" +#include "crc.h" +#include "adler32.h" USING_NAMESPACE(CryptoPP) @@ -52,6 +56,8 @@ void RegisterFactories() return; RegisterDefaultFactoryFor<SimpleKeyAgreementDomain, DH>(); + RegisterDefaultFactoryFor<HashTransformation, CRC32>(); + RegisterDefaultFactoryFor<HashTransformation, Adler32>(); RegisterDefaultFactoryFor<HashTransformation, Weak::MD5>(); RegisterDefaultFactoryFor<HashTransformation, SHA1>(); RegisterDefaultFactoryFor<HashTransformation, SHA224>(); @@ -102,6 +108,8 @@ void RegisterFactories() RegisterSymmetricCipherDefaultFactories<Salsa20>(); RegisterSymmetricCipherDefaultFactories<Sosemanuk>(); RegisterSymmetricCipherDefaultFactories<Weak::MARC4>(); + RegisterSymmetricCipherDefaultFactories<WAKE_OFB<LittleEndian> >(); + RegisterSymmetricCipherDefaultFactories<SEAL<LittleEndian> >(); RegisterAuthenticatedSymmetricCipherDefaultFactories<CCM<AES> >(); RegisterAuthenticatedSymmetricCipherDefaultFactories<GCM<AES> >(); RegisterSymmetricCipherDefaultFactories<CTR_Mode<Camellia> >(); @@ -39,6 +39,7 @@ class CRYPTOPP_NO_VTABLE AbstractPolicyHolder : public BASE { public: typedef POLICY_INTERFACE PolicyInterface; + virtual ~AbstractPolicyHolder() {} protected: virtual const POLICY_INTERFACE & GetPolicy() const =0; |