PrivateKey.hpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef __PRIVATEKEY_HPP
  2. #define __PRIVATEKEY_HPP
  3. #include <unordered_map>
  4. #include "Scalar.hpp"
  5. #include "Bipoint.hpp"
  6. #include "Quadripoint.hpp"
  7. #include "PublicKey.hpp"
  8. #include "pairing.hpp"
  9. class PrivateKey
  10. {
  11. public:
  12. Scalar decrypt(const CurveBipoint& ciphertext) const;
  13. Scalar decrypt(const TwistBipoint& ciphertext) const;
  14. Scalar decrypt(const Quadripoint & ciphertext) const;
  15. private:
  16. PrivateKey();
  17. friend class BGN;
  18. void set(const PublicKey& pub_key, const Scalar& a1, const Scalar& b1, const Scalar& c1, const Scalar& d1, const Scalar& a2, const Scalar& b2, const Scalar& c2, const Scalar& d2);
  19. CurveBipoint pi_1(const CurveBipoint& input) const;
  20. TwistBipoint pi_2(const TwistBipoint& input) const;
  21. Quadripoint pi_T(const Quadripoint & input) const;
  22. Scalar a1, b1, c1, d1, a2, b2, c2, d2;
  23. CurveBipoint pi_1_curvegen;
  24. TwistBipoint pi_2_twistgen;
  25. Quadripoint pi_T_pairgen;
  26. };
  27. #endif