arnaucube
arnaucube/ark-curves-cherry-pickedPublic Self-hosted repository
ark-curves-cherry-picked/ed_on_bls12_381_bandersnatch/src/curves/tests.rs
ed_on_bls12_381_bandersnatch/src/curves/tests.rsRaw
 1use ark_algebra_test_templates::curves::*;
 2use ark_ec::{AffineRepr, ProjectiveCurve};
 3use ark_ff::Zero;
 4use ark_std::{ops::Mul, str::FromStr};
 5
 6use crate::*;
 7
 8#[test]
 9fn test_projective_curve() {
10    curve_tests::<EdwardsProjective>();
11
12    edwards_tests::<BandersnatchParameters>();
13    montgomery_conversion_test::<BandersnatchParameters>();
14    sw_tests::<BandersnatchParameters>();
15}
16
17#[test]
18fn test_generator() {
19    // edward curve
20    let generator = EdwardsAffine::prime_subgroup_generator();
21    assert!(generator.is_on_curve());
22    assert!(generator.is_in_correct_subgroup_assuming_on_curve());
23
24    // weierstrass curve
25    let generator = SWAffine::prime_subgroup_generator();
26    assert!(generator.is_on_curve());
27    assert!(generator.is_in_correct_subgroup_assuming_on_curve());
28}
29
30#[test]
31fn test_scalar_multiplication() {
32    let f1 = Fr::from_str(
33        "4257185345094557079734489188109952172285839137338142340240392707284963971010",
34    )
35    .unwrap();
36    let f2 = Fr::from_str(
37        "1617998875791656082457755819308421023664764572929977389209373068350490665160",
38    )
39    .unwrap();
40
41    let g = EdwardsAffine::from_str(
42        "(29627151942733444043031429156003786749302466371339015363120350521834195802525, \
43         27488387519748396681411951718153463804682561779047093991696427532072116857978)",
44    )
45    .unwrap();
46    let f1f2g = EdwardsAffine::from_str(
47        "(16530491029447613915334753043669938793793987372416328257719459807614119987301, \
48         42481140308370805476764840229335460092474682686441442216596889726548353970772)",
49    )
50    .unwrap();
51
52    assert!(!g.is_zero());
53    assert!(!f1f2g.is_zero());
54
55    let f1g = g.mul(f1).into_affine();
56    assert_eq!(g.mul(f1 * &f2).into_affine(), f1f2g);
57    assert_eq!(f1g.mul(f2).into_affine(), f1f2g);
58}
59
60#[test]
61fn test_montgomery_conversion() {
62    montgomery_conversion_test::<BandersnatchParameters>();
63}