123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- use cmz::*;
- use curve25519_dalek::ristretto::RistrettoPoint;
- use curve25519_dalek::scalar::Scalar;
- use group::Group;
- use rand_core::RngCore;
- use sha2::Sha512;
- CMZ! { Basic<RistrettoPoint> :
- attr1,
- attr2
- }
- CMZ14Protocol! { basic_proto,
- A: Basic {
- attr1: H,
- attr2: H,
- }, , }
- #[test]
- fn test_basic() {
- let mut rng = rand::thread_rng();
- cmz_group_init(RistrettoPoint::hash_from_bytes::<Sha512>(
- b"CMZ Generator A",
- ));
- let (privkey, pubkey) = Basic::cmz14_gen_keys(&mut rng);
- // Serialize and deserialize
- let privkey_bytes = bincode::serde::encode_to_vec(&privkey, bincode::config::legacy()).unwrap();
- let pubkey_bytes = bincode::serde::encode_to_vec(&pubkey, bincode::config::legacy()).unwrap();
- let privkey_serde = bincode::serde::decode_from_slice::<
- CMZPrivkey<RistrettoPoint>,
- bincode::config::Configuration,
- >(&privkey_bytes, bincode::config::legacy().with_no_limit())
- .unwrap()
- .0;
- let pubkey_serde = bincode::serde::decode_from_slice::<
- CMZPubkey<RistrettoPoint>,
- bincode::config::Configuration,
- >(&pubkey_bytes, bincode::config::legacy())
- .unwrap()
- .0;
- assert!(privkey == privkey_serde);
- assert!(pubkey == pubkey_serde);
- let mut basic_cred = Basic::using_privkey(&privkey_serde);
- let basic_cred_bytes =
- bincode::serde::encode_to_vec(&basic_cred, bincode::config::legacy()).unwrap();
- println!("{:#?}", basic_cred);
- println!("{:#?}", basic_cred_bytes);
- basic_cred.attr1 = Some(Scalar::ZERO);
- basic_cred.attr2 = Some(Scalar::ONE);
- let (req, state) = basic_proto::prepare(&mut rng, &basic_cred).unwrap();
- println!("{req:#?}");
- println!("{state:#?}");
- }
|