Merge from main trunk. No conflicts.
This commit is contained in:
		@@ -265,6 +265,9 @@ my %table=(
 | 
				
			|||||||
#"hpux11-64bit-cc","cc:+DA2.0W -g -D_HPUX_SOURCE -Aa -Ae +ESlit::-D_REENTRANT::SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT :::",
 | 
					#"hpux11-64bit-cc","cc:+DA2.0W -g -D_HPUX_SOURCE -Aa -Ae +ESlit::-D_REENTRANT::SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT :::",
 | 
				
			||||||
# Use unified settings above instead.
 | 
					# Use unified settings above instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
 | 
				
			||||||
 | 
					"MPE/iX-gcc", "gcc:-D_ENDIAN -DBN_DIV2W -O3 -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB::(unknown):-L/SYSLOG/PUB -lsyslog -lsocket -lcurses:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:::",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Dec Alpha, OSF/1 - the alpha164-cc is the flags for a 21164A with
 | 
					# Dec Alpha, OSF/1 - the alpha164-cc is the flags for a 21164A with
 | 
				
			||||||
# the new compiler
 | 
					# the new compiler
 | 
				
			||||||
# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
 | 
					# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,7 +62,7 @@ AR=ar r
 | 
				
			|||||||
RANLIB= ranlib
 | 
					RANLIB= ranlib
 | 
				
			||||||
PERL= perl
 | 
					PERL= perl
 | 
				
			||||||
TAR= tar
 | 
					TAR= tar
 | 
				
			||||||
TARFLAGS= --norecurse
 | 
					TARFLAGS= --no-recursion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set BN_ASM to bn_asm.o if you want to use the C version
 | 
					# Set BN_ASM to bn_asm.o if you want to use the C version
 | 
				
			||||||
BN_ASM= bn_asm.o
 | 
					BN_ASM= bn_asm.o
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								TABLE
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								TABLE
									
									
									
									
									
								
							@@ -140,6 +140,26 @@ $dso_scheme   =
 | 
				
			|||||||
$shared_target= 
 | 
					$shared_target= 
 | 
				
			||||||
$shared_cflag = 
 | 
					$shared_cflag = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*** MPE/iX-gcc
 | 
				
			||||||
 | 
					$cc           = gcc
 | 
				
			||||||
 | 
					$cflags       = -D_ENDIAN -DBN_DIV2W -O3 -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB
 | 
				
			||||||
 | 
					$unistd       = 
 | 
				
			||||||
 | 
					$thread_cflag = (unknown)
 | 
				
			||||||
 | 
					$lflags       = -L/SYSLOG/PUB -lsyslog -lsocket -lcurses
 | 
				
			||||||
 | 
					$bn_ops       = BN_LLONG DES_PTR DES_UNROLL DES_RISC1
 | 
				
			||||||
 | 
					$bn_obj       = 
 | 
				
			||||||
 | 
					$des_obj      = 
 | 
				
			||||||
 | 
					$bf_obj       = 
 | 
				
			||||||
 | 
					$md5_obj      = 
 | 
				
			||||||
 | 
					$sha1_obj     = 
 | 
				
			||||||
 | 
					$cast_obj     = 
 | 
				
			||||||
 | 
					$rc4_obj      = 
 | 
				
			||||||
 | 
					$rmd160_obj   = 
 | 
				
			||||||
 | 
					$rc5_obj      = 
 | 
				
			||||||
 | 
					$dso_scheme   = 
 | 
				
			||||||
 | 
					$shared_target= 
 | 
				
			||||||
 | 
					$shared_cflag = 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*** Mingw32
 | 
					*** Mingw32
 | 
				
			||||||
$cc           = gcc
 | 
					$cc           = gcc
 | 
				
			||||||
$cflags       = -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall
 | 
					$cflags       = -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -209,9 +209,11 @@ static int init_client_ip(int *sock, unsigned char ip[4], int port)
 | 
				
			|||||||
	s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL);
 | 
						s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL);
 | 
				
			||||||
	if (s == INVALID_SOCKET) { perror("socket"); return(0); }
 | 
						if (s == INVALID_SOCKET) { perror("socket"); return(0); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MPE
 | 
				
			||||||
	i=0;
 | 
						i=0;
 | 
				
			||||||
	i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
 | 
						i=setsockopt(s,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
 | 
				
			||||||
	if (i < 0) { perror("keepalive"); return(0); }
 | 
						if (i < 0) { perror("keepalive"); return(0); }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1)
 | 
						if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1)
 | 
				
			||||||
		{ close(s); perror("connect"); return(0); }
 | 
							{ close(s); perror("connect"); return(0); }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,7 +88,7 @@
 | 
				
			|||||||
