diff options
Diffstat (limited to 'crypto/rand/rand_vms.c')
-rw-r--r-- | crypto/rand/rand_vms.c | 167 |
1 files changed, 89 insertions, 78 deletions
diff --git a/crypto/rand/rand_vms.c b/crypto/rand/rand_vms.c index 0bfd8ff7e4..a7179a4ba1 100644 --- a/crypto/rand/rand_vms.c +++ b/crypto/rand/rand_vms.c @@ -1,6 +1,7 @@ /* crypto/rand/rand_vms.c -*- mode:C; c-file-style: "eay" -*- */ -/* Written by Richard Levitte <richard@levitte.org> for the OpenSSL - * project 2000. +/* + * Written by Richard Levitte <richard@levitte.org> for the OpenSSL project + * 2000. */ /* ==================================================================== * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. @@ -10,7 +11,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -61,88 +62,98 @@ #if defined(OPENSSL_SYS_VMS) -#include <descrip.h> -#include <jpidef.h> -#include <ssdef.h> -#include <starlet.h> -#ifdef __DECC -# pragma message disable DOLLARID -#endif +# include <descrip.h> +# include <jpidef.h> +# include <ssdef.h> +# include <starlet.h> +# ifdef __DECC +# pragma message disable DOLLARID +# endif -/* Use 32-bit pointers almost everywhere. Define the type to which to - * cast a pointer passed to an external function. +/* + * Use 32-bit pointers almost everywhere. Define the type to which to cast a + * pointer passed to an external function. */ -#if __INITIAL_POINTER_SIZE == 64 -# define PTR_T __void_ptr64 -# pragma pointer_size save -# pragma pointer_size 32 -#else /* __INITIAL_POINTER_SIZE == 64 */ -# define PTR_T void * -#endif /* __INITIAL_POINTER_SIZE == 64 [else] */ +# if __INITIAL_POINTER_SIZE == 64 +# define PTR_T __void_ptr64 +# pragma pointer_size save +# pragma pointer_size 32 +# else /* __INITIAL_POINTER_SIZE == 64 */ +# define PTR_T void * +# endif /* __INITIAL_POINTER_SIZE == 64 [else] */ + +static struct items_data_st { + short length, code; /* length is amount of bytes */ +} items_data[] = { + { + 4, JPI$_BUFIO + }, + { + 4, JPI$_CPUTIM + }, + { + 4, JPI$_DIRIO + }, + { + 8, JPI$_LOGINTIM + }, + { + 4, JPI$_PAGEFLTS + }, + { + 4, JPI$_PID + }, + { + 4, JPI$_WSSIZE + }, + { + 0, 0 + } +}; -static struct items_data_st - { - short length, code; /* length is amount of bytes */ - } items_data[] = - { { 4, JPI$_BUFIO }, - { 4, JPI$_CPUTIM }, - { 4, JPI$_DIRIO }, - { 8, JPI$_LOGINTIM }, - { 4, JPI$_PAGEFLTS }, - { 4, JPI$_PID }, - { 4, JPI$_WSSIZE }, - { 0, 0 } - }; - int RAND_poll(void) - { - long pid, iosb[2]; - int status = 0; - struct - { - short length, code; - long *buffer; - int *retlen; - } item[32], *pitem; - unsigned char data_buffer[256]; - short total_length = 0; - struct items_data_st *pitems_data; +{ + long pid, iosb[2]; + int status = 0; + struct { + short length, code; + long *buffer; + int *retlen; + } item[32], *pitem; + unsigned char data_buffer[256]; + short total_length = 0; + struct items_data_st *pitems_data; - pitems_data = items_data; - pitem = item; + pitems_data = items_data; + pitem = item; - /* Setup */ - while (pitems_data->length - && (total_length + pitems_data->length <= 256)) - { - pitem->length = pitems_data->length; - pitem->code = pitems_data->code; - pitem->buffer = (long *)&data_buffer[total_length]; - pitem->retlen = 0; - total_length += pitems_data->length; - pitems_data++; - pitem++; - } - pitem->length = pitem->code = 0; + /* Setup */ + while (pitems_data->length && (total_length + pitems_data->length <= 256)) { + pitem->length = pitems_data->length; + pitem->code = pitems_data->code; + pitem->buffer = (long *)&data_buffer[total_length]; + pitem->retlen = 0; + total_length += pitems_data->length; + pitems_data++; + pitem ++; + } + pitem->length = pitem->code = 0; - /* - * Scan through all the processes in the system and add entropy with - * results from the processes that were possible to look at. - * However, view the information as only half trustable. - */ - pid = -1; /* search context */ - while ((status = sys$getjpiw(0, &pid, 0, item, iosb, 0, 0)) - != SS$_NOMOREPROC) - { - if (status == SS$_NORMAL) - { - RAND_add( (PTR_T)data_buffer, total_length, - total_length/2); - } - } - sys$gettim(iosb); - RAND_add( (PTR_T)iosb, sizeof(iosb), sizeof(iosb)/2); - return 1; + /* + * Scan through all the processes in the system and add entropy with + * results from the processes that were possible to look at. + * However, view the information as only half trustable. + */ + pid = -1; /* search context */ + while ((status = sys$getjpiw(0, &pid, 0, item, iosb, 0, 0)) + != SS$_NOMOREPROC) { + if (status == SS$_NORMAL) { + RAND_add((PTR_T) data_buffer, total_length, total_length / 2); + } + } + sys$gettim(iosb); + RAND_add((PTR_T) iosb, sizeof(iosb), sizeof(iosb) / 2); + return 1; } #endif |