Skip to content

Commit d79a6cc

Browse files
real-or-randomisle2983
authored andcommitted
Separate secp256k1_fe_set_int( . , 0 ) from secp256k1_fe_clear()
There are two uses of the secp256k1_fe_clear() function that are now separated into these two functions in order to reflect the intent: 1) initializing the memory prior to being used -> converted to fe_set_int( . , 0 ) 2) zeroing the memory after being used such that no sensitive data remains. -> remains as fe_clear() In the latter case, 'magnitude' and 'normalized' need to be overwritten when VERIFY is enabled. Co-Authored-By: isle2983 <isle2983@yahoo.com>
1 parent 1c08126 commit d79a6cc

File tree

4 files changed

+8
-12
lines changed

4 files changed

+8
-12
lines changed

src/field.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,7 @@ static int secp256k1_fe_normalizes_to_zero_var(const secp256k1_fe *r);
144144
*/
145145
static void secp256k1_fe_set_int(secp256k1_fe *r, int a);
146146

147-
/** Set a field element to 0.
148-
*
149-
* On input, a does not need to be initialized.
150-
* On output, a represents 0, is normalized and has magnitude 0.
151-
*/
147+
/** Clear a field element to prevent leaking sensitive information. */
152148
static void secp256k1_fe_clear(secp256k1_fe *a);
153149

154150
/** Determine whether a represents field element 0.

src/field_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ SECP256K1_INLINE static void secp256k1_fe_add_int(secp256k1_fe *r, int a) {
235235
static void secp256k1_fe_impl_clear(secp256k1_fe *a);
236236
SECP256K1_INLINE static void secp256k1_fe_clear(secp256k1_fe *a) {
237237
a->magnitude = 0;
238-
a->normalized = 1;
238+
a->normalized = 0;
239239
secp256k1_fe_impl_clear(a);
240240

241241
SECP256K1_FE_VERIFY(a);

src/group_impl.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -283,17 +283,17 @@ static void secp256k1_ge_table_set_globalz(size_t len, secp256k1_ge *a, const se
283283

284284
static void secp256k1_gej_set_infinity(secp256k1_gej *r) {
285285
r->infinity = 1;
286-
secp256k1_fe_clear(&r->x);
287-
secp256k1_fe_clear(&r->y);
288-
secp256k1_fe_clear(&r->z);
286+
secp256k1_fe_set_int(&r->x, 0);
287+
secp256k1_fe_set_int(&r->y, 0);
288+
secp256k1_fe_set_int(&r->z, 0);
289289

290290
SECP256K1_GEJ_VERIFY(r);
291291
}
292292

293293
static void secp256k1_ge_set_infinity(secp256k1_ge *r) {
294294
r->infinity = 1;
295-
secp256k1_fe_clear(&r->x);
296-
secp256k1_fe_clear(&r->y);
295+
secp256k1_fe_set_int(&r->x, 0);
296+
secp256k1_fe_set_int(&r->y, 0);
297297

298298
SECP256K1_GE_VERIFY(r);
299299
}

src/testutil.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static void testutil_random_fe_magnitude(secp256k1_fe *fe, int m) {
3434
if (n == 0) {
3535
return;
3636
}
37-
secp256k1_fe_clear(&zero);
37+
secp256k1_fe_set_int(&zero, 0);
3838
secp256k1_fe_negate(&zero, &zero, 0);
3939
secp256k1_fe_mul_int_unchecked(&zero, n - 1);
4040
secp256k1_fe_add(fe, &zero);

0 commit comments

Comments
 (0)