#elif !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
 | 
					#elif !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
 | 
				
			||||||
# define TIMES
 | 
					# define TIMES
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX)
 | 
					#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(MPE)
 | 
				
			||||||
# define TIMEB
 | 
					# define TIMEB
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								config
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								config
									
									
									
									
									
								
							@@ -71,6 +71,10 @@ fi
 | 
				
			|||||||
# Now we simply scan though... In most cases, the SYSTEM info is enough
 | 
					# Now we simply scan though... In most cases, the SYSTEM info is enough
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
 | 
					case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
 | 
				
			||||||
 | 
					    MPE/iX:*)
 | 
				
			||||||
 | 
						MACHINE=`echo "$MACHINE" | sed -e 's/-/_/g'`
 | 
				
			||||||
 | 
						echo "parisc-hp-MPE/iX"; exit 0
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
    A/UX:*)
 | 
					    A/UX:*)
 | 
				
			||||||
	echo "m68k-apple-aux3"; exit 0
 | 
						echo "m68k-apple-aux3"; exit 0
 | 
				
			||||||
	;;
 | 
						;;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -236,7 +236,7 @@ static int conn_state(BIO *b, BIO_CONNECT *c)
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			c->state=BIO_CONN_S_CONNECT;
 | 
								c->state=BIO_CONN_S_CONNECT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SO_KEEPALIVE
 | 
					#if defined(SO_KEEPALIVE) && !defined(MPE)
 | 
				
			||||||
			i=1;
 | 
								i=1;
 | 
				
			||||||
			i=setsockopt(b->num,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
 | 
								i=setsockopt(b->num,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
 | 
				
			||||||
			if (i < 0)
 | 
								if (i < 0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -271,7 +271,9 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
 | 
				
			|||||||
#elif defined(MAC_OS_pre_X)
 | 
					#elif defined(MAC_OS_pre_X)
 | 
				
			||||||
	tty=stdin;
 | 
						tty=stdin;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					#ifndef MPE
 | 
				
			||||||
	if ((tty=fopen("/dev/tty","r")) == NULL)
 | 
						if ((tty=fopen("/dev/tty","r")) == NULL)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		tty=stdin;
 | 
							tty=stdin;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -312,8 +314,12 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(TTY_set) && !defined(VMS)
 | 
					#if defined(TTY_set) && !defined(VMS)
 | 
				
			||||||
	if (is_a_tty && (TTY_set(fileno(tty),&tty_new) == -1))
 | 
						if (is_a_tty && (TTY_set(fileno(tty),&tty_new) == -1))
 | 
				
			||||||
 | 
					#ifdef MPE 
 | 
				
			||||||
 | 
							; /* MPE lies -- echo really has been disabled */
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
		return(-1);
 | 
							return(-1);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifdef VMS
 | 
					#ifdef VMS
 | 
				
			||||||
	tty_new[0] = tty_orig[0];
 | 
						tty_new[0] = tty_orig[0];
 | 
				
			||||||
	tty_new[1] = tty_orig[1] | TT$M_NOECHO;
 | 
						tty_new[1] = tty_orig[1] | TT$M_NOECHO;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -171,13 +171,16 @@ typedef BOOL (WINAPI *MODULE32)(HANDLE, LPMODULEENTRY32);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <lmcons.h>
 | 
					#include <lmcons.h>
 | 
				
			||||||
#include <lmstats.h>
 | 
					#include <lmstats.h>
 | 
				
			||||||
#if 0 /* Some compilers use LMSTR, others (VC6, for example) use LPTSTR.
 | 
					#if 1 /* The NET API is Unicode only.  It requires the use of the UNICODE
 | 
				
			||||||
       * This part is disabled until a fix is found.
 | 
					       * 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
 | 
				
			||||||
 | 
					       * non-Unicode applications provided that Unicode strings were still
 | 
				
			||||||
 | 
					       * used for input.  LMSTR is defined as LPWSTR.
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
typedef NET_API_STATUS (NET_API_FUNCTION * NETSTATGET)
 | 
					typedef NET_API_STATUS (NET_API_FUNCTION * NETSTATGET)
 | 
				
			||||||
        (LMSTR, LMSTR, DWORD, DWORD, LPBYTE*);
 | 
					        (LPWSTR, LPWSTR, DWORD, DWORD, LPBYTE*);
 | 
				
			||||||
typedef NET_API_STATUS (NET_API_FUNCTION * NETFREE)(LPBYTE);
 | 
					typedef NET_API_STATUS (NET_API_FUNCTION * NETFREE)(LPBYTE);
 | 
				
			||||||
#endif /* 0 */
 | 
					#endif /* 1 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int RAND_poll(void)
 | 
					int RAND_poll(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -191,12 +194,20 @@ int RAND_poll(void)
 | 
				
			|||||||
	CRYPTACQUIRECONTEXT acquire = 0;
 | 
						CRYPTACQUIRECONTEXT acquire = 0;
 | 
				
			||||||
	CRYPTGENRANDOM gen = 0;
 | 
						CRYPTGENRANDOM gen = 0;
 | 
				
			||||||
	CRYPTRELEASECONTEXT release = 0;
 | 
						CRYPTRELEASECONTEXT release = 0;
 | 
				
			||||||
#if 0 /* This part is disabled until a fix for the problem with the
 | 
					#if 1 /* There was previously a problem with NETSTATGET.  Currently, this
 | 
				
			||||||
       * definition of NETSTATGET is found.
 | 
					       * section is still experimental, but if all goes well, this conditional
 | 
				
			||||||
 | 
					       * will be removed
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
	NETSTATGET netstatget = 0;
 | 
						NETSTATGET netstatget = 0;
 | 
				
			||||||
	NETFREE netfree = 0;
 | 
						NETFREE netfree = 0;
 | 
				
			||||||
#endif /* 0 */
 | 
					#endif /* 1 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Determine the OS version we are on so we can turn off things 
 | 
				
			||||||
 | 
						 * that do not work properly.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
					        OSVERSIONINFO osverinfo ;
 | 
				
			||||||
 | 
					        osverinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO) ;
 | 
				
			||||||
 | 
					        GetVersionEx( &osverinfo ) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* load functions dynamically - not available on all systems */
 | 
						/* load functions dynamically - not available on all systems */
 | 
				
			||||||
	advapi = LoadLibrary("ADVAPI32.DLL");
 | 
						advapi = LoadLibrary("ADVAPI32.DLL");
 | 
				
			||||||
@@ -204,9 +215,9 @@ int RAND_poll(void)
 | 
				
			|||||||
	user = LoadLibrary("USER32.DLL");
 | 
						user = LoadLibrary("USER32.DLL");
 | 
				
			||||||
	netapi = LoadLibrary("NETAPI32.DLL");
 | 
						netapi = LoadLibrary("NETAPI32.DLL");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 0 /* This part is disabled until a fix for the problem with the
 | 
					#if 1 /* There was previously a problem with NETSTATGET.  Currently, this
 | 
				
			||||||
       * definition of NETSTATGET is found.  Also, note that VC6 doesn't
 | 
					       * section is still experimental, but if all goes well, this conditional
 | 
				
			||||||
       * understand strings starting with L".
 | 
					       * will be removed
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
	if (netapi)
 | 
						if (netapi)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -217,57 +228,68 @@ int RAND_poll(void)
 | 
				
			|||||||
	if (netstatget && netfree)
 | 
						if (netstatget && netfree)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		LPBYTE outbuf;
 | 
							LPBYTE outbuf;
 | 
				
			||||||
		/* NetStatisticsGet() is a Unicode only function */
 | 
							/* NetStatisticsGet() is a Unicode only function
 | 
				
			||||||
 | 
					 		 * STAT_WORKSTATION_0 contains 45 fields and STAT_SERVER_0
 | 
				
			||||||
 | 
							 * contains 17 fields.  We treat each field as a source of
 | 
				
			||||||
 | 
							 * one byte of entropy.
 | 
				
			||||||
 | 
					                 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (netstatget(NULL, L"LanmanWorkstation", 0, 0, &outbuf) == 0)
 | 
							if (netstatget(NULL, L"LanmanWorkstation", 0, 0, &outbuf) == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			RAND_add(outbuf, sizeof(STAT_WORKSTATION_0), 0);
 | 
								RAND_add(outbuf, sizeof(STAT_WORKSTATION_0), 45);
 | 
				
			||||||
			netfree(outbuf);
 | 
								netfree(outbuf);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		if (netstatget(NULL, L"LanmanServer", 0, 0, &outbuf) == 0)
 | 
							if (netstatget(NULL, L"LanmanServer", 0, 0, &outbuf) == 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			RAND_add(outbuf, sizeof(STAT_SERVER_0), 0);
 | 
								RAND_add(outbuf, sizeof(STAT_SERVER_0), 17);
 | 
				
			||||||
			netfree(outbuf);
 | 
								netfree(outbuf);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (netapi)
 | 
						if (netapi)
 | 
				
			||||||
		FreeLibrary(netapi);
 | 
							FreeLibrary(netapi);
 | 
				
			||||||
#endif /* 0 */
 | 
					#endif /* 1 */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
#if 0 /* It appears like this can cause an exception deep within ADVAPI32.DLL
 | 
					        /* It appears like this can cause an exception deep within ADVAPI32.DLL
 | 
				
			||||||
       * at random times.  Reported by Jeffrey Altman.
 | 
					         * at random times on Windows 2000.  Reported by Jeffrey Altman.  
 | 
				
			||||||
       */
 | 
					         * Only use it on NT.
 | 
				
			||||||
	/* Read Performance Statistics from NT/2000 registry */
 | 
						 */
 | 
				
			||||||
	/* The size of the performance data can vary from call to call */
 | 
					        if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT &&
 | 
				
			||||||
	/* so we must guess the size of the buffer to use and increase */
 | 
							osverinfo.dwMajorVersion < 5)
 | 
				
			||||||
	/* its size if we get an ERROR_MORE_DATA return instead of     */
 | 
					 | 
				
			||||||
	/* ERROR_SUCCESS.                                              */
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	LONG   rc=ERROR_MORE_DATA;
 | 
					 | 
				
			||||||
	char * buf=NULL;
 | 
					 | 
				
			||||||
	DWORD bufsz=0;
 | 
					 | 
				
			||||||
	DWORD length;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	while (rc == ERROR_MORE_DATA)
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		buf = realloc(buf,bufsz+8192);
 | 
							/* Read Performance Statistics from NT/2000 registry
 | 
				
			||||||
		if (!buf)
 | 
							 * The size of the performance data can vary from call
 | 
				
			||||||
			break;
 | 
							 * to call so we must guess the size of the buffer to use
 | 
				
			||||||
		bufsz += 8192;
 | 
							 * and increase its size if we get an ERROR_MORE_DATA
 | 
				
			||||||
 | 
							 * return instead of ERROR_SUCCESS.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							LONG   rc=ERROR_MORE_DATA;
 | 
				
			||||||
 | 
							char * buf=NULL;
 | 
				
			||||||
 | 
							DWORD bufsz=0;
 | 
				
			||||||
 | 
							DWORD length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		length = bufsz;
 | 
							while (rc == ERROR_MORE_DATA)
 | 
				
			||||||
		rc = RegQueryValueEx(HKEY_PERFORMANCE_DATA, "Global",
 | 
								{
 | 
				
			||||||
			NULL, NULL, buf, &length);
 | 
								buf = realloc(buf,bufsz+8192);
 | 
				
			||||||
 | 
								if (!buf)
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								bufsz += 8192;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								length = bufsz;
 | 
				
			||||||
 | 
								rc = RegQueryValueEx(HKEY_PERFORMANCE_DATA, "Global",
 | 
				
			||||||
 | 
									NULL, NULL, buf, &length);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							if (rc == ERROR_SUCCESS)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
					                        /* For entropy count assume only least significant
 | 
				
			||||||
 | 
								 * byte of each DWORD is random.
 | 
				
			||||||
 | 
					                         */
 | 
				
			||||||
 | 
								RAND_add(&length, sizeof(length), 0);
 | 
				
			||||||
 | 
								RAND_add(buf, length, length / 4.0);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							if (buf)
 | 
				
			||||||
 | 
								free(buf);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	if (rc == ERROR_SUCCESS)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		RAND_add(&length, sizeof(length), 0);
 | 
					 | 
				
			||||||
		RAND_add(buf, length, 0);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	if (buf)
 | 
					 | 
				
			||||||
		free(buf);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
#endif /* 0 */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (advapi)
 | 
						if (advapi)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -282,12 +304,13 @@ int RAND_poll(void)
 | 
				
			|||||||
	if (acquire && gen && release)
 | 
						if (acquire && gen && release)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		/* poll the CryptoAPI PRNG */
 | 
							/* poll the CryptoAPI PRNG */
 | 
				
			||||||
 | 
					                /* The CryptoAPI returns sizeof(buf) bytes of randomness */
 | 
				
			||||||
		if (acquire(&hProvider, 0, 0, PROV_RSA_FULL,
 | 
							if (acquire(&hProvider, 0, 0, PROV_RSA_FULL,
 | 
				
			||||||
			CRYPT_VERIFYCONTEXT))
 | 
								CRYPT_VERIFYCONTEXT))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			if (gen(hProvider, sizeof(buf), buf) != 0)
 | 
								if (gen(hProvider, sizeof(buf), buf) != 0)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				RAND_add(buf, sizeof(buf), 0);
 | 
									RAND_add(buf, sizeof(buf), sizeof(buf));
 | 
				
			||||||
#ifdef DEBUG
 | 
					#ifdef DEBUG
 | 
				
			||||||
				printf("randomness from PROV_RSA_FULL\n");
 | 
									printf("randomness from PROV_RSA_FULL\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -300,7 +323,7 @@ int RAND_poll(void)
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
			if (gen(hProvider, sizeof(buf), buf) != 0)
 | 
								if (gen(hProvider, sizeof(buf), buf) != 0)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				RAND_add(buf, sizeof(buf), 0);
 | 
									RAND_add(buf, sizeof(buf), sizeof(buf));
 | 
				
			||||||
#ifdef DEBUG
 | 
					#ifdef DEBUG
 | 
				
			||||||
				printf("randomness from PROV_INTEL_SEC\n");
 | 
									printf("randomness from PROV_INTEL_SEC\n");
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -321,7 +344,7 @@ int RAND_poll(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	/* process ID */
 | 
						/* process ID */
 | 
				
			||||||
	w = GetCurrentProcessId();
 | 
						w = GetCurrentProcessId();
 | 
				
			||||||
	RAND_add(&w, sizeof(w), 0);
 | 
						RAND_add(&w, sizeof(w), 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (user)
 | 
						if (user)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -334,41 +357,37 @@ int RAND_poll(void)
 | 
				
			|||||||
		queue = (GETQUEUESTATUS) GetProcAddress(user, "GetQueueStatus");
 | 
							queue = (GETQUEUESTATUS) GetProcAddress(user, "GetQueueStatus");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (win)
 | 
							if (win)
 | 
				
			||||||
		{
 | 
								{
 | 
				
			||||||
			/* window handle */
 | 
								/* window handle */
 | 
				
			||||||
			h = win();
 | 
								h = win();
 | 
				
			||||||
			RAND_add(&h, sizeof(h), 0);
 | 
								RAND_add(&h, sizeof(h), 0);
 | 
				
			||||||
		}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (cursor)
 | 
							if (cursor)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/* unfortunately, its not safe to call GetCursorInfo()
 | 
								/* unfortunately, its not safe to call GetCursorInfo()
 | 
				
			||||||
			 * on NT4 even though it exists in SP3 (or SP6) and
 | 
								 * on NT4 even though it exists in SP3 (or SP6) and
 | 
				
			||||||
			 * higher.
 | 
								 * higher.
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			OSVERSIONINFO osverinfo ;
 | 
					 | 
				
			||||||
			osverinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO) ;
 | 
					 | 
				
			||||||
			GetVersionEx( &osverinfo ) ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT &&
 | 
								if ( osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT &&
 | 
				
			||||||
				osverinfo.dwMajorVersion < 5)
 | 
									osverinfo.dwMajorVersion < 5)
 | 
				
			||||||
				cursor = 0;
 | 
									cursor = 0;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (cursor)
 | 
							if (cursor)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/* cursor position */
 | 
								/* cursor position */
 | 
				
			||||||
 | 
					                        /* assume 2 bytes of entropy */
 | 
				
			||||||
			CURSORINFO ci;
 | 
								CURSORINFO ci;
 | 
				
			||||||
			ci.cbSize = sizeof(CURSORINFO);
 | 
								ci.cbSize = sizeof(CURSORINFO);
 | 
				
			||||||
			if (cursor(&ci))
 | 
								if (cursor(&ci))
 | 
				
			||||||
				RAND_add(&ci, ci.cbSize, 0);
 | 
									RAND_add(&ci, ci.cbSize, 2);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (queue)
 | 
							if (queue)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/* message queue status */
 | 
								/* message queue status */
 | 
				
			||||||
 | 
					                        /* assume 1 byte of entropy */
 | 
				
			||||||
			w = queue(QS_ALLEVENTS);
 | 
								w = queue(QS_ALLEVENTS);
 | 
				
			||||||
			RAND_add(&w, sizeof(w), 0);
 | 
								RAND_add(&w, sizeof(w), 1);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		FreeLibrary(user);
 | 
							FreeLibrary(user);
 | 
				
			||||||
@@ -406,7 +425,7 @@ int RAND_poll(void)
 | 
				
			|||||||
		MODULEENTRY32 m;
 | 
							MODULEENTRY32 m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		snap = (CREATETOOLHELP32SNAPSHOT)
 | 
							snap = (CREATETOOLHELP32SNAPSHOT)
 | 
				
			||||||
		  GetProcAddress(kernel, "CreateToolhelp32Snapshot");
 | 
								GetProcAddress(kernel, "CreateToolhelp32Snapshot");
 | 
				
			||||||
		heap_first = (HEAP32FIRST) GetProcAddress(kernel, "Heap32First");
 | 
							heap_first = (HEAP32FIRST) GetProcAddress(kernel, "Heap32First");
 | 
				
			||||||
		heap_next = (HEAP32NEXT) GetProcAddress(kernel, "Heap32Next");
 | 
							heap_next = (HEAP32NEXT) GetProcAddress(kernel, "Heap32Next");
 | 
				
			||||||
		heaplist_first = (HEAP32LIST) GetProcAddress(kernel, "Heap32ListFirst");
 | 
							heaplist_first = (HEAP32LIST) GetProcAddress(kernel, "Heap32ListFirst");
 | 
				
			||||||
@@ -425,11 +444,18 @@ int RAND_poll(void)
 | 
				
			|||||||
			!= NULL)
 | 
								!= NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			/* heap list and heap walking */
 | 
								/* heap list and heap walking */
 | 
				
			||||||
 | 
					                        /* HEAPLIST32 contains 3 fields that will change with
 | 
				
			||||||
 | 
					                         * each entry.  Consider each field a source of 1 byte
 | 
				
			||||||
 | 
					                         * of entropy.
 | 
				
			||||||
 | 
					                         * HEAPENTRY32 contains 5 fields that will change with 
 | 
				
			||||||
 | 
					                         * each entry.  Consider each field a source of 1 byte
 | 
				
			||||||
 | 
					                         * of entropy.
 | 
				
			||||||
 | 
					                         */
 | 
				
			||||||
			hlist.dwSize = sizeof(HEAPLIST32);		
 | 
								hlist.dwSize = sizeof(HEAPLIST32);		
 | 
				
			||||||
			if (heaplist_first(handle, &hlist))
 | 
								if (heaplist_first(handle, &hlist))
 | 
				
			||||||
				do
 | 
									do
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
					RAND_add(&hlist, hlist.dwSize, 0);
 | 
										RAND_add(&hlist, hlist.dwSize, 3);
 | 
				
			||||||
					hentry.dwSize = sizeof(HEAPENTRY32);
 | 
										hentry.dwSize = sizeof(HEAPENTRY32);
 | 
				
			||||||
					if (heap_first(&hentry,
 | 
										if (heap_first(&hentry,
 | 
				
			||||||
						hlist.th32ProcessID,
 | 
											hlist.th32ProcessID,
 | 
				
			||||||
@@ -438,34 +464,46 @@ int RAND_poll(void)
 | 
				
			|||||||
						int entrycnt = 50;
 | 
											int entrycnt = 50;
 | 
				
			||||||
						do
 | 
											do
 | 
				
			||||||
							RAND_add(&hentry,
 | 
												RAND_add(&hentry,
 | 
				
			||||||
								hentry.dwSize, 0);
 | 
													hentry.dwSize, 5);
 | 
				
			||||||
						while (heap_next(&hentry)
 | 
											while (heap_next(&hentry)
 | 
				
			||||||
							&& --entrycnt > 0);
 | 
												&& --entrycnt > 0);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					} while (heaplist_next(handle,
 | 
										} while (heaplist_next(handle,
 | 
				
			||||||
						&hlist));
 | 
											&hlist));
 | 
				
			||||||
 | 
								
 | 
				
			||||||
			/* process walking */
 | 
								/* process walking */
 | 
				
			||||||
 | 
					                        /* PROCESSENTRY32 contains 9 fields that will change
 | 
				
			||||||
 | 
					                         * with each entry.  Consider each field a source of
 | 
				
			||||||
 | 
					                         * 1 byte of entropy.
 | 
				
			||||||
 | 
					                         */
 | 
				
			||||||
			p.dwSize = sizeof(PROCESSENTRY32);
 | 
								p.dwSize = sizeof(PROCESSENTRY32);
 | 
				
			||||||
			if (process_first(handle, &p))
 | 
								if (process_first(handle, &p))
 | 
				
			||||||
				do
 | 
									do
 | 
				
			||||||
					RAND_add(&p, p.dwSize, 0);
 | 
										RAND_add(&p, p.dwSize, 9);
 | 
				
			||||||
				while (process_next(handle, &p));
 | 
									while (process_next(handle, &p));
 | 
				
			||||||
			
 | 
					
 | 
				
			||||||
			/* thread walking */
 | 
								/* thread walking */
 | 
				
			||||||
 | 
					                        /* THREADENTRY32 contains 6 fields that will change
 | 
				
			||||||
 | 
					                         * with each entry.  Consider each field a source of
 | 
				
			||||||
 | 
					                         * 1 byte of entropy.
 | 
				
			||||||
 | 
					                         */
 | 
				
			||||||
			t.dwSize = sizeof(THREADENTRY32);
 | 
								t.dwSize = sizeof(THREADENTRY32);
 | 
				
			||||||
			if (thread_first(handle, &t))
 | 
								if (thread_first(handle, &t))
 | 
				
			||||||
				do
 | 
									do
 | 
				
			||||||
					RAND_add(&t, t.dwSize, 0);
 | 
										RAND_add(&t, t.dwSize, 6);
 | 
				
			||||||
				while (thread_next(handle, &t));
 | 
									while (thread_next(handle, &t));
 | 
				
			||||||
			
 | 
					
 | 
				
			||||||
			/* module walking */
 | 
								/* module walking */
 | 
				
			||||||
 | 
					                        /* MODULEENTRY32 contains 9 fields that will change
 | 
				
			||||||
 | 
					                         * with each entry.  Consider each field a source of
 | 
				
			||||||
 | 
					                         * 1 byte of entropy.
 | 
				
			||||||
 | 
					                         */
 | 
				
			||||||
			m.dwSize = sizeof(MODULEENTRY32);
 | 
								m.dwSize = sizeof(MODULEENTRY32);
 | 
				
			||||||
			if (module_first(handle, &m))
 | 
								if (module_first(handle, &m))
 | 
				
			||||||
				do
 | 
									do
 | 
				
			||||||
					RAND_add(&m, m.dwSize, 1);
 | 
										RAND_add(&m, m.dwSize, 9);
 | 
				
			||||||
				while (module_next(handle, &m));
 | 
									while (module_next(handle, &m));
 | 
				
			||||||
			
 | 
					
 | 
				
			||||||
			CloseHandle(handle);
 | 
								CloseHandle(handle);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,8 +14,11 @@ SSL_accept - wait for a TLS/SSL client to initiate a TLS/SSL handshake
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SSL_accept() waits for a TLS/SSL client to initiate the TLS/SSL handshake.
 | 
					SSL_accept() waits for a TLS/SSL client to initiate the TLS/SSL handshake.
 | 
				
			||||||
The communication channel must already have been set and assigned to the
 | 
					The communication channel must already have been set and assigned to the
 | 
				
			||||||
B<ssl> by setting an underlying B<BIO>. The behaviour of SSL_accept() depends
 | 
					B<ssl> by setting an underlying B<BIO>.
 | 
				
			||||||
on the underlying BIO. 
 | 
					
 | 
				
			||||||
 | 
					=head1 NOTES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The behaviour of SSL_accept() depends on the underlying BIO. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If the underlying BIO is B<blocking>, SSL_accept() will only return once the
 | 
					If the underlying BIO is B<blocking>, SSL_accept() will only return once the
 | 
				
			||||||
handshake has been finished or an error occurred, except for SGC (Server
 | 
					handshake has been finished or an error occurred, except for SGC (Server
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,8 +14,11 @@ SSL_connect - initiate the TLS/SSL handshake with an TLS/SSL server
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SSL_connect() initiates the TLS/SSL handshake with a server. The communication
 | 
					SSL_connect() initiates the TLS/SSL handshake with a server. The communication
 | 
				
			||||||
channel must already have been set and assigned to the B<ssl> by setting an
 | 
					channel must already have been set and assigned to the B<ssl> by setting an
 | 
				
			||||||
underlying B<BIO>. The behaviour of SSL_connect() depends on the underlying
 | 
					underlying B<BIO>.
 | 
				
			||||||
BIO. 
 | 
					
 | 
				
			||||||
 | 
					=head1 NOTES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The behaviour of SSL_connect() depends on the underlying BIO. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If the underlying BIO is B<blocking>, SSL_connect() will only return once the
 | 
					If the underlying BIO is B<blocking>, SSL_connect() will only return once the
 | 
				
			||||||
handshake has been finished or an error occurred.
 | 
					handshake has been finished or an error occurred.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,11 @@ SSL_read - read bytes from a TLS/SSL connection.
 | 
				
			|||||||
=head1 DESCRIPTION
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SSL_read() tries to read B<num> bytes from the specified B<ssl> into the
 | 
					SSL_read() tries to read B<num> bytes from the specified B<ssl> into the
 | 
				
			||||||
buffer B<buf>. If necessary, SSL_read() will negotiate a TLS/SSL session, if
 | 
					buffer B<buf>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NOTES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If necessary, SSL_read() will negotiate a TLS/SSL session, if
 | 
				
			||||||
not already explicitly performed by SSL_connect() or SSL_accept(). If the
 | 
					not already explicitly performed by SSL_connect() or SSL_accept(). If the
 | 
				
			||||||
peer requests a re-negotiation, it will be performed transparently during
 | 
					peer requests a re-negotiation, it will be performed transparently during
 | 
				
			||||||
the SSL_read() operation. The behaviour of SSL_read() depends on the
 | 
					the SSL_read() operation. The behaviour of SSL_read() depends on the
 | 
				
			||||||
@@ -34,6 +38,12 @@ non-blocking socket, nothing is to be done, but select() can be used to check
 | 
				
			|||||||
for the required condition. When using a buffering BIO, like a BIO pair, data
 | 
					for the required condition. When using a buffering BIO, like a BIO pair, data
 | 
				
			||||||
must be written into or retrieved out of the BIO before being able to continue.
 | 
					must be written into or retrieved out of the BIO before being able to continue.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 IMPORTANT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When an SSL_read() operation has to be repeated because of
 | 
				
			||||||
 | 
					B<SSL_ERROR_WANT_READ> or B<SSL_ERROR_WANT_WRITE>, it must be repeated
 | 
				
			||||||
 | 
					with the same arguments.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 RETURN VALUES
 | 
					=head1 RETURN VALUES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following return values can occur:
 | 
					The following return values can occur:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,11 @@ SSL_read - write bytes to a TLS/SSL connection.
 | 
				
			|||||||
=head1 DESCRIPTION
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SSL_write() writes B<num> bytes from the buffer B<buf> into the specified
 | 
					SSL_write() writes B<num> bytes from the buffer B<buf> into the specified
 | 
				
			||||||
B<ssl>. If necessary, SSL_write() will negotiate a TLS/SSL session, if
 | 
					B<ssl> connection.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NOTES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If necessary, SSL_write() will negotiate a TLS/SSL session, if
 | 
				
			||||||
not already explicitly performed by SSL_connect() or SSL_accept(). If the
 | 
					not already explicitly performed by SSL_connect() or SSL_accept(). If the
 | 
				
			||||||
peer requests a re-negotiation, it will be performed transparently during
 | 
					peer requests a re-negotiation, it will be performed transparently during
 | 
				
			||||||
the SSL_write() operation. The behaviour of SSL_write() depends on the
 | 
					the SSL_write() operation. The behaviour of SSL_write() depends on the
 | 
				
			||||||
@@ -34,6 +38,12 @@ non-blocking socket, nothing is to be done, but select() can be used to check
 | 
				
			|||||||
for the required condition. When using a buffering BIO, like a BIO pair, data
 | 
					for the required condition. When using a buffering BIO, like a BIO pair, data
 | 
				
			||||||
must be written into or retrieved out of the BIO before being able to continue.
 | 
					must be written into or retrieved out of the BIO before being able to continue.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 IMPORTANT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When an SSL_write() operation has to be repeated because of
 | 
				
			||||||
 | 
					B<SSL_ERROR_WANT_READ> or B<SSL_ERROR_WANT_WRITE>, it must be repeated
 | 
				
			||||||
 | 
					with the same arguments.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 RETURN VALUES
 | 
					=head1 RETURN VALUES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following return values can occur:
 | 
					The following return values can occur:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7
									
								
								e_os.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								e_os.h
									
									
									
									
									
								
							@@ -275,6 +275,9 @@ extern "C" {
 | 
				
			|||||||
#    define NO_SYS_PARAM_H
 | 
					#    define NO_SYS_PARAM_H
 | 
				
			||||||
#  else
 | 
					#  else
 | 
				
			||||||
     /* !defined VMS */
 | 
					     /* !defined VMS */
 | 
				
			||||||
 | 
					#    ifdef MPE
 | 
				
			||||||
 | 
					#      define NO_SYS_PARAM_H
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
#    ifdef OPENSSL_UNISTD
 | 
					#    ifdef OPENSSL_UNISTD
 | 
				
			||||||
#      include OPENSSL_UNISTD
 | 
					#      include OPENSSL_UNISTD
 | 
				
			||||||
#    else
 | 
					#    else
 | 
				
			||||||
@@ -344,7 +347,9 @@ extern HINSTANCE _hInstance;
 | 
				
			|||||||
#    ifndef NO_SYS_PARAM_H
 | 
					#    ifndef NO_SYS_PARAM_H
 | 
				
			||||||
#      include <sys/param.h>
 | 
					#      include <sys/param.h>
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
#    include <sys/time.h> /* Needed under linux for FD_XXX */
 | 
					#    ifndef MPE
 | 
				
			||||||
 | 
					#      include <sys/time.h> /* Needed under linux for FD_XXX */
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#    include <netdb.h>
 | 
					#    include <netdb.h>
 | 
				
			||||||
#    if defined(VMS) && !defined(__DECC)
 | 
					#    if defined(VMS) && !defined(__DECC)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -133,7 +133,11 @@ extern "C" {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Upper/Lower Bounds */
 | 
					/* Upper/Lower Bounds */
 | 
				
			||||||
#define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS	256
 | 
					#define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS	256
 | 
				
			||||||
 | 
					#ifdef MPE
 | 
				
			||||||
 | 
					#define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER	(unsigned int)29998
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
#define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER	(unsigned int)32767 
 | 
					#define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER	(unsigned int)32767 
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER	16383 /**/
 | 
					#define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER	16383 /**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SSL2_CHALLENGE_LENGTH	16
 | 
					#define SSL2_CHALLENGE_LENGTH	16
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user