Skip to content

Commit 5bad6b6

Browse files
fix overflow sum (#900)
Co-authored-by: Mauro Toscano <[email protected]>
1 parent 9f7b369 commit 5bad6b6

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

math/src/field/fields/montgomery_backed_prime_fields.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,15 +224,17 @@ where
224224
if v <= u {
225225
u = u - v;
226226
if b < c {
227-
b = b + modulus;
227+
b = modulus - c + b;
228+
} else {
229+
b = b - c;
228230
}
229-
b = b - c;
230231
} else {
231232
v = v - u;
232233
if c < b {
233-
c = c + modulus;
234+
c = modulus - b + c;
235+
} else {
236+
c = c - b;
234237
}
235-
c = c - b;
236238
}
237239
}
238240

@@ -1243,6 +1245,14 @@ mod tests_u256_prime_fields {
12431245
assert_eq!(minus_3_pow_2, nine);
12441246
}
12451247

1248+
#[test]
1249+
fn secp256k1_inv_works() {
1250+
let a = SecpMontElement::from_hex_unchecked("0x456");
1251+
let a_inv = a.inv().unwrap();
1252+
1253+
assert_eq!(a * a_inv, SecpMontElement::one());
1254+
}
1255+
12461256
#[test]
12471257
fn test_cios_overflow_case() {
12481258
let a = GoldilocksElement::from(732582227915286439);

0 commit comments

Comments
 (0)