mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
Move 'q->neg = 0' to those places where it is needed
(just in cases someone uses a negative modulus)
This commit is contained in:
parent
aa66eba7c8
commit
bc5f2740d2
@ -134,9 +134,11 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
|
||||
while (!BN_is_bit_set(p, e))
|
||||
e++;
|
||||
if (e > 2)
|
||||
{
|
||||
/* we don't need this q if e = 1 or 2 */
|
||||
if (!BN_rshift(q, p, e)) goto end;
|
||||
q->neg = 0;
|
||||
q->neg = 0;
|
||||
}
|
||||
|
||||
if (e == 1)
|
||||
{
|
||||
@ -148,6 +150,7 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
|
||||
* so we can use exponent (p+1)/4, i.e. (p-3)/4 + 1.
|
||||
*/
|
||||
if (!BN_rshift(q, p, 2)) goto end;
|
||||
q->neg = 0;
|
||||
if (!BN_add_word(q, 1)) goto end;
|
||||
if (!BN_mod_exp(ret, a, q, p, ctx)) goto end;
|
||||
err = 0;
|
||||
@ -194,6 +197,7 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
|
||||
|
||||
/* b := (2*a)^((p-5)/8) */
|
||||
if (!BN_rshift(q, p, 3)) goto end;
|
||||
q->neg = 0;
|
||||
if (!BN_mod_exp(b, t, q, p, ctx)) goto end;
|
||||
|
||||
/* y := b^2 */
|
||||
|
Loading…
Reference in New Issue
Block a user