ggm.rs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #![allow(non_snake_case)]
  2. #[macro_use]
  3. extern crate zkp;
  4. use curve25519_dalek::ristretto::RistrettoPoint;
  5. use curve25519_dalek::scalar::Scalar;
  6. use cmz::ggm::*;
  7. #[test]
  8. fn create_issuer() {
  9. let i0 = Issuer::new(0);
  10. println!("i0 = {:?}", i0);
  11. let i1 = Issuer::new(1);
  12. println!("i1 = {:?}", i1);
  13. let i5 = Issuer::new(5);
  14. println!("i5 = {:?}", i5);
  15. }
  16. #[test]
  17. fn generator_test() {
  18. use hex_fmt::HexFmt;
  19. let A : &RistrettoPoint = &CMZ_A;
  20. let B : &RistrettoPoint = &CMZ_B;
  21. let two = Scalar::one() + Scalar::one();
  22. println!("A = {}", HexFmt(A.compress().to_bytes()));
  23. println!("B = {}", HexFmt(B.compress().to_bytes()));
  24. println!("2*A = {}", HexFmt((two*A).compress().to_bytes()));
  25. println!("2*A = {}", HexFmt((A+A).compress().to_bytes()));
  26. println!("2*B = {}", HexFmt((two*B).compress().to_bytes()));
  27. println!("2*B = {}", HexFmt((B+B).compress().to_bytes()));
  28. }
  29. #[test]
  30. fn nonblind_5_test() {
  31. let mut rng: rand::rngs::ThreadRng = rand::thread_rng();
  32. let issuer = Issuer::new(5);
  33. let m1 = Scalar::random(&mut rng);
  34. let m2 = Scalar::random(&mut rng);
  35. let m3 = Scalar::random(&mut rng);
  36. let m4 = Scalar::random(&mut rng);
  37. let m5 = Scalar::random(&mut rng);
  38. let req = request_nonblind_5(&m1, &m2, &m3, &m4, &m5);
  39. let resp = issuer.issue_nonblind_5(&req);
  40. let result = verify_nonblind_5(&req, resp, &issuer.pubkey);
  41. assert!(result.is_ok());
  42. }
  43. #[test]
  44. fn blind124_5_test() {
  45. let mut rng: rand::rngs::ThreadRng = rand::thread_rng();
  46. let issuer = Issuer::new(5);
  47. let m1 = Scalar::random(&mut rng);
  48. let m2 = Scalar::random(&mut rng);
  49. let m3 = Scalar::random(&mut rng);
  50. let m4 = Scalar::random(&mut rng);
  51. let m5 = Scalar::random(&mut rng);
  52. let (req,state) = request_blind124_5(&m1, &m2, &m3, &m4, &m5);
  53. let resp = issuer.issue_blind124_5(&req);
  54. assert!(resp.is_ok());
  55. let result = verify_blind124_5(state, resp.unwrap(), &issuer.pubkey);
  56. assert!(result.is_ok());
  57. }