Skip to content

Commit 7fc642f

Browse files
committed
Simplify secp256k1_fe_{impl_,}verify
1 parent 4e176ad commit 7fc642f

File tree

3 files changed

+24
-27
lines changed

3 files changed

+24
-27
lines changed

src/field_10x26_impl.h

+13-14
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,25 @@
1515
#ifdef VERIFY
1616
static void secp256k1_fe_impl_verify(const secp256k1_fe *a) {
1717
const uint32_t *d = a->n;
18-
int m = a->normalized ? 1 : 2 * a->magnitude, r = 1;
19-
r &= (d[0] <= 0x3FFFFFFUL * m);
20-
r &= (d[1] <= 0x3FFFFFFUL * m);
21-
r &= (d[2] <= 0x3FFFFFFUL * m);
22-
r &= (d[3] <= 0x3FFFFFFUL * m);
23-
r &= (d[4] <= 0x3FFFFFFUL * m);
24-
r &= (d[5] <= 0x3FFFFFFUL * m);
25-
r &= (d[6] <= 0x3FFFFFFUL * m);
26-
r &= (d[7] <= 0x3FFFFFFUL * m);
27-
r &= (d[8] <= 0x3FFFFFFUL * m);
28-
r &= (d[9] <= 0x03FFFFFUL * m);
18+
int m = a->normalized ? 1 : 2 * a->magnitude;
19+
VERIFY_CHECK(d[0] <= 0x3FFFFFFUL * m);
20+
VERIFY_CHECK(d[1] <= 0x3FFFFFFUL * m);
21+
VERIFY_CHECK(d[2] <= 0x3FFFFFFUL * m);
22+
VERIFY_CHECK(d[3] <= 0x3FFFFFFUL * m);
23+
VERIFY_CHECK(d[4] <= 0x3FFFFFFUL * m);
24+
VERIFY_CHECK(d[5] <= 0x3FFFFFFUL * m);
25+
VERIFY_CHECK(d[6] <= 0x3FFFFFFUL * m);
26+
VERIFY_CHECK(d[7] <= 0x3FFFFFFUL * m);
27+
VERIFY_CHECK(d[8] <= 0x3FFFFFFUL * m);
28+
VERIFY_CHECK(d[9] <= 0x03FFFFFUL * m);
2929
if (a->normalized) {
30-
if (r && (d[9] == 0x03FFFFFUL)) {
30+
if (d[9] == 0x03FFFFFUL) {
3131
uint32_t mid = d[8] & d[7] & d[6] & d[5] & d[4] & d[3] & d[2];
3232
if (mid == 0x3FFFFFFUL) {
33-
r &= ((d[1] + 0x40UL + ((d[0] + 0x3D1UL) >> 26)) <= 0x3FFFFFFUL);
33+
VERIFY_CHECK((d[1] + 0x40UL + ((d[0] + 0x3D1UL) >> 26)) <= 0x3FFFFFFUL);
3434
}
3535
}
3636
}
37-
VERIFY_CHECK(r == 1);
3837
}
3938
#endif
4039

src/field_5x52_impl.h

+8-9
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,18 @@
2121
#ifdef VERIFY
2222
static void secp256k1_fe_impl_verify(const secp256k1_fe *a) {
2323
const uint64_t *d = a->n;
24-
int m = a->normalized ? 1 : 2 * a->magnitude, r = 1;
24+
int m = a->normalized ? 1 : 2 * a->magnitude;
2525
/* secp256k1 'p' value defined in "Standards for Efficient Cryptography" (SEC2) 2.7.1. */
26-
r &= (d[0] <= 0xFFFFFFFFFFFFFULL * m);
27-
r &= (d[1] <= 0xFFFFFFFFFFFFFULL * m);
28-
r &= (d[2] <= 0xFFFFFFFFFFFFFULL * m);
29-
r &= (d[3] <= 0xFFFFFFFFFFFFFULL * m);
30-
r &= (d[4] <= 0x0FFFFFFFFFFFFULL * m);
26+
VERIFY_CHECK(d[0] <= 0xFFFFFFFFFFFFFULL * m);
27+
VERIFY_CHECK(d[1] <= 0xFFFFFFFFFFFFFULL * m);
28+
VERIFY_CHECK(d[2] <= 0xFFFFFFFFFFFFFULL * m);
29+
VERIFY_CHECK(d[3] <= 0xFFFFFFFFFFFFFULL * m);
30+
VERIFY_CHECK(d[4] <= 0x0FFFFFFFFFFFFULL * m);
3131
if (a->normalized) {
32-
if (r && (d[4] == 0x0FFFFFFFFFFFFULL) && ((d[3] & d[2] & d[1]) == 0xFFFFFFFFFFFFFULL)) {
33-
r &= (d[0] < 0xFFFFEFFFFFC2FULL);
32+
if ((d[4] == 0x0FFFFFFFFFFFFULL) && ((d[3] & d[2] & d[1]) == 0xFFFFFFFFFFFFFULL)) {
33+
VERIFY_CHECK(d[0] < 0xFFFFEFFFFFC2FULL);
3434
}
3535
}
36-
VERIFY_CHECK(r == 1);
3736
}
3837
#endif
3938

src/field_impl.h

+3-4
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,11 @@ static void secp256k1_fe_verify(const secp256k1_fe *a) { (void)a; }
163163
static void secp256k1_fe_impl_verify(const secp256k1_fe *a);
164164
static void secp256k1_fe_verify(const secp256k1_fe *a) {
165165
/* Magnitude between 0 and 32. */
166-
int r = (a->magnitude >= 0) & (a->magnitude <= 32);
166+
VERIFY_CHECK((a->magnitude >= 0) && (a->magnitude <= 32));
167167
/* Normalized is 0 or 1. */
168-
r &= (a->normalized == 0) | (a->normalized == 1);
168+
VERIFY_CHECK((a->normalized == 0) || (a->normalized == 1));
169169
/* If normalized, magnitude must be 0 or 1. */
170-
if (a->normalized) r &= (a->magnitude <= 1);
171-
VERIFY_CHECK(r == 1);
170+
if (a->normalized) VERIFY_CHECK(a->magnitude <= 1);
172171
/* Invoke implementation-specific checks. */
173172
secp256k1_fe_impl_verify(a);
174173
}

0 commit comments

Comments
 (0)