Skip to content

Commit 972302a

Browse files
committed
Enforce constant-time FieldElement::square_n()
1 parent 23938d2 commit 972302a

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

ed448-goldilocks/src/field/element.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,11 @@ impl FieldElement {
276276
}
277277

278278
/// Squares a field element `n` times
279-
fn square_n(&self, mut n: u32) -> FieldElement {
279+
fn square_n<const N: u32>(&self) -> FieldElement {
280280
let mut result = self.square();
281281

282282
// Decrease value by 1 since we just did a squaring
283-
n -= 1;
283+
let n = N - 1;
284284

285285
for _ in 0..n {
286286
result = result.square();
@@ -333,25 +333,25 @@ impl FieldElement {
333333
l2 = l1 * self;
334334
l1 = l2.square();
335335
l2 = l1 * self;
336-
l1 = l2.square_n(3);
336+
l1 = l2.square_n::<3>();
337337
l0 = l2 * l1;
338-
l1 = l0.square_n(3);
338+
l1 = l0.square_n::<3>();
339339
l0 = l2 * l1;
340-
l2 = l0.square_n(9);
340+
l2 = l0.square_n::<9>();
341341
l1 = l0 * l2;
342342
l0 = l1 * l1;
343343
l2 = l0 * self;
344-
l0 = l2.square_n(18);
344+
l0 = l2.square_n::<18>();
345345
l2 = l1 * l0;
346-
l0 = l2.square_n(37);
346+
l0 = l2.square_n::<37>();
347347
l1 = l2 * l0;
348-
l0 = l1.square_n(37);
348+
l0 = l1.square_n::<37>();
349349
l1 = l2 * l0;
350-
l0 = l1.square_n(111);
350+
l0 = l1.square_n::<111>();
351351
l2 = l1 * l0;
352352
l0 = l2.square();
353353
l1 = l0 * self;
354-
l0 = l1.square_n(223);
354+
l0 = l1.square_n::<223>();
355355
l1 = l2 * l0;
356356
l2 = l1.square();
357357
l0 = l2 * self;

0 commit comments

Comments
 (0)