home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume38 / circ / part01 / Circ / RSA / conf.h
C/C++ Source or Header  |  1993-08-11  |  2KB  |  97 lines

  1. /*******************************************************************************
  2. *                                           *
  3. *    Copyright (c) Martin Nicolay,  22. Nov. 1988                   *
  4. *                                           *
  5. *    Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten   *
  6. *    bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter    *
  7. *    verwendet werden.                               *
  8. *                                           *
  9. *    martin@trillian.megalon.de                           *
  10. *                                           *
  11. *******************************************************************************/
  12.  
  13. #ifndef    _conf_h_
  14. #define    _conf_h_
  15.  
  16. typedef    unsigned short INT;        /* muss MAXINT fassen        */
  17. typedef    unsigned long LONG;        /* muss (MAXINT+1)^2 -1 fassen    */
  18.  
  19. #if    defined( M_XENIX )
  20. #define    P(x)    x            /* Funktions Prototypen an    */
  21. #else
  22. #define    P(x)    ()            /* Funktions Prototypen aus    */
  23. #endif
  24.  
  25. /*
  26.  *    (MAXINT+1)-adic Zahlen
  27.  */
  28.  
  29. /*
  30.  *    MAXINT        Maximale Zahl pro Elemenmt (muss int sein)
  31.  *    MAXBIT        Maximales Bit von MAXINT
  32.  *    LOWBITS        Anzahl der consekutiven low Bits von MAXINT
  33.  *    HIGHBIT        Hoechsten Bit von MAXINT
  34.  *    TOINT        muss (INT)( (x) % MAXINT) ergeben
  35.  *    MAXLEN        Laenge der INT Array in jeder NUMBER
  36.  */
  37.  
  38. #define MAXINT        0xFFFF
  39.  
  40. #if MAXINT == 99
  41. #define    MAXBIT        7
  42. #define    LOWBITS     2
  43. #endif
  44. #if MAXINT == 9
  45. #define    MAXBIT        4
  46. #define    LOWBITS     1
  47. #endif
  48. #if MAXINT == 1
  49. #define MAXBIT        1
  50. #endif
  51. #if MAXINT == 0xFF
  52. #define MAXBIT        8
  53. #define    TOINT(x)    ((INT)(x))        /* ACHTUNG !!!!! */
  54. #endif
  55. #if MAXINT == 0xFFFF
  56. #define MAXBIT        16
  57. #define    TOINT(x)    ((INT)(x))        /* ACHTUNG !!!!! */
  58. #endif
  59.  
  60. #ifndef    MAXBIT
  61. #include    "<< ERROR: MAXBIT must be defined >>"
  62. #endif
  63. #ifndef    LOWBITS
  64. #if MAXINT == (1 << MAXBIT) - 1
  65. #define    LOWBITS        MAXBIT
  66. #else
  67. #include    "<< ERROR: LOWBITS must be defined >>"
  68. #endif
  69. #endif
  70.  
  71. #define    MAXLEN        (300*8/(MAXBIT + 1))
  72. #define    STRLEN        (MAXLEN*MAXBIT/4)
  73. #define    HIGHBIT        (1 << (MAXBIT-1) )
  74.  
  75. #if LOWBITS == MAXBIT
  76. #define    DIVMAX1(x)    ((x) >> MAXBIT)
  77. #define    MODMAX1(x)    ((x) & MAXINT)
  78. #define    MULMAX1(x)    ((x) << MAXBIT)
  79. #else
  80. #define    DIVMAX1(x)    ((x) / (MAXINT+1))
  81. #define    MODMAX1(x)    ((x) % (MAXINT+1))
  82. #define    MULMAX1(x)    ((x) * (unsigned)(MAXINT+1))
  83. #endif
  84.  
  85. #ifndef    TOINT
  86. #define    TOINT(x)    ((INT)MODMAX1(x))
  87. #endif
  88.  
  89. typedef struct {
  90.     int    n_len;            /* Hoechster benutzter Index    */
  91.     INT    n_part[MAXLEN];
  92. } NUMBER;
  93.  
  94. #define    NUM0P    ((NUMBER *)0)        /* Abkuerzung            */
  95.  
  96. #endif
  97.