add infinite loop fix in BN_mod_sqrt
This commit is contained in:
parent
2336a535c6
commit
74e92e5ecf
38
patches/bn_sqrt.patch
Normal file
38
patches/bn_sqrt.patch
Normal file
@ -0,0 +1,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))
|
Loading…
x
Reference in New Issue
Block a user