[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.20 and 1.21

version 1.20, 2007/02/24 03:30:11 version 1.21, 2008/06/26 09:19:40
Line 40 
Line 40 
 #include <sys/types.h>  #include <sys/types.h>
   
 #include <openssl/bn.h>  #include <openssl/bn.h>
   #include <openssl/dh.h>
   
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
Line 48 
Line 49 
 #include <time.h>  #include <time.h>
   
 #include "xmalloc.h"  #include "xmalloc.h"
   #include "dh.h"
 #include "log.h"  #include "log.h"
   
 /*  /*
Line 57 
Line 59 
 /* 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.  
  * Specifies the internal structure of the prime modulus.  
  */  
 #define QTYPE_UNKNOWN           (0)  
 #define QTYPE_UNSTRUCTURED      (1)  
 #define QTYPE_SAFE              (2)  
 #define QTYPE_SCHNORR           (3)  
 #define QTYPE_SOPHIE_GERMAIN    (4)  
 #define QTYPE_STRONG            (5)  
   
 /* Tests: decimal (bit field).  
  * Specifies the methods used in checking for primality.  
  * Usually, more than one test is used.  
  */  
 #define QTEST_UNTESTED          (0x00)  
 #define QTEST_COMPOSITE         (0x01)  
 #define QTEST_SIEVE             (0x02)  
 #define QTEST_MILLER_RABIN      (0x04)  
 #define QTEST_JACOBI            (0x08)  
 #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).
Line 432 
Line 413 
                         fatal("BN_set_word failed");                          fatal("BN_set_word failed");
                 if (BN_add(q, q, largebase) == 0)                  if (BN_add(q, q, largebase) == 0)
                         fatal("BN_add failed");                          fatal("BN_add failed");
                 if (qfileout(out, QTYPE_SOPHIE_GERMAIN, QTEST_SIEVE,                  if (qfileout(out, MODULI_TYPE_SOPHIE_GERMAIN,
                     largetries, (power - 1) /* MSB */, (0), q) == -1) {                      MODULI_TESTS_SIEVE, largetries,
                       (power - 1) /* MSB */, (0), q) == -1) {
                         ret = -1;                          ret = -1;
                         break;                          break;
                 }                  }
Line 505 
Line 487 
                 /* tests */                  /* tests */
                 in_tests = strtoul(cp, &cp, 10);                  in_tests = strtoul(cp, &cp, 10);
   
                 if (in_tests & QTEST_COMPOSITE) {                  if (in_tests & MODULI_TESTS_COMPOSITE) {
                         debug2("%10u: known composite", count_in);                          debug2("%10u: known composite", count_in);
                         continue;                          continue;
                 }                  }
Line 524 
Line 506 
   
                 /* modulus (hex) */                  /* modulus (hex) */
                 switch (in_type) {                  switch (in_type) {
                 case QTYPE_SOPHIE_GERMAIN:                  case MODULI_TYPE_SOPHIE_GERMAIN:
                         debug2("%10u: (%u) Sophie-Germain", count_in, in_type);                          debug2("%10u: (%u) Sophie-Germain", count_in, in_type);
                         a = q;                          a = q;
                         if (BN_hex2bn(&a, cp) == 0)                          if (BN_hex2bn(&a, cp) == 0)
Line 537 
Line 519 
                         in_size += 1;                          in_size += 1;
                         generator_known = 0;                          generator_known = 0;
                         break;                          break;
                 case QTYPE_UNSTRUCTURED:                  case MODULI_TYPE_UNSTRUCTURED:
                 case QTYPE_SAFE:                  case MODULI_TYPE_SAFE:
                 case QTYPE_SCHNORR:                  case MODULI_TYPE_SCHNORR:
                 case QTYPE_STRONG:                  case MODULI_TYPE_STRONG:
                 case QTYPE_UNKNOWN:                  case MODULI_TYPE_UNKNOWN:
                         debug2("%10u: (%u)", count_in, in_type);                          debug2("%10u: (%u)", count_in, in_type);
                         a = p;                          a = p;
                         if (BN_hex2bn(&a, cp) == 0)                          if (BN_hex2bn(&a, cp) == 0)
Line 568 
Line 550 
                         continue;                          continue;
                 }                  }
   
                 if (in_tests & QTEST_MILLER_RABIN)                  if (in_tests & MODULI_TESTS_MILLER_RABIN)
                         in_tries += trials;                          in_tries += trials;
                 else                  else
                         in_tries = trials;                          in_tries = trials;
Line 642 
Line 624 
                 }                  }
                 debug("%10u: q is almost certainly prime", count_in);                  debug("%10u: q is almost certainly prime", count_in);
   
                 if (qfileout(out, QTYPE_SAFE, (in_tests | QTEST_MILLER_RABIN),                  if (qfileout(out, MODULI_TYPE_SAFE,
                       in_tests | MODULI_TESTS_MILLER_RABIN,
                     in_tries, in_size, generator_known, p)) {                      in_tries, in_size, generator_known, p)) {
                         res = -1;                          res = -1;
                         break;                          break;

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21