Skip to content

Commit 561a613

Browse files
committed
ec: additional P521 tests from generate_tests.cc
1 parent 7f35cec commit 561a613

File tree

8 files changed

+2462
-0
lines changed

8 files changed

+2462
-0
lines changed

src/ec/suite_b/ops.rs

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,11 @@ mod tests {
505505
q_minus_n_plus_n_equals_0_test(&p384::PUBLIC_SCALAR_OPS);
506506
}
507507

508+
#[test]
509+
fn p521_q_minus_n_plus_n_equals_0_test() {
510+
q_minus_n_plus_n_equals_0_test(&p521::PUBLIC_SCALAR_OPS);
511+
}
512+
508513
#[test]
509514
fn p256_elem_add_test() {
510515
elem_add_test(
@@ -521,6 +526,15 @@ mod tests {
521526
);
522527
}
523528

529+
#[cfg(target_pointer_width = "64")]
530+
#[test]
531+
fn p521_elem_add_test() {
532+
elem_add_test(
533+
&p521::PUBLIC_SCALAR_OPS,
534+
test_file!("ops/p521_elem_sum_tests.txt"),
535+
);
536+
}
537+
524538
fn elem_add_test(ops: &PublicScalarOps, test_file: test::File) {
525539
test::run(test_file, |section, test_case| {
526540
assert_eq!(section, "");
@@ -557,6 +571,19 @@ mod tests {
557571
);
558572
}
559573

574+
#[cfg(target_pointer_width = "64")]
575+
#[test]
576+
fn p521_elem_sub_test() {
577+
prefixed_extern! {
578+
fn p521_elem_sub(r: *mut Limb, a: *const Limb, b: *const Limb);
579+
}
580+
elem_sub_test(
581+
&p521::COMMON_OPS,
582+
p521_elem_sub,
583+
test_file!("ops/p521_elem_sum_tests.txt"),
584+
);
585+
}
586+
560587
fn elem_sub_test(
561588
ops: &CommonOps,
562589
elem_sub: unsafe extern "C" fn(r: *mut Limb, a: *const Limb, b: *const Limb),
@@ -608,6 +635,19 @@ mod tests {
608635
);
609636
}
610637

638+
#[cfg(target_pointer_width = "64")]
639+
#[test]
640+
fn p521_elem_div_by_2_test() {
641+
prefixed_extern! {
642+
fn p521_elem_div_by_2(r: *mut Limb, a: *const Limb);
643+
}
644+
elem_div_by_2_test(
645+
&p521::COMMON_OPS,
646+
p521_elem_div_by_2,
647+
test_file!("ops/p521_elem_div_by_2_tests.txt"),
648+
);
649+
}
650+
611651
fn elem_div_by_2_test(
612652
ops: &CommonOps,
613653
elem_div_by_2: unsafe extern "C" fn(r: *mut Limb, a: *const Limb),
@@ -655,6 +695,19 @@ mod tests {
655695
);
656696
}
657697

698+
#[cfg(target_pointer_width = "64")]
699+
#[test]
700+
fn p521_elem_neg_test() {
701+
prefixed_extern! {
702+
fn p521_elem_neg(r: *mut Limb, a: *const Limb);
703+
}
704+
elem_neg_test(
705+
&p521::COMMON_OPS,
706+
p521_elem_neg,
707+
test_file!("ops/p521_elem_neg_tests.txt"),
708+
);
709+
}
710+
658711
fn elem_neg_test(
659712
ops: &CommonOps,
660713
elem_neg: unsafe extern "C" fn(r: *mut Limb, a: *const Limb),
@@ -698,6 +751,12 @@ mod tests {
698751
elem_mul_test(&p384::COMMON_OPS, test_file!("ops/p384_elem_mul_tests.txt"));
699752
}
700753

754+
#[cfg(target_pointer_width = "64")]
755+
#[test]
756+
fn p521_elem_mul_test() {
757+
elem_mul_test(&p521::COMMON_OPS, test_file!("ops/p521_elem_mul_tests.txt"));
758+
}
759+
701760
fn elem_mul_test(ops: &CommonOps, test_file: test::File) {
702761
test::run(test_file, |section, test_case| {
703762
assert_eq!(section, "");
@@ -728,6 +787,15 @@ mod tests {
728787
);
729788
}
730789

790+
#[cfg(target_pointer_width = "64")]
791+
#[test]
792+
fn p521_scalar_mul_test() {
793+
scalar_mul_test(
794+
&p521::SCALAR_OPS,
795+
test_file!("ops/p521_scalar_mul_tests.txt"),
796+
);
797+
}
798+
731799
fn scalar_mul_test(ops: &ScalarOps, test_file: test::File) {
732800
test::run(test_file, |section, test_case| {
733801
assert_eq!(section, "");
@@ -801,6 +869,12 @@ mod tests {
801869
let _ = p384::PRIVATE_SCALAR_OPS.scalar_inv_to_mont(&ZERO_SCALAR);
802870
}
803871

872+
#[test]
873+
#[should_panic(expected = "!self.scalar_ops.common.is_zero(a)")]
874+
fn p521_scalar_inv_to_mont_zero_panic_test() {
875+
let _ = p521::PRIVATE_SCALAR_OPS.scalar_inv_to_mont(&ZERO_SCALAR);
876+
}
877+
804878
#[test]
805879
fn p256_point_sum_test() {
806880
point_sum_test(
@@ -817,6 +891,15 @@ mod tests {
817891
);
818892
}
819893

894+
#[cfg(target_pointer_width = "64")]
895+
#[test]
896+
fn p521_point_sum_test() {
897+
point_sum_test(
898+
&p521::PRIVATE_KEY_OPS,
899+
test_file!("ops/p521_point_sum_tests.txt"),
900+
);
901+
}
902+
820903
fn point_sum_test(ops: &PrivateKeyOps, test_file: test::File) {
821904
test::run(test_file, |section, test_case| {
822905
assert_eq!(section, "");
@@ -907,6 +990,23 @@ mod tests {
907990
);
908991
}
909992

993+
994+
#[cfg(target_pointer_width = "64")]
995+
#[test]
996+
fn p521_point_double_test() {
997+
prefixed_extern! {
998+
fn p521_point_double(
999+
r: *mut Limb,
1000+
a: *const Limb,
1001+
);
1002+
}
1003+
point_double_test(
1004+
&p521::PRIVATE_KEY_OPS,
1005+
p521_point_double,
1006+
test_file!("ops/p521_point_double_tests.txt"),
1007+
);
1008+
}
1009+
9101010
fn point_double_test(
9111011
ops: &PrivateKeyOps,
9121012
point_double: unsafe extern "C" fn(
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
a = 00
3+
r = 00
4+
5+
a = 00
6+
r = 00
7+
8+
a = 01
9+
r = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10+
11+
a = 02
12+
r = 01
13+
14+
a = 03
15+
r = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
16+
17+
a = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
18+
r = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19+
20+
a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21+
r = 017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
22+
23+
a = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
24+
r = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
25+
26+
a = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
27+
r = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
a = 00
3+
b = 00
4+
r = 00
5+
6+
a = 00
7+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
8+
r = 00
9+
10+
a = 01
11+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
12+
r = 01fffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
13+
14+
a = 02
15+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
16+
r = 01fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
17+
18+
a = 03
19+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
20+
r = 01fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21+
22+
a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
23+
b = 02
24+
r = 01fffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
25+
26+
a = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
27+
b = 02
28+
r = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
29+
30+
a = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
31+
b = 02
32+
r = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
a = 00
3+
b = 00
4+
5+
a = 01
6+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
7+
8+
a = 02
9+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd
10+
11+
a = 03
12+
b = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
13+
14+
a = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
15+
b = 01
16+
17+
a = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
18+
b = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
19+
20+
a = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
21+
b = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
22+
23+
a = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
24+
b = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

0 commit comments

Comments
 (0)