| 12345678910111213141516171819202122232425262728 |
- //! Basepoint derivation is keyed by group type, so two groups can coexist.
- use cmz::{cmz_basepoints, cmz_group_init};
- use curve25519_dalek::ristretto::RistrettoPoint;
- use group::Group;
- use sha2::Sha512;
- #[test]
- fn two_groups_coexist() {
- let ristretto_a = RistrettoPoint::hash_from_bytes::<Sha512>(b"CMZ Generator A");
- let p256_a = p256::ProjectivePoint::generator() * p256::Scalar::from(42u64);
- cmz_group_init::<RistrettoPoint>(ristretto_a);
- cmz_group_init::<p256::ProjectivePoint>(p256_a);
- // Each group must read back its own basepoints, not the other's.
- assert_eq!(cmz_basepoints::<RistrettoPoint>().A(), ristretto_a);
- assert_eq!(cmz_basepoints::<RistrettoPoint>().B(), RistrettoPoint::generator());
- assert_eq!(cmz_basepoints::<p256::ProjectivePoint>().A(), p256_a);
- assert_eq!(
- cmz_basepoints::<p256::ProjectivePoint>().B(),
- p256::ProjectivePoint::generator()
- );
- // Re-initializing keeps the first value, per cmz_group_init's contract.
- cmz_group_init::<RistrettoPoint>(RistrettoPoint::generator());
- assert_eq!(cmz_basepoints::<RistrettoPoint>().A(), ristretto_a);
- }
|