Loading CHANGES +3 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent Bleichenbacher's DSA attack. Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits to be set and top=0 forces the highest bit to be set; top=-1 is new and leaves the highest bit random. [Ulf Moeller] *) In the NCONF_...-based implementations for CONF_... queries Loading crypto/bn/bn_rand.c +5 −7 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) bytes=(bits+7)/8; bit=(bits-1)%8; mask=0xff<<bit; mask=0xff<<(bit+1); buf=(unsigned char *)OPENSSL_malloc(bytes); if (buf == NULL) Loading Loading @@ -112,16 +112,15 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) else { buf[0]|=(3<<(bit-1)); buf[0]&= ~(mask<<1); } } else { buf[0]|=(1<<bit); buf[0]&= ~(mask<<1); } } if (bottom) /* set bottom bits to whatever odd is */ buf[0] &= ~mask; if (bottom) /* set bottom bit if requested */ buf[bytes-1]|=1; if (!BN_bin2bn(buf,bytes,rnd)) goto err; ret=1; Loading Loading @@ -194,4 +193,3 @@ int BN_rand_range(BIGNUM *r, BIGNUM *range) return 1; } Loading
CHANGES +3 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ *) Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent Bleichenbacher's DSA attack. Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits to be set and top=0 forces the highest bit to be set; top=-1 is new and leaves the highest bit random. [Ulf Moeller] *) In the NCONF_...-based implementations for CONF_... queries Loading
crypto/bn/bn_rand.c +5 −7 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) bytes=(bits+7)/8; bit=(bits-1)%8; mask=0xff<<bit; mask=0xff<<(bit+1); buf=(unsigned char *)OPENSSL_malloc(bytes); if (buf == NULL) Loading Loading @@ -112,16 +112,15 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) else { buf[0]|=(3<<(bit-1)); buf[0]&= ~(mask<<1); } } else { buf[0]|=(1<<bit); buf[0]&= ~(mask<<1); } } if (bottom) /* set bottom bits to whatever odd is */ buf[0] &= ~mask; if (bottom) /* set bottom bit if requested */ buf[bytes-1]|=1; if (!BN_bin2bn(buf,bytes,rnd)) goto err; ret=1; Loading Loading @@ -194,4 +193,3 @@ int BN_rand_range(BIGNUM *r, BIGNUM *range) return 1; }