basic.rs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. use cmz::*;
  2. use curve25519_dalek::ristretto::RistrettoPoint;
  3. use group::Group;
  4. use rand_core::RngCore;
  5. use sha2::Sha512;
  6. CMZ! { Basic<RistrettoPoint> :
  7. attr1,
  8. attr2
  9. }
  10. #[test]
  11. fn test_basic() {
  12. let mut rng = rand::thread_rng();
  13. cmz_group_init(RistrettoPoint::hash_from_bytes::<Sha512>(
  14. b"CMZ Generator A",
  15. ));
  16. let (privkey, pubkey) = Basic::gen_keys(&mut rng);
  17. // Serialize and deserialize
  18. let privkey_bytes = bincode::serialize(&privkey).unwrap();
  19. let pubkey_bytes = bincode::serialize(&pubkey).unwrap();
  20. let privkey_serde = bincode::deserialize::<CMZPrivkey<RistrettoPoint>>(&privkey_bytes).unwrap();
  21. let pubkey_serde = bincode::deserialize::<CMZPubkey<RistrettoPoint>>(&pubkey_bytes).unwrap();
  22. assert!(privkey == privkey_serde);
  23. assert!(pubkey == pubkey_serde);
  24. let basic_cred = Basic::using_privkey(&privkey_serde);
  25. let basic_cred_bytes = bincode::serialize(&basic_cred).unwrap();
  26. println!("{:#?}", basic_cred);
  27. println!("{:#?}", basic_cred_bytes);
  28. }