Skip to content

Commit 05a1ff0

Browse files
authored
p256: use primefield::test_primefield to test FieldElement (#1322)
The macro tests the `PrimeField` constants, `invert`, `sqrt`, and other tests which were previously handwritten
1 parent d0f55ba commit 05a1ff0

File tree

1 file changed

+8
-33
lines changed

1 file changed

+8
-33
lines changed

p256/src/arithmetic/field.rs

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -196,26 +196,21 @@ impl PrimeField for FieldElement {
196196
mod tests {
197197
use super::FieldElement;
198198
use crate::{FieldBytes, test_vectors::field::DBL_TEST_VECTORS};
199-
use core::ops::Mul;
200199

201200
#[cfg(target_pointer_width = "64")]
202201
use crate::U256;
203202
#[cfg(target_pointer_width = "64")]
204203
use proptest::{num::u64::ANY, prelude::*};
205204

206-
#[test]
207-
fn zero_is_additive_identity() {
208-
let zero = FieldElement::ZERO;
209-
let one = FieldElement::ONE;
210-
assert_eq!(zero.add(&zero), zero);
211-
assert_eq!(one.add(&zero), one);
212-
}
205+
/// t = (modulus - 1) >> S
206+
const T: [u64; 4] = [
207+
0xffffffffffffffff,
208+
0x000000007fffffff,
209+
0x8000000000000000,
210+
0x7fffffff80000000,
211+
];
213212

214-
#[test]
215-
fn one_is_multiplicative_identity() {
216-
let one = FieldElement::ONE;
217-
assert_eq!(one.mul(&one), one);
218-
}
213+
primefield::test_primefield!(FieldElement, T);
219214

220215
#[test]
221216
fn from_bytes() {
@@ -295,26 +290,6 @@ mod tests {
295290
assert_eq!(two.pow_vartime(&[2, 0, 0, 0]), four);
296291
}
297292

298-
#[test]
299-
fn invert() {
300-
assert!(bool::from(FieldElement::ZERO.invert().is_none()));
301-
302-
let one = FieldElement::ONE;
303-
assert_eq!(one.invert().unwrap(), one);
304-
305-
let two = one + &one;
306-
let inv_two = two.invert().unwrap();
307-
assert_eq!(two * &inv_two, one);
308-
}
309-
310-
#[test]
311-
fn sqrt() {
312-
let one = FieldElement::ONE;
313-
let two = one + &one;
314-
let four = two.square();
315-
assert_eq!(four.sqrt().unwrap(), two);
316-
}
317-
318293
#[cfg(target_pointer_width = "64")]
319294
proptest! {
320295
/// This checks behaviour well within the field ranges, because it doesn't set the

0 commit comments

Comments
 (0)