Commit 0491e058 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

Final(?) WinCE update.

parent 9a1a5b87
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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]
+4 −0
Original line number Diff line number Diff line
@@ -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
	{
+5 −0
Original line number Diff line number Diff line
@@ -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__); \
+8 −8
Original line number Diff line number Diff line
@@ -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)
		{
+7 −0
Original line number Diff line number Diff line
@@ -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
Loading