aboutsummaryrefslogtreecommitdiff
path: root/patches/bn_sqrt.patch
blob: 495de31208729765fbc46723e246d8c24e473d14 (plain)
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))