Loading crypto/rand/rand_vms.c +63 −5 Original line number Diff line number Diff line /* crypto/rand/rand_vms.c */ /* crypto/rand/rand_vms.c -*- mode:C; c-file-style: "eay" -*- */ /* Written by Richard Levitte <richard@levitte.org> for the OpenSSL * project 2000. */ Loading Loading @@ -61,12 +61,70 @@ #if defined(OPENSSL_SYS_VMS) /* For now, this does nothing. I'm searching for a good random device, then we'll see. */ #include <descrip.h> #include <jpidef.h> #include <ssdef.h> #include <starlet.h> 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) { return 0; 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; /* Setup */ while (pitems_data->length) { 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; } 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(8, &pid, 0, item, iosb, 0, 0)) != SS$_NOMOREPROC) { if (status == SS$_NORMAL) { RAND_add(data_buffer, total_length, total_length/2); } } SYS$GETTIM(iosb); RAND_add((unsigned char *)iosb, sizeof(iosb), sizeof(iosb)/2); return 1; } #endif Loading
crypto/rand/rand_vms.c +63 −5 Original line number Diff line number Diff line /* crypto/rand/rand_vms.c */ /* crypto/rand/rand_vms.c -*- mode:C; c-file-style: "eay" -*- */ /* Written by Richard Levitte <richard@levitte.org> for the OpenSSL * project 2000. */ Loading Loading @@ -61,12 +61,70 @@ #if defined(OPENSSL_SYS_VMS) /* For now, this does nothing. I'm searching for a good random device, then we'll see. */ #include <descrip.h> #include <jpidef.h> #include <ssdef.h> #include <starlet.h> 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) { return 0; 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; /* Setup */ while (pitems_data->length) { 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; } 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(8, &pid, 0, item, iosb, 0, 0)) != SS$_NOMOREPROC) { if (status == SS$_NORMAL) { RAND_add(data_buffer, total_length, total_length/2); } } SYS$GETTIM(iosb); RAND_add((unsigned char *)iosb, sizeof(iosb), sizeof(iosb)/2); return 1; } #endif