| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- use cmz::*;
- use curve25519_dalek::ristretto::RistrettoPoint;
- use curve25519_dalek::scalar::Scalar;
- use group::Group;
- use rand::{CryptoRng, RngCore};
- 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();
- 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();
- 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);
- }
|