@@ -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 (
0 commit comments