always include <string.h> (we do this in various other header files,
[openssl.git] / crypto / des / des_locl.h
index c9312f806a97e1df75dc21d234fd760c7bcc328d..9e033f7c2e9a87ae3ab935106d9411a808c12e2b 100644 (file)
 #ifndef HEADER_DES_LOCL_H
 #define HEADER_DES_LOCL_H
 
-#if defined(WIN32) || defined(WIN16)
-#ifndef MSDOS
-#define MSDOS
+#include <openssl/e_os2.h>
+
+#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
+#ifndef OPENSSL_SYS_MSDOS
+#define OPENSSL_SYS_MSDOS
 #endif
 #endif
 
 #include <stdio.h>
 #include <stdlib.h>
-#ifndef MSDOS
-#if !defined(VMS) || defined(__DECC)
-#include <unistd.h>
+#include <string.h>
+
+#ifndef OPENSSL_SYS_MSDOS
+#if !defined(OPENSSL_SYS_VMS) || defined(__DECC)
+#ifdef OPENSSL_UNISTD
+# include OPENSSL_UNISTD
+#else
+# include <unistd.h>
+#endif
+#include <math.h>
 #endif
 #endif
 #include <openssl/des.h>
 
-#include <openssl/opensslconf.h>
-
-#ifdef MSDOS           /* Visual C++ 2.1 (Windows NT/95) */
+#ifdef OPENSSL_SYS_MSDOS               /* Visual C++ 2.1 (Windows NT/95) */
 #include <stdlib.h>
 #include <errno.h>
 #include <time.h>
 #include <io.h>
-#ifndef RAND
-#define RAND
-#endif
-#endif
-
-#ifdef VMS
-#ifndef __DECC
-#include <math.h>
-#define RAND
-#else
-#if __CRTL_VER < 70000000
-#define RAND
-#endif
-#endif
-#endif
-
-#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
-#include <string.h>
-#endif
-
-#ifndef RAND
-#define RAND
-#endif
-
-#ifdef linux
-#undef RAND
-#endif
-
-#ifdef MSDOS
-#define getpid() 2
-#define RAND
 #endif
 
-#ifdef RAND
-#define srandom(s) srand(s)
-#define random rand
+#ifdef OPENSSL_BUILD_SHLIBCRYPTO
+# undef OPENSSL_EXTERN
+# define OPENSSL_EXTERN OPENSSL_EXPORT
 #endif
 
 #define ITERATIONS 16
                                } \
                        }
 
-#if defined(WIN32)
+#if defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)
 #define        ROTATE(a,n)     (_lrotr(a,n))
 #else
 #define        ROTATE(a,n)     (((a)>>(n))+((a)<<(32-(n))))
 #endif
 
 /* The changes to this macro may help or hinder, depending on the
- * compiler and the achitecture.  gcc2 always seems to do well :-).
+ * compiler and the architecture.  gcc2 always seems to do well :-).
  * Inspired by Dana How <how@isl.stanford.edu>
  * DO NOT use the alternative version on machines with 8 byte longs.
  * It does not seem to work on the Alpha, even when DES_LONG is 4
  * bytes, probably an issue of accessing non-word aligned objects :-( */
 #ifdef DES_PTR
 
-/* It recently occured to me that 0^0^0^0^0^0^0 == 0, so there
+/* It recently occurred to me that 0^0^0^0^0^0^0 == 0, so there
  * is no reason to not xor all the sub items together.  This potentially
  * saves a register since things can be xored directly into L */
 
        u1=(int)u&0x3f; \
        u2&=0x3f; \
        u>>=16L; \
-       LL^=des_SPtrans[0][u1]; \
-       LL^=des_SPtrans[2][u2]; \
+       LL^=DES_SPtrans[0][u1]; \
+       LL^=DES_SPtrans[2][u2]; \
        u3=(int)u>>8L; \
        u1=(int)u&0x3f; \
        u3&=0x3f; \
-       LL^=des_SPtrans[4][u1]; \
-       LL^=des_SPtrans[6][u3]; \
+       LL^=DES_SPtrans[4][u1]; \
+       LL^=DES_SPtrans[6][u3]; \
        u2=(int)t>>8L; \
        u1=(int)t&0x3f; \
        u2&=0x3f; \
        t>>=16L; \
