diff options
author | unknown <msvensson@shellback.(none)> | 2006-04-07 11:35:12 +0200 |
---|---|---|
committer | unknown <msvensson@shellback.(none)> | 2006-04-07 11:35:12 +0200 |
commit | 78697215c1245f5ae4d6771fece4cf7d6c363131 (patch) | |
tree | 9cad353f5a7f89b9f7ee3d3d7e2de065f3dadab7 /extra/yassl/taocrypt/include/misc.hpp | |
parent | 9a1d80e90ef7a176da61d7c19f9b463076e8ad0c (diff) | |
download | mariadb-git-78697215c1245f5ae4d6771fece4cf7d6c363131.tar.gz |
Update yassl to 1.2.2
extra/yassl/examples/client/client.cpp:
Import patch yassl.diff
extra/yassl/README:
Import patch yassl.diff
extra/yassl/examples/client/client.dsp:
Import patch yassl.diff
extra/yassl/examples/echoclient/echoclient.cpp:
Import patch yassl.diff
extra/yassl/examples/echoclient/echoclient.dsp:
Import patch yassl.diff
extra/yassl/examples/echoclient/input:
Import patch yassl.diff
extra/yassl/examples/echoclient/quit:
Import patch yassl.diff
extra/yassl/examples/echoserver/echoserver.cpp:
Import patch yassl.diff
extra/yassl/examples/echoserver/echoserver.dsp:
Import patch yassl.diff
extra/yassl/examples/server/server.cpp:
Import patch yassl.diff
extra/yassl/examples/server/server.dsp:
Import patch yassl.diff
extra/yassl/include/cert_wrapper.hpp:
Import patch yassl.diff
extra/yassl/include/crypto_wrapper.hpp:
Import patch yassl.diff
extra/yassl/include/openssl/ssl.h:
Import patch yassl.diff
extra/yassl/include/socket_wrapper.hpp:
Import patch yassl.diff
extra/yassl/include/yassl.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_error.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_imp.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_int.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_types.hpp:
Import patch yassl.diff
extra/yassl/mySTL/helpers.hpp:
Import patch yassl.diff
extra/yassl/mySTL/list.hpp:
Import patch yassl.diff
extra/yassl/mySTL/vector.hpp:
Import patch yassl.diff
extra/yassl/src/buffer.cpp:
Import patch yassl.diff
extra/yassl/src/cert_wrapper.cpp:
Import patch yassl.diff
extra/yassl/src/crypto_wrapper.cpp:
Import patch yassl.diff
extra/yassl/src/handshake.cpp:
Import patch yassl.diff
extra/yassl/src/make.bat:
Import patch yassl.diff
extra/yassl/src/socket_wrapper.cpp:
Import patch yassl.diff
extra/yassl/src/ssl.cpp:
Import patch yassl.diff
extra/yassl/src/yassl.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/benchmark/benchmark.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/benchmark/benchmark.dsp:
Import patch yassl.diff
extra/yassl/taocrypt/benchmark/make.bat:
Import patch yassl.diff
extra/yassl/taocrypt/include/blowfish.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/kernelc.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/pwdbased.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/twofish.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/bftables.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/blowfish.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/make.bat:
Import patch yassl.diff
extra/yassl/taocrypt/src/tftables.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/twofish.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/test.dsp:
Import patch yassl.diff
extra/yassl/taocrypt/test.dsw:
Import patch yassl.diff
extra/yassl/taocrypt/test/make.bat:
Import patch yassl.diff
extra/yassl/taocrypt/test/memory.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/test/test.cpp:
Import patch yassl.diff
extra/yassl/testsuite/input:
Import patch yassl.diff
extra/yassl/src/timer.cpp:
Import patch yassl.diff
extra/yassl/src/yassl_error.cpp:
Import patch yassl.diff
extra/yassl/src/yassl_imp.cpp:
Import patch yassl.diff
extra/yassl/src/yassl_int.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/aes.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/arc4.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/asn.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/block.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/des.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/dh.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/hash.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/hmac.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/md5.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/misc.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/modes.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/ripemd.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/runtime.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/sha.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/types.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/aes.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/aestables.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/algebra.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/arc4.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/asn.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/coding.cpp:
Import patch yassl.diff
extra/yassl/testsuite/make.bat:
Import patch yassl.diff
extra/yassl/testsuite/quit:
Import patch yassl.diff
extra/yassl/testsuite/test.hpp:
Import patch yassl.diff
extra/yassl/testsuite/testsuite.cpp:
Import patch yassl.diff
extra/yassl/testsuite/testsuite.dsp:
Import patch yassl.diff
extra/yassl/taocrypt/src/des.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/dh.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/hash.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/integer.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/md5.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/misc.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/random.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/ripemd.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/sha.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/taocrypt.dsp:
Import patch yassl.diff
extra/yassl/yassl.dsp:
Import patch yassl.diff
extra/yassl/yassl.dsw:
Import patch yassl.diff
Diffstat (limited to 'extra/yassl/taocrypt/include/misc.hpp')
-rw-r--r-- | extra/yassl/taocrypt/include/misc.hpp | 159 |
1 files changed, 125 insertions, 34 deletions
diff --git a/extra/yassl/taocrypt/include/misc.hpp b/extra/yassl/taocrypt/include/misc.hpp index f705cc99970..7a71784893f 100644 --- a/extra/yassl/taocrypt/include/misc.hpp +++ b/extra/yassl/taocrypt/include/misc.hpp @@ -24,9 +24,15 @@ #ifndef TAO_CRYPT_MISC_HPP #define TAO_CRYPT_MISC_HPP -#include <stdlib.h> -#include <assert.h> -#include <string.h> + +#if !defined(DO_TAOCRYPT_KERNEL_MODE) + #include <stdlib.h> + #include <assert.h> + #include <string.h> +#else + #include "kernelc.hpp" +#endif + #include "types.hpp" #include "type_traits.hpp" @@ -34,31 +40,33 @@ namespace TaoCrypt { -// library allocation -struct new_t {}; // TaoCrypt New type -extern new_t tc; // pass in parameter +#ifdef YASSL_PURE_C -} // namespace TaoCrypt + // library allocation + struct new_t {}; // TaoCrypt New type + extern new_t tc; // pass in parameter -void* operator new (size_t, TaoCrypt::new_t); -void* operator new[](size_t, TaoCrypt::new_t); + } // namespace TaoCrypt -void operator delete (void*, TaoCrypt::new_t); -void operator delete[](void*, TaoCrypt::new_t); + void* operator new (size_t, TaoCrypt::new_t); + void* operator new[](size_t, TaoCrypt::new_t); + void operator delete (void*, TaoCrypt::new_t); + void operator delete[](void*, TaoCrypt::new_t); -namespace TaoCrypt { -template<typename T> -void tcDelete(T* ptr) -{ + namespace TaoCrypt { + + template<typename T> + void tcDelete(T* ptr) + { if (ptr) ptr->~T(); ::operator delete(ptr, TaoCrypt::tc); -} + } -template<typename T> -void tcArrayDelete(T* ptr) -{ + template<typename T> + void tcArrayDelete(T* ptr) + { // can't do array placement destruction since not tracking size in // allocation, only allow builtins to use array placement since they // don't need destructors called @@ -66,15 +74,39 @@ void tcArrayDelete(T* ptr) (void)sizeof(builtin); ::operator delete[](ptr, TaoCrypt::tc); -} + } + #define NEW_TC new (tc) -// to resolve compiler generated operator delete on base classes with -// virtual destructors (when on stack), make sure doesn't get called -class virtual_base { -public: + + // to resolve compiler generated operator delete on base classes with + // virtual destructors (when on stack), make sure doesn't get called + class virtual_base { + public: static void operator delete(void*) { assert(0); } -}; + }; + +#else // YASSL_PURE_C + + + template<typename T> + void tcDelete(T* ptr) + { + delete ptr; + } + + template<typename T> + void tcArrayDelete(T* ptr) + { + delete[] ptr; + } + + #define NEW_TC new + + class virtual_base {}; + + +#endif // YASSL_PURE_C #if defined(_MSC_VER) || defined(__BCPLUSPLUS__) @@ -91,19 +123,12 @@ public: // no gas on these systems ?, disable for now -#if defined(__sun__) || defined (__QNX__) || defined (__APPLE__) +#if defined(__sun__) || defined (__QNX__) #define TAOCRYPT_DISABLE_X86ASM #endif -// Disable assmebler when compiling with icc -// Temporary workaround for bug12717 -#if defined(__INTEL_COMPILER) - #define TAOCRYPT_DISABLE_X86ASM -#endif - - - +// Turn on ia32 ASM for Big Integer // CodeWarrior defines _MSC_VER #if !defined(TAOCRYPT_DISABLE_X86ASM) && ((defined(_MSC_VER) && \ !defined(__MWERKS__) && defined(_M_IX86)) || \ @@ -112,6 +137,20 @@ public: #endif +// Turn on ia32 ASM for Ciphers and Message Digests +// Seperate define since these are more complex, use member offsets +// and user may want to turn off while leaving Big Integer optos on +#if defined(TAOCRYPT_X86ASM_AVAILABLE) && !defined(DISABLE_TAO_ASM) + #define TAO_ASM +#endif + + +// Extra word in older vtable implementations, for ASM member offset +#if defined(__GNUC__) && __GNUC__ < 3 + #define OLD_GCC_OFFSET +#endif + + #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) # define TAOCRYPT_MALLOC_ALIGNMENT_IS_16 #endif @@ -432,6 +471,58 @@ inline void ByteReverseIf(T* out, const T* in, word32 bc, ByteOrder order) } + +// do Asm Reverse is host is Little and x86asm +#ifdef LITTLE_ENDIAN_ORDER + #ifdef TAOCRYPT_X86ASM_AVAILABLE + #define LittleReverse AsmReverse + #else + #define LittleReverse ByteReverse + #endif +#else + #define LittleReverse +#endif + + +// do Asm Reverse is host is Big and x86asm +#ifdef BIG_ENDIAN_ORDER + #ifdef TAOCRYPT_X86ASM_AVAILABLE + #define BigReverse AsmReverse + #else + #define BigReverse ByteReverse + #endif +#else + #define BigReverse +#endif + + +#ifdef TAOCRYPT_X86ASM_AVAILABLE + + // faster than rotate, use bswap + + inline word32 AsmReverse(word32 wd) + { + #ifdef __GNUC__ + __asm__ + ( + "bswap %1" + : "=r"(wd) + : "0"(wd) + ); + #else + __asm + { + mov eax, wd + bswap eax + mov wd, eax + } + #endif + return wd; + } + +#endif + + template <class T> inline void GetUserKey(ByteOrder order, T* out, word32 outlen, const byte* in, word32 inlen) |