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

Diff for /src/usr.bin/ssh/dh.c between version 1.35 and 1.36

version 1.35, 2006/03/27 13:03:54 version 1.36, 2006/05/04 14:55:23
Line 181 
Line 181 
         int i;          int i;
         int n = BN_num_bits(dh_pub);          int n = BN_num_bits(dh_pub);
         int bits_set = 0;          int bits_set = 0;
           BIGNUM *tmp;
   
         if (dh_pub->neg) {          if (dh_pub->neg) {
                 logit("invalid public DH value: negativ");                  logit("invalid public DH value: negativ");
                 return 0;                  return 0;
         }          }
           if (BN_cmp(dh_pub, BN_value_one()) != 1) {      /* pub_exp <= 1 */
                   logit("invalid public DH value: <= 1");
                   return 0;
           }
   
           if ((tmp = BN_new()) == NULL)
                   return (-1);
           if (!BN_sub(tmp, dh->p, BN_value_one()) ||
               BN_cmp(dh_pub, tmp) != -1) {                /* pub_exp > p-2 */
                   BN_clear_free(tmp);
                   logit("invalid public DH value: >= p-1");
                   return 0;
           }
           BN_clear_free(tmp);
   
         for (i = 0; i <= n; i++)          for (i = 0; i <= n; i++)
                 if (BN_is_bit_set(dh_pub, i))                  if (BN_is_bit_set(dh_pub, i))
                         bits_set++;                          bits_set++;
         debug2("bits set: %d/%d", bits_set, BN_num_bits(dh->p));          debug2("bits set: %d/%d", bits_set, BN_num_bits(dh->p));
   
         /* if g==2 and bits_set==1 then computing log_g(dh_pub) is trivial */          /* if g==2 and bits_set==1 then computing log_g(dh_pub) is trivial */
         if (bits_set > 1 && (BN_cmp(dh_pub, dh->p) == -1))          if (bits_set > 1)
                 return 1;                  return 1;
   
         logit("invalid public DH value (%d/%d)", bits_set, BN_num_bits(dh->p));          logit("invalid public DH value (%d/%d)", bits_set, BN_num_bits(dh->p));
         return 0;          return 0;
 }  }

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.36