[BACK]Return to moduli.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/moduli.c between version 1.5.2.2 and 1.6

version 1.5.2.2, 2005/03/10 17:15:04 version 1.6, 2004/04/22 11:56:57
Line 38 
Line 38 
  */   */
   
 #include "includes.h"  #include "includes.h"
   #include "moduli.h"
 #include "xmalloc.h"  #include "xmalloc.h"
 #include "log.h"  #include "log.h"
   
Line 48 
Line 49 
  */   */
   
 /* need line long enough for largest moduli plus headers */  /* need line long enough for largest moduli plus headers */
 #define QLINESIZE               (100+8192)  #define QLINESIZE               (100+8192)
   
 /* Type: decimal.  /* Type: decimal.
  * Specifies the internal structure of the prime modulus.   * Specifies the internal structure of the prime modulus.
  */   */
 #define QTYPE_UNKNOWN           (0)  #define QTYPE_UNKNOWN           (0)
 #define QTYPE_UNSTRUCTURED      (1)  #define QTYPE_UNSTRUCTURED      (1)
 #define QTYPE_SAFE              (2)  #define QTYPE_SAFE              (2)
 #define QTYPE_SCHNORR           (3)  #define QTYPE_SCHNOOR           (3)
 #define QTYPE_SOPHIE_GERMAIN    (4)  #define QTYPE_SOPHIE_GERMAIN    (4)
 #define QTYPE_STRONG            (5)  #define QTYPE_STRONG            (5)
   
 /* Tests: decimal (bit field).  /* Tests: decimal (bit field).
  * Specifies the methods used in checking for primality.   * Specifies the methods used in checking for primality.
  * Usually, more than one test is used.   * Usually, more than one test is used.
  */   */
 #define QTEST_UNTESTED          (0x00)  #define QTEST_UNTESTED          (0x00)
 #define QTEST_COMPOSITE         (0x01)  #define QTEST_COMPOSITE         (0x01)
 #define QTEST_SIEVE             (0x02)  #define QTEST_SIEVE             (0x02)
 #define QTEST_MILLER_RABIN      (0x04)  #define QTEST_MILLER_RABIN      (0x04)
 #define QTEST_JACOBI            (0x08)  #define QTEST_JACOBI            (0x08)
 #define QTEST_ELLIPTIC          (0x10)  #define QTEST_ELLIPTIC          (0x10)
   
 /*  /*
  * Size: decimal.   * Size: decimal.
  * Specifies the number of the most significant bit (0 to M).   * Specifies the number of the most significant bit (0 to M).
  * WARNING: internally, usually 1 to N.   * WARNING: internally, usually 1 to N.
  */   */
 #define QSIZE_MINIMUM           (511)  #define QSIZE_MINIMUM           (511)
   
 /*  /*
  * Prime sieving defines   * Prime sieving defines
  */   */
   
 /* Constant: assuming 8 bit bytes and 32 bit words */  /* Constant: assuming 8 bit bytes and 32 bit words */
 #define SHIFT_BIT       (3)  #define SHIFT_BIT       (3)
 #define SHIFT_BYTE      (2)  #define SHIFT_BYTE      (2)
 #define SHIFT_WORD      (SHIFT_BIT+SHIFT_BYTE)  #define SHIFT_WORD      (SHIFT_BIT+SHIFT_BYTE)
 #define SHIFT_MEGABYTE  (20)  #define SHIFT_MEGABYTE  (20)
 #define SHIFT_MEGAWORD  (SHIFT_MEGABYTE-SHIFT_BYTE)  #define SHIFT_MEGAWORD  (SHIFT_MEGABYTE-SHIFT_BYTE)
   
 /*  /*
  * Using virtual memory can cause thrashing.  This should be the largest  
  * number that is supported without a large amount of disk activity --  
  * that would increase the run time from hours to days or weeks!  
  */  
 #define LARGE_MINIMUM   (8UL)   /* megabytes */  
   
 /*  
  * Do not increase this number beyond the unsigned integer bit size.  
  * Due to a multiple of 4, it must be LESS than 128 (yielding 2**30 bits).  
  */  
 #define LARGE_MAXIMUM   (127UL) /* megabytes */  
   
 /*  
  * Constant: when used with 32-bit integers, the largest sieve prime   * Constant: when used with 32-bit integers, the largest sieve prime
  * has to be less than 2**32.   * has to be less than 2**32.
  */   */
 #define SMALL_MAXIMUM   (0xffffffffUL)  #define SMALL_MAXIMUM   (0xffffffffUL)
   
 /* Constant: can sieve all primes less than 2**32, as 65537**2 > 2**32-1. */  /* Constant: can sieve all primes less than 2**32, as 65537**2 > 2**32-1. */
 #define TINY_NUMBER     (1UL<<16)  #define TINY_NUMBER     (1UL<<16)
   
 /* Ensure enough bit space for testing 2*q. */  /* Ensure enough bit space for testing 2*q. */
 #define TEST_MAXIMUM    (1UL<<16)  #define TEST_MAXIMUM    (1UL<<16)
