| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- use cmz::*;
- use curve25519_dalek::ristretto::RistrettoPoint;
- use curve25519_dalek::scalar::Scalar;
- use group::Group;
- use rand::{CryptoRng, RngCore};
- use sha2::Sha512;
- CMZ! { Basic<RistrettoPoint> :
- attr1,
- attr2
- }
- CMZ14Protocol! { basic_proto,
- A: Basic {
- attr1: H,
- attr2: H,
- }, , }
- // Test that the default serialization of a credential does _not_
- // include any private key material. Thanks to Morgan Hill from
- // Radically Open Security.
- #[test]
- fn test_default_serialize() {
- 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);
- let mut basic_cred = Basic::using_privkey(&privkey);
- basic_cred.attr1 = Some(Scalar::ZERO);
- basic_cred.attr2 = Some(Scalar::ONE);
- basic_cred.create_MAC(&mut rng, &privkey).unwrap();
- let basic_cred_bytes = postcard::to_allocvec(&basic_cred).unwrap();
- let basic_cred_deser = postcard::from_bytes::<Basic>(&basic_cred_bytes).unwrap();
- assert_eq!(
- *basic_cred_deser.get_privkey(),
- CMZPrivkey::<RistrettoPoint>::default()
- );
- assert_eq!(*basic_cred_deser.get_pubkey(), pubkey);
- }
- // Test that the serialization with privkey of a credential _does_
- // include the private key material.
- #[test]
- fn test_priv_serialize() {
- 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);
- let mut basic_cred = Basic::using_privkey(&privkey);
- basic_cred.attr1 = Some(Scalar::ZERO);
- basic_cred.attr2 = Some(Scalar::ONE);
- basic_cred.create_MAC(&mut rng, &privkey).unwrap();
- let basic_cred_bytes = basic_cred.serialize_with_privkey();
- let basic_cred_deser = Basic::deserialize_with_privkey(&basic_cred_bytes).unwrap();
- assert_eq!(*basic_cred_deser.get_privkey(), privkey);
- assert_eq!(*basic_cred_deser.get_pubkey(), pubkey);
- }
|