diff options
-rw-r--r-- | md2.cpp | 5 | ||||
-rw-r--r-- | md2.h | 15 | ||||
-rw-r--r-- | md4.cpp | 3 | ||||
-rw-r--r-- | md4.h | 12 | ||||
-rw-r--r-- | md5.cpp | 3 | ||||
-rw-r--r-- | md5.h | 16 | ||||
-rw-r--r-- | wake.cpp | 27 | ||||
-rw-r--r-- | wake.h | 4 |
8 files changed, 67 insertions, 18 deletions
@@ -15,10 +15,12 @@ */ #include "pch.h" +#define CRYPTOPP_ENABLE_NAMESPACE_WEAK #include "md2.h" NAMESPACE_BEGIN(CryptoPP) - +namespace Weak { + MD2::MD2() : m_X(48), m_C(16), m_buf(16) { @@ -114,4 +116,5 @@ void MD2::TruncatedFinal(byte *hash, size_t size) Init(); } +} NAMESPACE_END @@ -6,8 +6,9 @@ NAMESPACE_BEGIN(CryptoPP) -/// <a href="http://www.weidai.com/scan-mirror/md.html#MD2">MD2</a> -/** 128 Bit Hash */ +namespace Weak { + +/// <a href="http://www.cryptolounge.org/wiki/MD2">MD2</a> class MD2 : public HashTransformation { public: @@ -28,6 +29,16 @@ private: unsigned int m_count; }; +} +#ifndef CRYPTOPP_ENABLE_NAMESPACE_WEAK +using namespace Weak; +#ifdef __GNUC__ +#warning "You may be using a weak algorithm that has been retained for backwards compatibility. Please define CRYPTOPP_ENABLE_NAMESPACE_WEAK and prepend the class name with 'Weak::' to remove this warning." +#else +#pragma message("You may be using a weak algorithm that has been retained for backwards compatibility. Please define CRYPTOPP_ENABLE_NAMESPACE_WEAK and prepend the class name with 'Weak::' to remove this warning.") +#endif +#endif + NAMESPACE_END #endif @@ -15,10 +15,12 @@ */ #include "pch.h" +#define CRYPTOPP_ENABLE_NAMESPACE_WEAK #include "md4.h" #include "misc.h" NAMESPACE_BEGIN(CryptoPP) +namespace Weak { void MD4::InitState(HashWordType *state) { @@ -104,4 +106,5 @@ void MD4::Transform (word32 *digest, const word32 *in) digest[3]+=D; } +} NAMESPACE_END @@ -5,6 +5,8 @@ NAMESPACE_BEGIN(CryptoPP) +namespace Weak { + //! <a href="http://www.weidai.com/scan-mirror/md.html#MD4">MD4</a> /*! \warning MD4 is considered insecure, and should not be used unless you absolutely need it for compatibility. */ @@ -16,6 +18,16 @@ public: static const char *StaticAlgorithmName() {return "MD4";} }; +} +#ifndef CRYPTOPP_ENABLE_NAMESPACE_WEAK +using namespace Weak; +#ifdef __GNUC__ +#warning "You may be using a weak algorithm that has been retained for backwards compatibility. Please define CRYPTOPP_ENABLE_NAMESPACE_WEAK and prepend the class name with 'Weak::' to remove this warning." +#else +#pragma message("You may be using a weak algorithm that has been retained for backwards compatibility. Please define CRYPTOPP_ENABLE_NAMESPACE_WEAK and prepend the class name with 'Weak::' to remove this warning.") +#endif +#endif + NAMESPACE_END #endif @@ -2,10 +2,12 @@ // any modifications are placed in the public domain #include "pch.h" +#define CRYPTOPP_ENABLE_NAMESPACE_WEAK #include "md5.h" #include "misc.h" NAMESPACE_BEGIN(CryptoPP) +namespace Weak { void MD5_TestInstantiations() { @@ -112,4 +114,5 @@ void MD5::Transform (word32 *digest, const word32 *in) digest[3]+=d; } +} NAMESPACE_END @@ -5,9 +5,9 @@ NAMESPACE_BEGIN(CryptoPP) -//! <a href="http://www.weidai.com/scan-mirror/md.html#MD5">MD5</a> -/*! \warning MD5 is considered insecure, and should not be used - unless you absolutely need it for compatibility. */ +namespace Weak { + +//! <a href="http://www.cryptolounge.org/wiki/MD5">MD5</a> class MD5 : public IteratedHashWithStaticTransform<word32, LittleEndian, 64, 16, MD5> { public: @@ -16,6 +16,16 @@ public: static const char * StaticAlgorithmName() {return "MD5";} }; +} +#ifndef CRYPTOPP_ENABLE_NAMESPACE_WEAK +using namespace Weak; +#ifdef __GNUC__ +#warning "You may be using a weak algorithm that has been retained for backwards compatibility. Please define CRYPTOPP_ENABLE_NAMESPACE_WEAK and prepend the class name with 'Weak::' to remove this warning." +#else +#pragma message("You may be using a weak algorithm that has been retained for backwards compatibility. Please define CRYPTOPP_ENABLE_NAMESPACE_WEAK and prepend the class name with 'Weak::' to remove this warning.") +#endif +#endif + NAMESPACE_END #endif @@ -7,8 +7,8 @@ NAMESPACE_BEGIN(CryptoPP) void WAKE_TestInstantiations() { - WAKE_CFB<>::Encryption x1; - WAKE_CFB<>::Decryption x3; + Weak::WAKE_CFB<>::Encryption x1; + Weak::WAKE_CFB<>::Decryption x3; WAKE_OFB<>::Encryption x2; WAKE_OFB<>::Decryption x4; } @@ -85,16 +85,21 @@ void WAKE_Policy<B>::Iterate(byte *output, const byte *input, CipherDir dir, siz template <class B> void WAKE_Policy<B>::OperateKeystream(KeystreamOperation operation, byte *output, const byte *input, size_t iterationCount) { - KeystreamOutput<B> keystreamOperation(operation, output, input); - - while (iterationCount--) - { - keystreamOperation(r6); - r3 = M(r3, r6); - r4 = M(r4, r3); - r5 = M(r5, r4); - r6 = M(r6, r5); +#define WAKE_OUTPUT(x)\ + while (iterationCount--)\ + {\ + CRYPTOPP_KEYSTREAM_OUTPUT_WORD(x, B::ToEnum(), 0, r6);\ + r3 = M(r3, r6);\ + r4 = M(r4, r3);\ + r5 = M(r5, r4);\ + r6 = M(r6, r5);\ + output += 4;\ + if (x == XOR_KEYSTREAM)\ + input += 4;\ } + + typedef word32 WordType; + CRYPTOPP_KEYSTREAM_OUTPUT_SWITCH(WAKE_OUTPUT, 0); } /* template <class B> @@ -47,13 +47,15 @@ protected: bool IsRandomAccess() const {return false;} }; -//! <a href="http://www.weidai.com/scan-mirror/cs.html#WAKE-CFB-BE">WAKE-CFB-BE</a> +namespace Weak { +//! <a href="http://www.cryptolounge.org/wiki/WAKE">WAKE-CFB-BE</a> template <class B = BigEndian> struct WAKE_CFB : public WAKE_CFB_Info<B>, public SymmetricCipherDocumentation { typedef SymmetricCipherFinal<ConcretePolicyHolder<WAKE_Policy<B>, CFB_EncryptionTemplate<> >, WAKE_CFB_Info<B> > Encryption; typedef SymmetricCipherFinal<ConcretePolicyHolder<WAKE_Policy<B>, CFB_DecryptionTemplate<> >, WAKE_CFB_Info<B> > Decryption; }; +} //! WAKE-OFB template <class B = BigEndian> |