use cmz::*; use curve25519_dalek::ristretto::RistrettoPoint; use group::Group; use rand_core::RngCore; use sha2::Sha512; CMZ! { Basic : attr1, attr2 } CMZProtocol! { 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::( b"CMZ Generator A", )); let (privkey, pubkey) = Basic::gen_keys(&mut rng); // Serialize and deserialize let privkey_bytes = bincode::serialize(&privkey).unwrap(); let pubkey_bytes = bincode::serialize(&pubkey).unwrap(); let privkey_serde = bincode::deserialize::>(&privkey_bytes).unwrap(); let pubkey_serde = bincode::deserialize::>(&pubkey_bytes).unwrap(); assert!(privkey == privkey_serde); assert!(pubkey == pubkey_serde); let basic_cred = Basic::using_privkey(&privkey_serde); let basic_cred_bytes = bincode::serialize(&basic_cred).unwrap(); println!("{:#?}", basic_cred); println!("{:#?}", basic_cred_bytes); let (req, state) = basic_proto::prepare(&basic_cred).unwrap(); println!("{req:#?}"); println!("{state:#?}"); }