Skip to content

Commit 00788db

Browse files
committed
Abstract out verify logic for fe_add_int
1 parent d41a2c4 commit 00788db

File tree

4 files changed

+18
-19
lines changed

4 files changed

+18
-19
lines changed

src/field.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ static const secp256k1_fe secp256k1_const_beta = SECP256K1_FE_CONST(
9393
# define secp256k1_fe_inv_var secp256k1_fe_impl_inv_var
9494
# define secp256k1_fe_get_bounds secp256k1_fe_impl_get_bounds
9595
# define secp256k1_fe_half secp256k1_fe_impl_half
96+
# define secp256k1_fe_add_int secp256k1_fe_impl_add_int
9697
#endif /* defined(VERIFY) */
9798

9899
/** Normalize a field element.
@@ -207,7 +208,11 @@ static void secp256k1_fe_get_b32(unsigned char *r, const secp256k1_fe *a);
207208
*/
208209
static void secp256k1_fe_negate(secp256k1_fe *r, const secp256k1_fe *a, int m);
209210

210-
/** Adds a small integer (up to 0x7FFF) to r. The resulting magnitude increases by one. */
211+
/** Add a small integer to a field element.
212+
*
213+
* Performs {r += a}. The magnitude of r increases by 1, and normalized is cleared.
214+
* a must be in range [0,0xFFFF].
215+
*/
211216
static void secp256k1_fe_add_int(secp256k1_fe *r, int a);
212217

213218
/** Multiply a field element with a small integer.

src/field_10x26_impl.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -388,16 +388,8 @@ SECP256K1_INLINE static void secp256k1_fe_impl_add(secp256k1_fe *r, const secp25
388388
r->n[9] += a->n[9];
389389
}
390390

391-
SECP256K1_INLINE static void secp256k1_fe_add_int(secp256k1_fe *r, int a) {
392-
secp256k1_fe_verify(r);
393-
VERIFY_CHECK(a >= 0);
394-
VERIFY_CHECK(a <= 0x7FFF);
391+
SECP256K1_INLINE static void secp256k1_fe_impl_add_int(secp256k1_fe *r, int a) {
395392
r->n[0] += a;
396-
#ifdef VERIFY
397-
r->magnitude += 1;
398-
r->normalized = 0;
399-
secp256k1_fe_verify(r);
400-
#endif
401393
}
402394

403395
#if defined(USE_EXTERNAL_ASM)

src/field_5x52_impl.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -333,16 +333,8 @@ SECP256K1_INLINE static void secp256k1_fe_impl_mul_int(secp256k1_fe *r, int a) {
333333
r->n[4] *= a;
334334
}
335335

336-
SECP256K1_INLINE static void secp256k1_fe_add_int(secp256k1_fe *r, int a) {
337-
secp256k1_fe_verify(r);
338-
VERIFY_CHECK(a >= 0);
339-
VERIFY_CHECK(a <= 0x7FFF);
336+
SECP256K1_INLINE static void secp256k1_fe_impl_add_int(secp256k1_fe *r, int a) {
340337
r->n[0] += a;
341-
#ifdef VERIFY
342-
r->magnitude += 1;
343-
r->normalized = 0;
344-
secp256k1_fe_verify(r);
345-
#endif
346338
}
347339

348340
SECP256K1_INLINE static void secp256k1_fe_impl_add(secp256k1_fe *r, const secp256k1_fe *a) {

src/field_impl.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,16 @@ SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe *r, int a) {
211211
secp256k1_fe_verify(r);
212212
}
213213

214+
static void secp256k1_fe_impl_add_int(secp256k1_fe *r, int a);
215+
SECP256K1_INLINE static void secp256k1_fe_add_int(secp256k1_fe *r, int a) {
216+
VERIFY_CHECK(0 <= a && a <= 0x7FFF);
217+
secp256k1_fe_verify(r);
218+
secp256k1_fe_impl_add_int(r, a);
219+
r->magnitude += 1;
220+
r->normalized = 0;
221+
secp256k1_fe_verify(r);
222+
}
223+
214224
static void secp256k1_fe_impl_clear(secp256k1_fe *a);
215225
SECP256K1_INLINE static void secp256k1_fe_clear(secp256k1_fe *a) {
216226
a->magnitude = 0;

0 commit comments

Comments
 (0)