Final(?) WinCE update.
authorAndy Polyakov <appro@openssl.org>
Sun, 7 Aug 2005 22:21:49 +0000 (22:21 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 7 Aug 2005 22:21:49 +0000 (22:21 +0000)
CHANGES
crypto/des/des_old.h
crypto/ec/ectest.c
crypto/rand/rand_win.c
crypto/rc2/rc2_skey.c
crypto/rsa/rsa_pss.c
crypto/ui/ui_locl.h
util/pl/VC-32.pl

diff --git a/CHANGES b/CHANGES
index d025d78..bc7e070 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -14,6 +14,9 @@
 
  Changes between 0.9.8 and 0.9.8a  [XX xxx XXXX]
 
+  *) Extended Windows CE support.
+     [Satoshi Nakamura and Andy Polyakov]
   *) Initialize SSL_METHOD structures at compile time instead of during
      runtime, thus removing the need for a lock.
      [Steve Henson]
index 9f43992..1b0620c 100644 (file)
 extern "C" {
 #endif
 
+#ifdef _
+#undef _
+#endif
+
 typedef unsigned char _ossl_old_des_cblock[8];
 typedef struct _ossl_old_des_ks_struct
        {
index fdca4b4..df506e1 100644 (file)
@@ -95,6 +95,11 @@ int main(int argc, char * argv[]) { puts("Elliptic curves are disabled."); retur
 #include <openssl/rand.h>
 #include <openssl/bn.h>
 
+#if defined(_MSC_VER) && defined(_MIPS_) && _MSC_VER<1300
+/* suppress "too big too optimize" warning */
+#pragma warning(disable:4959)
+#endif
+
 #define ABORT do { \
        fflush(stdout); \
        fprintf(stderr, "%s:%d: ABORT\n", __FILE__, __LINE__); \
index 3851d85..a28fb6e 100644 (file)
@@ -156,6 +156,7 @@ typedef struct tagCURSORINFO
 #define CURSOR_SHOWING     0x00000001
 #endif /* CURSOR_SHOWING */
 
+#if !defined(OPENSSL_SYS_WINCE)
 typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTW)(HCRYPTPROV *, LPCWSTR, LPCWSTR,
                                    DWORD, DWORD);
 typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV, DWORD, BYTE *);
@@ -175,9 +176,7 @@ typedef BOOL (WINAPI *THREAD32)(HANDLE, LPTHREADENTRY32);
 typedef BOOL (WINAPI *MODULE32)(HANDLE, LPMODULEENTRY32);
 
 #include <lmcons.h>
-#ifndef OPENSSL_SYS_WINCE
 #include <lmstats.h>
-#endif
 #if 1 /* The NET API is Unicode only.  It requires the use of the UNICODE
        * macro.  When UNICODE is defined LPTSTR becomes LPWSTR.  LMSTR was
        * was added to the Platform SDK to allow the NET API to be used in
@@ -188,12 +187,12 @@ typedef NET_API_STATUS (NET_API_FUNCTION * NETSTATGET)
         (LPWSTR, LPWSTR, DWORD, DWORD, LPBYTE*);
 typedef NET_API_STATUS (NET_API_FUNCTION * NETFREE)(LPBYTE);
 #endif /* 1 */
+#endif /* !OPENSSL_SYS_WINCE */
 
 int RAND_poll(void)
 {
        MEMORYSTATUS m;
        HCRYPTPROV hProvider = 0;
-       BYTE buf[64];
        DWORD w;
        int good = 0;
 
@@ -208,18 +207,18 @@ int RAND_poll(void)
 # if defined(_WIN32_WCE) && _WIN32_WCE>=300
 /* Even though MSDN says _WIN32_WCE>=210, it doesn't seem to be available
  * in commonly available implementations prior 300... */
-# ifndef CryptAcquireContext
-   /* reserve for broken header... */
-#  define CryptAcquireContext CryptAcquireContextW
-# endif
+       {
+       BYTE buf[64];
        /* poll the CryptoAPI PRNG */
        /* The CryptoAPI returns sizeof(buf) bytes of randomness */
-       if (CryptAcquireContext(&hProvider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
+       if (CryptAcquireContextW(&hProvider, NULL, NULL, PROV_RSA_FULL,
+                               CRYPT_VERIFYCONTEXT))
                {
                if (CryptGenRandom(hProvider, sizeof(buf), buf))
                        RAND_add(buf, sizeof(buf), sizeof(buf));
                CryptReleaseContext(hProvider, 0); 
                }
+       }
 # endif
 #else  /* OPENSSL_SYS_WINCE */
        /*
@@ -246,6 +245,7 @@ int RAND_poll(void)
        CRYPTRELEASECONTEXT release = NULL;
        NETSTATGET netstatget = NULL;
        NETFREE netfree = NULL;
+       BYTE buf[64];
 
        if (netapi)
                {
index cab3080..4953642 100644 (file)
@@ -84,6 +84,10 @@ static unsigned char key_table[256]={
        0xfe,0x7f,0xc1,0xad,
        };
 
+#if defined(_MSC_VER) && defined(_ARM_)
+#pragma optimize("g",off)
+#endif
+
 /* It has come to my attention that there are 2 versions of the RC2
  * key schedule.  One which is normal, and anther which has a hook to
  * use a reduced key length.
@@ -136,3 +140,6 @@ void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits)
                *(ki--)=((k[i]<<8)|k[i-1])&0xffff;
        }
 
+#if defined(_MSC_VER)
+#pragma optimize("",on)
+#endif
index 2815628..3280c9d 100644 (file)
 
 const static unsigned char zeroes[] = {0,0,0,0,0,0,0,0};
 
+#if defined(_MSC_VER) && defined(_ARM_)
+#pragma optimize("g", off)
+#endif
+
 int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
                        const EVP_MD *Hash, const unsigned char *EM, int sLen)
        {
@@ -259,3 +263,7 @@ int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
        return ret;
 
        }
+
+#if defined(_MSC_VER)
+#pragma optimize("",on)
+#endif
index 68cc543..aa4a556 100644 (file)
 #include <openssl/ui.h>
 #include <openssl/crypto.h>
 
+#ifdef _
+#undef _
+#endif
+
 struct ui_method_st
        {
        char *name;
index bc90031..708a33e 100644 (file)
@@ -50,7 +50,7 @@ elsif ($FLAVOR =~ /CE/)
        /^X86/          && do { $wcecdefs.=" -Dx86 -D_X86_";
                                $wcelflag.=" /machine:X86";     last; };
        /^ARM/          && do { $wcecdefs.=" -DARM -D_ARM_";
-                               $wcelflag.=" /machine:$wcetgt"; last; };
+                               $wcelflag.=" /machine:ARM";     last; };
        /^R4[0-9]{3}/   && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DMIPS_R4000";
                                $wcelflag.=" /machine:MIPS";    last; };
        /^SH[0-9]/      && do { $wcecdefs.=" -D$wcetgt -D_$wcetgt_ -DSHx";
@@ -64,7 +64,6 @@ elsif ($FLAVOR =~ /CE/)
     $base_cflags.=" $wcecdefs";
     $base_cflags.=" -Qsh4" if ($wcetgt =~ /^SH4/);
     $opt_cflags=' /MC /O1i';   # optimize for space, but with intrinsics...
-    $opt_cflags.=' /wd4959';   # disable "too large to optimize" warning...
     $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG';
     $lflags="/nologo /opt:ref $wcelflag";
     }