Skip to content

Commit 44eb1d8

Browse files
committed
Abstract out verify logic for fe_is_square_var
1 parent 3f1b689 commit 44eb1d8

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

src/field.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ static const secp256k1_fe secp256k1_const_beta = SECP256K1_FE_CONST(
100100
# define secp256k1_fe_get_bounds secp256k1_fe_impl_get_bounds
101101
# define secp256k1_fe_half secp256k1_fe_impl_half
102102
# define secp256k1_fe_add_int secp256k1_fe_impl_add_int
103+
# define secp256k1_fe_is_square_var secp256k1_fe_impl_is_square_var
103104
#endif /* !defined(VERIFY) */
104105

105106
/** Normalize a field element.

src/field_10x26_impl.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,7 +1215,7 @@ static void secp256k1_fe_impl_inv_var(secp256k1_fe *r, const secp256k1_fe *x) {
12151215
secp256k1_fe_from_signed30(r, &s);
12161216
}
12171217

1218-
static int secp256k1_fe_is_square_var(const secp256k1_fe *x) {
1218+
static int secp256k1_fe_impl_is_square_var(const secp256k1_fe *x) {
12191219
secp256k1_fe tmp;
12201220
secp256k1_modinv32_signed30 s;
12211221
int jac, ret;
@@ -1233,10 +1233,6 @@ static int secp256k1_fe_is_square_var(const secp256k1_fe *x) {
12331233
secp256k1_fe dummy;
12341234
ret = secp256k1_fe_sqrt(&dummy, &tmp);
12351235
} else {
1236-
#ifdef VERIFY
1237-
secp256k1_fe dummy;
1238-
VERIFY_CHECK(jac == 2*secp256k1_fe_sqrt(&dummy, &tmp) - 1);
1239-
#endif
12401236
ret = jac >= 0;
12411237
}
12421238
return ret;

src/field_5x52_impl.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ static void secp256k1_fe_impl_inv_var(secp256k1_fe *r, const secp256k1_fe *x) {
504504
secp256k1_fe_from_signed62(r, &s);
505505
}
506506

507-
static int secp256k1_fe_is_square_var(const secp256k1_fe *x) {
507+
static int secp256k1_fe_impl_is_square_var(const secp256k1_fe *x) {
508508
secp256k1_fe tmp;
509509
secp256k1_modinv64_signed62 s;
510510
int jac, ret;
@@ -522,10 +522,6 @@ static int secp256k1_fe_is_square_var(const secp256k1_fe *x) {
522522
secp256k1_fe dummy;
523523
ret = secp256k1_fe_sqrt(&dummy, &tmp);
524524
} else {
525-
#ifdef VERIFY
526-
secp256k1_fe dummy;
527-
VERIFY_CHECK(jac == 2*secp256k1_fe_sqrt(&dummy, &tmp) - 1);
528-
#endif
529525
ret = jac >= 0;
530526
}
531527
return ret;

src/field_impl.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,17 @@ SECP256K1_INLINE static void secp256k1_fe_inv_var(secp256k1_fe *r, const secp256
375375
secp256k1_fe_verify(r);
376376
}
377377

378+
static int secp256k1_fe_impl_is_square_var(const secp256k1_fe *x);
379+
SECP256K1_INLINE static int secp256k1_fe_is_square_var(const secp256k1_fe *x) {
380+
int ret;
381+
secp256k1_fe tmp = *x, sqrt;
382+
secp256k1_fe_verify(x);
383+
ret = secp256k1_fe_impl_is_square_var(x);
384+
secp256k1_fe_normalize_weak(&tmp);
385+
VERIFY_CHECK(ret == secp256k1_fe_sqrt(&sqrt, &tmp));
386+
return ret;
387+
}
388+
378389
static void secp256k1_fe_impl_get_bounds(secp256k1_fe* r, int m);
379390
SECP256K1_INLINE static void secp256k1_fe_get_bounds(secp256k1_fe* r, int m) {
380391
VERIFY_CHECK(m >= 0);

0 commit comments

Comments
 (0)