VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Platform/Memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Platform/Memory.h')
-rw-r--r--src/Platform/Memory.h338
1 files changed, 169 insertions, 169 deletions
diff --git a/src/Platform/Memory.h b/src/Platform/Memory.h
index ddf1205c..69ce2211 100644
--- a/src/Platform/Memory.h
+++ b/src/Platform/Memory.h
@@ -3,176 +3,176 @@
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
by the TrueCrypt License 3.0.
- Modifications and additions to the original source code (contained in this file)
+ Modifications and additions to the original source code (contained in this file)
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
and are governed by the Apache License 2.0 the full text of which is
contained in the file License.txt included in VeraCrypt binary and source
code distribution packages.
-*/
-
-#ifndef TC_HEADER_Platform_Memory
-#define TC_HEADER_Platform_Memory
-
-#include <new>
-#include <memory.h>
-#include "PlatformBase.h"
-
-#ifdef TC_WINDOWS
-
-# ifndef LITTLE_ENDIAN
-# define LITTLE_ENDIAN 1234
-# endif
-# ifndef BYTE_ORDER
-# define BYTE_ORDER LITTLE_ENDIAN
-# endif
-
-#elif !defined(BYTE_ORDER)
-
-# ifdef TC_MACOSX
-# include <machine/endian.h>
-# elif defined (TC_BSD)
-# include <sys/endian.h>
-# elif defined (TC_SOLARIS)
-# include <sys/types.h>
-# define LITTLE_ENDIAN 1234
-# define BIG_ENDIAN 4321
-# ifdef _BIG_ENDIAN
-# define BYTE_ORDER BIG_ENDIAN
-# else
-# define BYTE_ORDER LITTLE_ENDIAN
-# endif
-# else
-# include <endian.h>
-# endif
-
-# ifndef BYTE_ORDER
-# ifndef __BYTE_ORDER
-# error Byte ordering cannot be determined (BYTE_ORDER undefined).
-# endif
-
-# define BYTE_ORDER __BYTE_ORDER
-# endif
-
-# ifndef LITTLE_ENDIAN
-# define LITTLE_ENDIAN __LITTLE_ENDIAN
-# endif
-
-# ifndef BIG_ENDIAN
-# define BIG_ENDIAN __BIG_ENDIAN
-# endif
-
-#endif // !BYTE_ORDER
-
-#if BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN
-# error Unsupported byte ordering detected.
-#endif
-
-namespace VeraCrypt
-{
- class Memory
- {
- public:
- static void *Allocate (size_t size);
- static int Compare (const void *memory1, size_t size1, const void *memory2, size_t size2);
- static void Copy (void *memoryDestination, const void *memorySource, size_t size);
- static void Erase (void *memory, size_t size);
- static void Free (void *memory);
- static void Zero (void *memory, size_t size);
- };
-
- class Endian
- {
- public:
- static byte Big (const byte &x)
- {
- return x;
- }
-
- static uint16 Big (const uint16 &x)
- {
-#if BYTE_ORDER == BIG_ENDIAN
- return x;
-#else
- return MirrorBytes (x);
-#endif
- }
-
- static uint32 Big (const uint32 &x)
- {
-#if BYTE_ORDER == BIG_ENDIAN
- return x;
-#else
- return MirrorBytes (x);
-#endif
- }
-
- static uint64 Big (const uint64 &x)
- {
-#if BYTE_ORDER == BIG_ENDIAN
- return x;
-#else
- return MirrorBytes (x);
-#endif
- }
-
- static byte Little (const byte &x)
- {
- return x;
- }
-
- static uint16 Little (const uint16 &x)
- {
-#if BYTE_ORDER == LITTLE_ENDIAN
- return x;
-#else
- return MirrorBytes (x);
-#endif
- }
-
- static uint32 Little (const uint32 &x)
- {
-#if BYTE_ORDER == LITTLE_ENDIAN
- return x;
-#else
- return MirrorBytes (x);
-#endif
- }
-
- static uint64 Little (const uint64 &x)
- {
-#if BYTE_ORDER == LITTLE_ENDIAN
- return x;
-#else
- return MirrorBytes (x);
-#endif
- }
-
- protected:
- static uint16 MirrorBytes (const uint16 &x)
- {
- return (x << 8) | (x >> 8);
- }
-
- static uint32 MirrorBytes (const uint32 &x)
- {
- uint32 n = (byte) x;
- n <<= 8; n |= (byte) (x >> 8);
- n <<= 8; n |= (byte) (x >> 16);
- return (n << 8) | (byte) (x >> 24);
- }
-
- static uint64 MirrorBytes (const uint64 &x)
- {
- uint64 n = (byte) x;
- n <<= 8; n |= (byte) (x >> 8);
- n <<= 8; n |= (byte) (x >> 16);
- n <<= 8; n |= (byte) (x >> 24);
- n <<= 8; n |= (byte) (x >> 32);
- n <<= 8; n |= (byte) (x >> 40);
- n <<= 8; n |= (byte) (x >> 48);
- return (n << 8) | (byte) (x >> 56);
- }
- };
-}
-
-#endif // TC_HEADER_Platform_Memory
+*/
+
+#ifndef TC_HEADER_Platform_Memory
+#define TC_HEADER_Platform_Memory
+
+#include <new>
+#include <memory.h>
+#include "PlatformBase.h"
+
+#ifdef TC_WINDOWS
+
+# ifndef LITTLE_ENDIAN
+# define LITTLE_ENDIAN 1234
+# endif
+# ifndef BYTE_ORDER
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+#elif !defined(BYTE_ORDER)
+
+# ifdef TC_MACOSX
+# include <machine/endian.h>
+# elif defined (TC_BSD)
+# include <sys/endian.h>
+# elif defined (TC_SOLARIS)
+# include <sys/types.h>
+# define LITTLE_ENDIAN 1234
+# define BIG_ENDIAN 4321
+# ifdef _BIG_ENDIAN
+# define BYTE_ORDER BIG_ENDIAN
+# else
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+# else
+# include <endian.h>
+# endif
+
+# ifndef BYTE_ORDER
+# ifndef __BYTE_ORDER
+# error Byte ordering cannot be determined (BYTE_ORDER undefined).
+# endif
+
+# define BYTE_ORDER __BYTE_ORDER
+# endif
+
+# ifndef LITTLE_ENDIAN
+# define LITTLE_ENDIAN __LITTLE_ENDIAN
+# endif
+
+# ifndef BIG_ENDIAN
+# define BIG_ENDIAN __BIG_ENDIAN
+# endif
+
+#endif // !BYTE_ORDER
+
+#if BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN
+# error Unsupported byte ordering detected.
+#endif
+
+namespace VeraCrypt
+{
+ class Memory
+ {
+ public:
+ static void *Allocate (size_t size);
+ static int Compare (const void *memory1, size_t size1, const void *memory2, size_t size2);
+ static void Copy (void *memoryDestination, const void *memorySource, size_t size);
+ static void Erase (void *memory, size_t size);
+ static void Free (void *memory);
+ static void Zero (void *memory, size_t size);
+ };
+
+ class Endian
+ {
+ public:
+ static byte Big (const byte &x)
+ {
+ return x;
+ }
+
+ static uint16 Big (const uint16 &x)
+ {
+#if BYTE_ORDER == BIG_ENDIAN
+ return x;
+#else
+ return MirrorBytes (x);
+#endif
+ }
+
+ static uint32 Big (const uint32 &x)
+ {
+#if BYTE_ORDER == BIG_ENDIAN
+ return x;
+#else
+ return MirrorBytes (x);
+#endif
+ }
+
+ static uint64 Big (const uint64 &x)
+ {
+#if BYTE_ORDER == BIG_ENDIAN
+ return x;
+#else
+ return MirrorBytes (x);
+#endif
+ }
+
+ static byte Little (const byte &x)
+ {
+ return x;
+ }
+
+ static uint16 Little (const uint16 &x)
+ {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ return x;
+#else
+ return MirrorBytes (x);
+#endif
+ }
+
+ static uint32 Little (const uint32 &x)
+ {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ return x;
+#else
+ return MirrorBytes (x);
+#endif
+ }
+
+ static uint64 Little (const uint64 &x)
+ {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ return x;
+#else
+ return MirrorBytes (x);
+#endif
+ }
+
+ protected:
+ static uint16 MirrorBytes (const uint16 &x)
+ {
+ return (x << 8) | (x >> 8);
+ }
+
+ static uint32 MirrorBytes (const uint32 &x)
+ {
+ uint32 n = (byte) x;
+ n <<= 8; n |= (byte) (x >> 8);
+ n <<= 8; n |= (byte) (x >> 16);
+ return (n << 8) | (byte) (x >> 24);
+ }
+
+ static uint64 MirrorBytes (const uint64 &x)
+ {
+ uint64 n = (byte) x;
+ n <<= 8; n |= (byte) (x >> 8);
+ n <<= 8; n |= (byte) (x >> 16);
+ n <<= 8; n |= (byte) (x >> 24);
+ n <<= 8; n |= (byte) (x >> 32);
+ n <<= 8; n |= (byte) (x >> 40);
+ n <<= 8; n |= (byte) (x >> 48);
+ return (n << 8) | (byte) (x >> 56);
+ }
+ };
+}
+
+#endif // TC_HEADER_Platform_Memory