AccumulatorProofOfKnowledge.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // ECOin - Copyright (c) - 2014/2022 - GPLv3 - epsylon@riseup.net (https://03c8.net)
  2. #ifndef ACCUMULATEPROOF_H_
  3. #define ACCUMULATEPROOF_H_
  4. namespace libzerocoin {
  5. /**A prove that a value insde the commitment commitmentToCoin is in an accumulator a.
  6. *
  7. */
  8. class AccumulatorProofOfKnowledge {
  9. public:
  10. AccumulatorProofOfKnowledge(const AccumulatorAndProofParams* p);
  11. /** Generates a proof that a commitment to a coin c was accumulated
  12. * @param p Cryptographic parameters
  13. * @param commitmentToCoin commitment containing the coin we want to prove is accumulated
  14. * @param witness The witness to the accumulation of the coin
  15. * @param a
  16. */
  17. AccumulatorProofOfKnowledge(const AccumulatorAndProofParams* p, const Commitment& commitmentToCoin, const AccumulatorWitness& witness, Accumulator& a);
  18. /** Verifies that a commitment c is accumulated in accumulated a
  19. */
  20. bool Verify(const Accumulator& a,const CBigNum& valueOfCommitmentToCoin) const;
  21. IMPLEMENT_SERIALIZE
  22. (
  23. READWRITE(C_e);
  24. READWRITE(C_u);
  25. READWRITE(C_r);
  26. READWRITE(st_1);
  27. READWRITE(st_2);
  28. READWRITE(st_3);
  29. READWRITE(t_1);
  30. READWRITE(t_2);
  31. READWRITE(t_3);
  32. READWRITE(t_4);
  33. READWRITE(s_alpha);
  34. READWRITE(s_beta);
  35. READWRITE(s_zeta);
  36. READWRITE(s_sigma);
  37. READWRITE(s_eta);
  38. READWRITE(s_epsilon);
  39. READWRITE(s_delta);
  40. READWRITE(s_xi);
  41. READWRITE(s_phi);
  42. READWRITE(s_gamma);
  43. READWRITE(s_psi);
  44. )
  45. private:
  46. const AccumulatorAndProofParams* params;
  47. /* Return values for proof */
  48. CBigNum C_e;
  49. CBigNum C_u;
  50. CBigNum C_r;
  51. CBigNum st_1;
  52. CBigNum st_2;
  53. CBigNum st_3;
  54. CBigNum t_1;
  55. CBigNum t_2;
  56. CBigNum t_3;
  57. CBigNum t_4;
  58. CBigNum s_alpha;
  59. CBigNum s_beta;
  60. CBigNum s_zeta;
  61. CBigNum s_sigma;
  62. CBigNum s_eta;
  63. CBigNum s_epsilon;
  64. CBigNum s_delta;
  65. CBigNum s_xi;
  66. CBigNum s_phi;
  67. CBigNum s_gamma;
  68. CBigNum s_psi;
  69. };
  70. } /* namespace libzerocoin */
  71. #endif /* ACCUMULATEPROOF_H_ */