Line 126 
Line 114 
  * Prime testing defines   * Prime testing defines
  */   */
   
 /* Minimum number of primality tests to perform */  
 #define TRIAL_MINIMUM           (4)  
   
 /*  /*
  * Sieving data (XXX - move to struct)   * Sieving data (XXX - move to struct)
  */   */
Line 144 
Line 129 
 static u_int32_t largebits, largememory;        /* megabytes */  static u_int32_t largebits, largememory;        /* megabytes */
 static BIGNUM *largebase;  static BIGNUM *largebase;
   
 int gen_candidates(FILE *, int, int, BIGNUM *);  
 int prime_test(FILE *, FILE *, u_int32_t, u_int32_t);  
   
 /*  /*
  * print moduli out in consistent form,   * print moduli out in consistent form,
Line 252 
Line 235 
   
         largememory = memory;          largememory = memory;
   
         if (memory != 0 &&  
            (memory < LARGE_MINIMUM || memory > LARGE_MAXIMUM)) {  
                 error("Invalid memory amount (min %ld, max %ld)",  
                     LARGE_MINIMUM, LARGE_MAXIMUM);  
                 return (-1);  
         }  
   
         /*          /*
          * Set power to the length in bits of the prime to be generated.           * Set power to the length in bits of the prime to be generated.
          * This is changed to 1 less than the desired safe prime moduli p.           * This is changed to 1 less than the desired safe prime moduli p.
Line 454 
Line 430 
  * The result is a list of so-call "safe" primes   * The result is a list of so-call "safe" primes
  */   */
 int  int
 prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted)  prime_test(FILE *in, FILE *out, u_int32_t trials,
       u_int32_t generator_wanted)
 {  {
         BIGNUM *q, *p, *a;          BIGNUM *q, *p, *a;
         BN_CTX *ctx;          BN_CTX *ctx;
Line 464 
Line 441 
         time_t time_start, time_stop;          time_t time_start, time_stop;
         int res;          int res;
   
         if (trials < TRIAL_MINIMUM) {  
                 error("Minimum primality trials is %d", TRIAL_MINIMUM);  
                 return (-1);  
         }  
   
         time(&time_start);          time(&time_start);
   
         p = BN_new();          p = BN_new();
Line 530 
Line 502 
                         break;                          break;
                 case QTYPE_UNSTRUCTURED:                  case QTYPE_UNSTRUCTURED:
                 case QTYPE_SAFE:                  case QTYPE_SAFE:
                 case QTYPE_SCHNORR:                  case QTYPE_SCHNOOR:
                 case QTYPE_STRONG:                  case QTYPE_STRONG:
                 case QTYPE_UNKNOWN:                  case QTYPE_UNKNOWN:
                         debug2("%10u: (%u)", count_in, in_type);                          debug2("%10u: (%u)", count_in, in_type);

Legend:
Removed from v.1.5.2.2  
changed lines
  Added in v.1.6