home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 1229.RANDOM.H < prev    next >
Text File  |  1991-04-11  |  2KB  |  65 lines

  1. /*    random.h - Header include file for random.c
  2.     Last revised 15 Dec 90
  3.     (c) 1989 Philip Zimmermann.  All rights reserved.
  4. */
  5.  
  6.  
  7. /* Elaborate protection mechanisms to assure no redefinitions of types...*/
  8. #ifndef BOOLSTUFF
  9. #define BOOLSTUFF
  10. #ifndef TRUE
  11. #define FALSE 0
  12. #define TRUE (!FALSE)
  13. #endif    /* if TRUE not already defined */
  14. typedef unsigned char boolean;    /* values are TRUE or FALSE */
  15. #endif    /* if BOOLSTUFF not already defined */
  16. #ifndef BYTESTUFF
  17. #define BYTESTUFF
  18. typedef unsigned char byte;    /* values are 0-255 */
  19. typedef byte *byteptr;    /* pointer to byte */
  20. typedef char *string;    /* pointer to ASCII character string */
  21. #endif    /* if BYTESTUFF not already defined */
  22. #ifndef min    /* if min macro not already defined */
  23. #define min(a,b) ( (a)<(b) ? (a) : (b) )
  24. #define max(a,b) ( (a)>(b) ? (a) : (b) )
  25. #endif    /* if min macro not already defined */
  26.  
  27.  
  28. int pseudorand(void);    /* 16-bit LCG pseudorandom generator */
  29.  
  30. /* Don't define PSEUDORANDOM unless you want only pseudorandom numbers */
  31.  
  32. #ifdef PSEUDORANDOM        /* use pseudorandom numbers */
  33. #define randombyte()  ((byte) pseudorand())    /* pseudorandom generator */
  34. #define randaccum(bitcount)        /* null function */
  35. #define randload(bitcount)    /* null function */
  36. #define randflush()        /* null function */
  37. #define capturecounter()    /* null function */
  38. #define keypress() kbhit()    /* TRUE iff keyboard input ready */
  39. #define getkey() getch()    /* returns data from keyboard (no echo). */
  40. #endif    /* ifdef PSEUDORANDOM */
  41.  
  42. #ifndef PSEUDORANDOM        /* use truly random numbers */
  43.  
  44. extern int randcount;    /* number of random bytes accumulated in pool */
  45.  
  46. void capturecounter(void); /* capture a fast counter into the random pool. */
  47. /* Should be called when the user clicks the mouse, or from getkey(). */
  48.  
  49. short randombyte(void);    /* returns truly random byte from pool */
  50.  
  51. int getstring(char *strbuf,int maxlen,boolean echo);
  52.  
  53. void randaccum(short bitcount);    /* get this many raw random bits ready */
  54.  
  55. short randload(short bitcount);
  56. /* Get fresh load of raw random bits into recyclepool for key generation */
  57.  
  58. void randflush(void);    /* flush recycled random bytes */
  59.  
  60. boolean keypress(void);    /* TRUE iff keyboard input ready */
  61. short getkey(void);        /* returns data from keyboard (no echo). */
  62.  
  63. #endif            /* ifndef PSEUDORANDOM */
  64.  
  65.