-       LL^=des_SPtrans[1][u1]; \
-       LL^=des_SPtrans[3][u2]; \
+       LL^=DES_SPtrans[1][u1]; \
+       LL^=DES_SPtrans[3][u2]; \
        u3=(int)t>>8L; \
        u1=(int)t&0x3f; \
        u3&=0x3f; \
-       LL^=des_SPtrans[5][u1]; \
-       LL^=des_SPtrans[7][u3]; }
+       LL^=DES_SPtrans[5][u1]; \
+       LL^=DES_SPtrans[7][u3]; }
 #endif
 #ifdef DES_RISC2
 #define D_ENCRYPT(LL,R,S) {\
        u2=(int)u>>8L; \
        u1=(int)u&0x3f; \
        u2&=0x3f; \
-       LL^=des_SPtrans[0][u1]; \
-       LL^=des_SPtrans[2][u2]; \
+       LL^=DES_SPtrans[0][u1]; \
+       LL^=DES_SPtrans[2][u2]; \
        s1=(int)u>>16L; \
        s2=(int)u>>24L; \
        s1&=0x3f; \
        s2&=0x3f; \
-       LL^=des_SPtrans[4][s1]; \
-       LL^=des_SPtrans[6][s2]; \
+       LL^=DES_SPtrans[4][s1]; \
+       LL^=DES_SPtrans[6][s2]; \
        u2=(int)t>>8L; \
        u1=(int)t&0x3f; \
        u2&=0x3f; \
-       LL^=des_SPtrans[1][u1]; \
-       LL^=des_SPtrans[3][u2]; \
+       LL^=DES_SPtrans[1][u1]; \
+       LL^=DES_SPtrans[3][u2]; \
        s1=(int)t>>16; \
        s2=(int)t>>24L; \
        s1&=0x3f; \
        s2&=0x3f; \
-       LL^=des_SPtrans[5][s1]; \
-       LL^=des_SPtrans[7][s2]; }
+       LL^=DES_SPtrans[5][s1]; \
+       LL^=DES_SPtrans[7][s2]; }
 #endif
 
 #else
        LOAD_DATA_tmp(R,S,u,t,E0,E1); \
        t=ROTATE(t,4); \
        LL^=\
-               des_SPtrans[0][(u>> 2L)&0x3f]^ \
-               des_SPtrans[2][(u>>10L)&0x3f]^ \
-               des_SPtrans[4][(u>>18L)&0x3f]^ \
-               des_SPtrans[6][(u>>26L)&0x3f]^ \
-               des_SPtrans[1][(t>> 2L)&0x3f]^ \
-               des_SPtrans[3][(t>>10L)&0x3f]^ \
-               des_SPtrans[5][(t>>18L)&0x3f]^ \
-               des_SPtrans[7][(t>>26L)&0x3f]; }
+               DES_SPtrans[0][(u>> 2L)&0x3f]^ \
+               DES_SPtrans[2][(u>>10L)&0x3f]^ \
+               DES_SPtrans[4][(u>>18L)&0x3f]^ \
+               DES_SPtrans[6][(u>>26L)&0x3f]^ \
+               DES_SPtrans[1][(t>> 2L)&0x3f]^ \
+               DES_SPtrans[3][(t>>10L)&0x3f]^ \
+               DES_SPtrans[5][(t>>18L)&0x3f]^ \
+               DES_SPtrans[7][(t>>26L)&0x3f]; }
 #endif
 #endif
 
        PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
        }
 
-OPENSSL_EXTERN const DES_LONG des_SPtrans[8][64];
+OPENSSL_EXTERN const DES_LONG DES_SPtrans[8][64];
 
-void fcrypt_body(DES_LONG *out,des_key_schedule ks,
-       DES_LONG Eswap0, DES_LONG Eswap1);
+void fcrypt_body(DES_LONG *out,DES_key_schedule *ks,
+                DES_LONG Eswap0, DES_LONG Eswap1);
 #endif