Skip to content

Commit 10c81ff

Browse files
committed
Merge pull request bitcoin#177
7688e34 Add magnitude limits to secp256k1_fe_verify to ensure that it's own tests function correctly. (Gregory Maxwell) 70ae0d2 Use secp256k1_fe_equal_var in secp256k1_fe_sqrt_var. (Gregory Maxwell)
2 parents 4ee4f7a + 7688e34 commit 10c81ff

File tree

3 files changed

+3
-4
lines changed

3 files changed

+3
-4
lines changed

src/field_10x26_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ static void secp256k1_fe_verify(const secp256k1_fe_t *a) {
3131
r &= (d[8] <= 0x3FFFFFFUL * m);
3232
r &= (d[9] <= 0x03FFFFFUL * m);
3333
r &= (a->magnitude >= 0);
34+
r &= (a->magnitude <= 32);
3435
if (a->normalized) {
3536
r &= (a->magnitude <= 1);
3637
if (r && (d[9] == 0x03FFFFFUL)) {

src/field_5x52_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ static void secp256k1_fe_verify(const secp256k1_fe_t *a) {
4343
r &= (d[3] <= 0xFFFFFFFFFFFFFULL * m);
4444
r &= (d[4] <= 0x0FFFFFFFFFFFFULL * m);
4545
r &= (a->magnitude >= 0);
46+
r &= (a->magnitude <= 2048);
4647
if (a->normalized) {
4748
r &= (a->magnitude <= 1);
4849
if (r && (d[4] == 0x0FFFFFFFFFFFFULL) && ((d[3] & d[2] & d[1]) == 0xFFFFFFFFFFFFFULL)) {

src/field_impl.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,7 @@ static int secp256k1_fe_sqrt_var(secp256k1_fe_t *r, const secp256k1_fe_t *a) {
135135
/* Check that a square root was actually calculated */
136136

137137
secp256k1_fe_sqr(&t1, r);
138-
secp256k1_fe_negate(&t1, &t1, 1);
139-
secp256k1_fe_add(&t1, a);
140-
secp256k1_fe_normalize_var(&t1);
141-
return secp256k1_fe_is_zero(&t1);
138+
return secp256k1_fe_equal_var(&t1, a);
142139
}
143140

144141
static void secp256k1_fe_inv(secp256k1_fe_t *r, const secp256k1_fe_t *a) {

0 commit comments

Comments
 (0)