The unified diff between revisions [0dc5b2d6..] and [b14c94b9..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'bn_mp_prime_random_ex.c'
#
#
# patch "bn_mp_prime_random_ex.c"
# from [31f8a27d870e541417b0ca1a911480e1e060169f]
# to [4cba143b51b505f3c881caf21f5879695d0dcefa]
#
============================================================
--- bn_mp_prime_random_ex.c 31f8a27d870e541417b0ca1a911480e1e060169f
+++ bn_mp_prime_random_ex.c 4cba143b51b505f3c881caf21f5879695d0dcefa
@@ -47,7 +47,7 @@ int mp_prime_random_ex(mp_int *a, int t,
}
/* calc the byte size */
- bsize = (size>>3)+(size&7?1:0);
+ bsize = (size>>3) + ((size&7)?1:0);
/* we need a buffer of bsize bytes */
tmp = OPT_CAST(unsigned char) XMALLOC(bsize);
@@ -56,19 +56,19 @@ int mp_prime_random_ex(mp_int *a, int t,
}
/* calc the maskAND value for the MSbyte*/
- maskAND = 0xFF >> (8 - (size & 7));
+ maskAND = ((size&7) == 0) ? 0xFF : (0xFF >> (8 - (size & 7)));
/* calc the maskOR_msb */
maskOR_msb = 0;
- maskOR_msb_offset = (size - 2) >> 3;
+ maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0;
if (flags & LTM_PRIME_2MSB_ON) {
maskOR_msb |= 1 << ((size - 2) & 7);
} else if (flags & LTM_PRIME_2MSB_OFF) {
maskAND &= ~(1 << ((size - 2) & 7));
- }
+ }
/* get the maskOR_lsb */
- maskOR_lsb = 0;
+ maskOR_lsb = 1;
if (flags & LTM_PRIME_BBS) {
maskOR_lsb |= 3;
}