From 0491e05833a139deef5288abf1bcf61cb19b292e Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Sun, 7 Aug 2005 22:21:49 +0000 Subject: [PATCH] Final(?) WinCE update. --- CHANGES | 3 +++ crypto/des/des_old.h | 4 ++++ crypto/ec/ectest.c | 5 +++++ crypto/rand/rand_win.c | 16 ++++++++-------- crypto/rc2/rc2_skey.c | 7 +++++++ crypto/rsa/rsa_pss.c | 8 ++++++++ crypto/ui/ui_locl.h | 4 ++++ util/pl/VC-32.pl | 3 +-- 8 files changed, 40 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index d025d780a3..bc7e0709e0 100644 --- 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] diff --git a/crypto/des/des_old.h b/crypto/des/des_old.h index 9f439926c3..1b0620c3a2 100644 --- a/crypto/des/des_old.h +++ b/crypto/des/des_old.h @@ -116,6 +116,10 @@ extern "C" { #endif +#ifdef _ +#undef _ +#endif + typedef unsigned char _ossl_old_des_cblock[8]; typedef struct _ossl_old_des_ks_struct { diff --git a/crypto/ec/ectest.c b/crypto/ec/ectest.c index fdca4b4504..df506e1b47 100644 --- a/crypto/ec/ectest.c +++ b/crypto/ec/ectest.c @@ -95,6 +95,11 @@ int main(int argc, char * argv[]) { puts("Elliptic curves are disabled."); retur #include #include +#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__); \ diff --git a/crypto/rand/rand_win.c b/crypto/rand/rand_win.c index 3851d85bcc..a28fb6ea55 100644 --- a/crypto/rand/rand_win.c +++ b/crypto/rand/rand_win.c @@ -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 -#ifndef OPENSSL_SYS_WINCE #include -#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) { diff --git a/crypto/rc2/rc2_skey.c b/crypto/rc2/rc2_skey.c index cab3080c73..4953642056 100644 --- a/crypto/rc2/rc2_skey.c +++ b/crypto/rc2/rc2_skey.c @@ -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 diff --git a/crypto/rsa/rsa_pss.c b/crypto/rsa/rsa_pss.c index 2815628f5f..3280c9d40c 100644 --- a/crypto/rsa/rsa_pss.c +++ b/crypto/rsa/rsa_pss.c @@ -66,6 +66,10 @@ 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 diff --git a/crypto/ui/ui_locl.h b/crypto/ui/ui_locl.h index 68cc543402..aa4a55637d 100644 --- a/crypto/ui/ui_locl.h +++ b/crypto/ui/ui_locl.h @@ -62,6 +62,10 @@ #include #include +#ifdef _ +#undef _ +#endif + struct ui_method_st { char *name; diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl index bc9003135f..708a33ec9b 100644 --- a/util/pl/VC-32.pl +++ b/util/pl/VC-32.pl @@ -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"; } -- 2.25.1