aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/crypto/aes/ChangeLog8
-rw-r--r--src/lib/crypto/aes/aesopt.h26
2 files changed, 23 insertions, 11 deletions
diff --git a/src/lib/crypto/aes/ChangeLog b/src/lib/crypto/aes/ChangeLog
index f937690..6955bc1 100644
--- a/src/lib/crypto/aes/ChangeLog
+++ b/src/lib/crypto/aes/ChangeLog
@@ -1,3 +1,11 @@
+2004-05-25 Tom Yu <tlyu@mit.edu>
+
+ * aesopt.h (PLATFORM_BYTE_ORDER): Treat _WIN32 as always
+ little-endian. Default to little-endian if there's no other
+ compile-time way to detect endianness, noting it as a guess.
+ (SAFE_IO): Error out if SAFE_IO is not set and endianness was
+ guessed.
+
2004-05-07 Ken Raeburn <raeburn@mit.edu>
* aesopt.h (PLATFORM_BYTE_ORDER): Check for _MIPSEB, _MIPSEL. If
diff --git a/src/lib/crypto/aes/aesopt.h b/src/lib/crypto/aes/aesopt.h
index da5c83b..0eebd46 100644
--- a/src/lib/crypto/aes/aesopt.h
+++ b/src/lib/crypto/aes/aesopt.h
@@ -180,7 +180,9 @@
# define PLATFORM_BYTE_ORDER AES_BIG_ENDIAN
#elif defined(_MIPSEL)
# define PLATFORM_BYTE_ORDER AES_LITTLE_ENDIAN
-#elif !defined(WIN32)
+#elif defined(_WIN32)
+# define PLATFORM_BYTE_ORDER AES_LITTLE_ENDIAN
+#elif !defined(_WIN32)
# include <stdlib.h>
# if defined(HAVE_ENDIAN_H)
# include <endian.h>
@@ -236,19 +238,12 @@
#define PLATFORM_BYTE_ORDER AES_LITTLE_ENDIAN
#elif 0 /* **** EDIT HERE IF NECESSARY **** */
#define PLATFORM_BYTE_ORDER AES_BIG_ENDIAN
-#else
-# error "barf"
-/*#elif (('1234' >> 24) == '1')
-# define PLATFORM_BYTE_ORDER AES_LITTLE_ENDIAN
-#elif (('4321' >> 24) == '1')
-# define PLATFORM_BYTE_ORDER AES_BIG_ENDIAN*/
+#elif 1
+#define PLATFORM_BYTE_ORDER AES_LITTLE_ENDIAN
+#define UNKNOWN_BYTE_ORDER /* we're guessing */
#endif
#endif
-#if !defined(PLATFORM_BYTE_ORDER)
-# error Please set undetermined byte order (lines 229 or 231 of aesopt.h).
-#endif
-
/* 3. ASSEMBLER SUPPORT
If the assembler code is used for encryption and decryption this file only
@@ -352,6 +347,15 @@
#define SAFE_IO
#endif
+/*
+ * If PLATFORM_BYTE_ORDER does not match the actual machine byte
+ * order, the fast word-access code will cause incorrect results.
+ * Therefore, SAFE_IO is required when the byte order is unknown.
+ */
+#if !defined(SAFE_IO) && defined(UNKNOWN_BYTE_ORDER)
+# error "SAFE_IO must be defined if machine byte order is unknown."
+#endif
+
/* 7. LOOP UNROLLING
The code for encryption and decrytpion cycles through a number of rounds