Skip to content

Commit 5814d84

Browse files
Merge #1438: correct assertion for secp256k1_fe_mul_inner
dcdda31 Tighten secp256k1_fe_mul_inner's VERIFY_BITS checks (Russell O'Connor) 8e2a5fe correct assertion for secp256k1_fe_mul_inner (roconnor-blockstream) Pull request description: Based on the surrounding asserts, 112 bits before this line, and 61 bits after this line, this assertion should be 113 bits. Notably the commensurate line in secp256k1_fe_sqr_inner is correctly assert to be 113 bits. ACKs for top commit: real-or-random: ACK dcdda31 tested with asm disabled Tree-SHA512: c35170e37d9a6d1413dd625032028129ab2eccee7da86697ab9641b68ad78efd7251953d51e7acaefd14888d3fd61877f9f05349c44f6fc0133ce9b3921b0e1a
2 parents c1b4966 + dcdda31 commit 5814d84

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/field_5x52_int128_impl.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,18 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t
8989
secp256k1_u128_accum_mul(&d, a2, b[3]);
9090
secp256k1_u128_accum_mul(&d, a3, b[2]);
9191
secp256k1_u128_accum_mul(&d, a4, b[1]);
92-
VERIFY_BITS_128(&d, 115);
92+
VERIFY_BITS_128(&d, 114);
9393
/* [d t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */
9494
u0 = secp256k1_u128_to_u64(&d) & M; secp256k1_u128_rshift(&d, 52);
9595
VERIFY_BITS(u0, 52);
96-
VERIFY_BITS_128(&d, 63);
96+
VERIFY_BITS_128(&d, 62);
9797
/* [d u0 t4+(tx<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */
9898
/* [d 0 t4+(tx<<48)+(u0<<52) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */
9999
u0 = (u0 << 4) | tx;
100100
VERIFY_BITS(u0, 56);
101101
/* [d 0 t4+(u0<<48) t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */
102102
secp256k1_u128_accum_mul(&c, u0, R >> 4);
103-
VERIFY_BITS_128(&c, 115);
103+
VERIFY_BITS_128(&c, 113);
104104
/* [d 0 t4 t3 0 0 c] = [p8 0 0 p5 p4 p3 0 0 p0] */
105105
r[0] = secp256k1_u128_to_u64(&c) & M; secp256k1_u128_rshift(&c, 52);
106106
VERIFY_BITS(r[0], 52);

0 commit comments

Comments
 (0)