From: Ulf Möller Date: Sun, 19 Mar 2000 17:14:25 +0000 (+0000) Subject: New function RAND_event() collects entropy from Windows events. X-Git-Tag: OpenSSL_0_9_5a-beta1~7 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=c97b11f4b3e20b92aba6f109a3d89170974360fc New function RAND_event() collects entropy from Windows events. --- diff --git a/crypto/rand/md_rand.c b/crypto/rand/md_rand.c index b8564b1a0d..9f8da22917 100644 --- a/crypto/rand/md_rand.c +++ b/crypto/rand/md_rand.c @@ -568,6 +568,47 @@ static int ssleay_rand_status(void) #include #include +int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam) + { + double add_entropy=0; + SYSTEMTIME t; + + switch (iMsg) + { + case WM_KEYDOWN: + { + static WPARAM key; + if (key != wParam) + add_entropy = 0.05; + key = wParam; + } + break; + case WM_MOUSEMOVE: + { + static int lastx,lasty,lastdx,lastdy; + int x,y,dx,dy; + + x=LOWORD(lParam); + y=HIWORD(lParam); + dx=lastx-x; + dy=lasty-y; + if (dx != 0 && dy != 0 && dx-lastdx != 0 && dy-lastdy != 0) + entropy += .2; + lastx=x,lasty=y; + lastdx=dx, lastdy=dy; + } + break; + } + + GetSystemTime(&t); + RAND_add(&iMsg, sizeof(iMsg), add_entropy); + RAND_add(&wParam, sizeof(wParam), 0); + RAND_add(&lParam, sizeof(lParam), 0); + RAND_add(&t, sizeof(t), 0); + + return (RAND_status()); + } + /***************************************************************************** * Initialisation function for the SSL random generator. Takes the contents * of the screen as random seed. diff --git a/crypto/rand/rand.h b/crypto/rand/rand.h index 79cb9047a2..2973ee90e4 100644 --- a/crypto/rand/rand.h +++ b/crypto/rand/rand.h @@ -91,7 +91,9 @@ const char *RAND_file_name(char *file,int num); int RAND_status(void); int RAND_egd(const char *path); #if defined(WINDOWS) || defined(WIN32) +#include void RAND_screen(void); +int RAND_event(UINT, WPARAM, LPARAM); #endif void ERR_load_RAND_strings(void);