--- pgp/src/random.h 2018/04/24 16:37:52 1.1.1.1 +++ pgp/src/random.h 2018/04/24 16:39:35 1.1.1.4 @@ -1,64 +1,51 @@ -/* random.h - Header include file for random.c - Last revised 15 Dec 90 - (c) 1989 Philip Zimmermann. All rights reserved. -*/ - - -/* Elaborate protection mechanisms to assure no redefinitions of types...*/ -#ifndef BOOLSTUFF -#define BOOLSTUFF -#ifndef TRUE -#define FALSE 0 -#define TRUE (!FALSE) -#endif /* if TRUE not already defined */ -typedef unsigned char boolean; /* values are TRUE or FALSE */ -#endif /* if BOOLSTUFF not already defined */ -#ifndef BYTESTUFF -#define BYTESTUFF -typedef unsigned char byte; /* values are 0-255 */ -typedef byte *byteptr; /* pointer to byte */ -typedef char *string; /* pointer to ASCII character string */ -#endif /* if BYTESTUFF not already defined */ -#ifndef min /* if min macro not already defined */ -#define min(a,b) ( (a)<(b) ? (a) : (b) ) -#define max(a,b) ( (a)>(b) ? (a) : (b) ) -#endif /* if min macro not already defined */ - - -int pseudorand(void); /* 16-bit LCG pseudorandom generator */ - -/* Don't define PSEUDORANDOM unless you want only pseudorandom numbers */ - -#ifdef PSEUDORANDOM /* use pseudorandom numbers */ -#define randombyte() ((byte) pseudorand()) /* pseudorandom generator */ -#define randaccum(bitcount) /* null function */ -#define randload(bitcount) /* null function */ -#define randflush() /* null function */ -#define capturecounter() /* null function */ -#define keypress() kbhit() /* TRUE iff keyboard input ready */ -#define getkey() getch() /* returns data from keyboard (no echo). */ -#endif /* ifdef PSEUDORANDOM */ - -#ifndef PSEUDORANDOM /* use truly random numbers */ - -extern int randcount; /* number of random bytes accumulated in pool */ - -void capturecounter(void); /* capture a fast counter into the random pool. */ -/* Should be called when the user clicks the mouse, or from getkey(). */ - -short randombyte(void); /* returns truly random byte from pool */ - -int getstring(char *strbuf,int maxlen,boolean echo); - -void randaccum(short bitcount); /* get this many raw random bits ready */ - -short randload(short bitcount); -/* Get fresh load of raw random bits into recyclepool for key generation */ - -void randflush(void); /* flush recycled random bytes */ - -boolean keypress(void); /* TRUE iff keyboard input ready */ -short getkey(void); /* returns data from keyboard (no echo). */ - -#endif /* ifndef PSEUDORANDOM */ - +/* random.h - Header include file for random.c + Last revised 15 Dec 90 + (c) 1989 Philip Zimmermann. All rights reserved. +*/ + + +#include "usuals.h" /* typedefs for byte, word16, boolean, etc. */ + + +/* Don't define PSEUDORANDOM unless you want only pseudorandom numbers. + If you do want PSEDORANDOM defined, it's better to define it right + here in this include file because then you can be sure that all the + files that include random.h will be properly affected. */ +/* #define PSEUDORANDOM */ + +#ifdef PSEUDORANDOM /* use pseudorandom numbers */ +#define randombyte() ((byte) pseudorand()) /* pseudorandom generator */ +#define randaccum_later(bitcount) /* null function */ +#define randaccum(bitcount) /* null function */ +#define randload(bitcount) /* null function */ +#define randflush() /* null function */ +#define capturecounter() /* null function */ +#define keypress() kbhit() /* TRUE iff keyboard input ready */ +#define getkey() getch() /* returns data from keyboard (no echo). */ +#endif /* ifdef PSEUDORANDOM */ + +#ifndef PSEUDORANDOM /* use truly random numbers */ + +short try_randombyte(void); /* returns truly random byte, or -1 */ +short randombyte(void); /* returns truly random byte from pool */ + +int getstring(char *strbuf,int maxlen,boolean echo); + +void randaccum_later(short bitcount); /* get random bits later */ +void randaccum(short bitcount); /* get this many raw random bits ready */ + +short randload(short bitcount); +/* Get fresh load of raw random bits into recyclepool for key generation */ + +void randflush(void); /* flush recycled random bytes */ + +#endif /* ifndef PSEUDORANDOM */ + +/* DJGPP includes a getkey() which works, but PGP also uses getkey() to + accumulate random bytes. To avoid a conflict, getkey is #defined as + pgp_getkey. You don't really need to know this. */ +#ifdef __GO32__ + #define getkey pgp_getkey +#endif + +extern void flush_input(void);