* aesopt.h (PLATFORM_BYTE_ORDER): Treat _WIN32 as always
authorTom Yu <tlyu@mit.edu>
Tue, 25 May 2004 21:48:02 +0000 (21:48 +0000)
committerTom Yu <tlyu@mit.edu>
Tue, 25 May 2004 21:48:02 +0000 (21:48 +0000)
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.

ticket: 2564

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16362 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/crypto/aes/ChangeLog
src/lib/crypto/aes/aesopt.h

index 033ae9bc3e113ee9228a295dc4ba5c61fbf51793..77b4c3c1923b9317e98284ec212c6b99dc1a7638 100644 (file)
@@ -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-13  Ken Raeburn  <raeburn@mit.edu>
 
        * Makefile.in (aes-test): Link test program against thread support
index da5c83be2aa46a894cc7ea44499892cded327943..0eebd46aef0b086c8f249a29a5ada72ad0baa4dc 100644 (file)
 #  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>
 #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 
 #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