1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
--- crypto/bn/bn_sqrt.c.orig Fri Feb 18 16:30:39 2022
+++ crypto/bn/bn_sqrt.c Sat Mar 12 11:23:53 2022
@@ -351,21 +351,22 @@
goto vrfy;
}
-
- /* find smallest i such that b^(2^i) = 1 */
- i = 1;
- if (!BN_mod_sqr(t, b, p, ctx))
- goto end;
- while (!BN_is_one(t)) {
- i++;
- if (i == e) {
- BNerror(BN_R_NOT_A_SQUARE);
- goto end;
+ /* Find the smallest i with 0 < i < e such that b^(2^i) = 1. */
+ for (i = 1; i < e; i++) {
+ if (i == 1) {
+ if (!BN_mod_sqr(t, b, p, ctx))
+ goto end;
+ } else {
+ if (!BN_mod_sqr(t, t, p, ctx))
+ goto end;
}
- if (!BN_mod_mul(t, t, t, p, ctx))
- goto end;
+ if (BN_is_one(t))
+ break;
}
-
+ if (i >= e) {
+ BNerror(BN_R_NOT_A_SQUARE);
+ goto end;
+ }
/* t := y^2^(e - i - 1) */
if (!BN_copy(t, y))
|