Wez Furlong's patch to add xterm mouse reporting and proper mouse
[sgt/putty] / sshprime.c
index 61488a0..bd815e9 100644 (file)
@@ -674,13 +674,13 @@ Bignum primegen(int bits, int modulus, int residue,
     /*
      * Generate a k-bit random number with top and bottom bits set.
      */
-    p = newbn((bits+15)/16);
+    p = bn_power_2(bits-1);
     for (i = 0; i < bits; i++) {
         if (i == 0 || i == bits-1)
             v = 1;
         else {
             if (bitsleft <= 0)
-                bitsleft = 8; byte = random_byte();
+                bitsleft = 8, byte = random_byte();
             v = byte & 1;
             byte >>= 1;
             bitsleft--;
@@ -754,15 +754,16 @@ Bignum primegen(int bits, int modulus, int residue,
          * Invent a random number between 1 and p-1 inclusive.
          */
         while (1) {
-            w = newbn((bits+15)/16);
+            w = bn_power_2(bits-1);
             for (i = 0; i < bits; i++) {
                 if (bitsleft <= 0)
-                    bitsleft = 8; byte = random_byte();
+                    bitsleft = 8, byte = random_byte();
                 v = byte & 1;
                 byte >>= 1;
                 bitsleft--;
                 bignum_set_bit(w, i, v);
             }
+            bn_restore_invariant(w);
             if (bignum_cmp(w, p) >= 0 || bignum_cmp(w, Zero) == 0) {
                 freebn(w);
                 continue;