PrivateKey.h 913 B

12345678910111213141516171819202122232425262728
  1. #pragma once
  2. #include "openfhe/core/lattice/hal/lat-backend.h"
  3. #include "openfhe/pke/key/privatekey-fwd.h"
  4. namespace openfhe
  5. {
  6. using PrivateKeyImpl = lbcrypto::PrivateKeyImpl<lbcrypto::DCRTPoly>;
  7. class PrivateKeyDCRTPoly final
  8. {
  9. std::shared_ptr<PrivateKeyImpl> m_privateKey;
  10. public:
  11. PrivateKeyDCRTPoly() = default;
  12. PrivateKeyDCRTPoly(const std::shared_ptr<PrivateKeyImpl>& privateKey) noexcept;
  13. PrivateKeyDCRTPoly(const PrivateKeyDCRTPoly&) = delete;
  14. PrivateKeyDCRTPoly(PrivateKeyDCRTPoly&&) = delete;
  15. PrivateKeyDCRTPoly& operator=(const PrivateKeyDCRTPoly&) = delete;
  16. PrivateKeyDCRTPoly& operator=(PrivateKeyDCRTPoly&&) = delete;
  17. [[nodiscard]] const std::shared_ptr<PrivateKeyImpl>& GetRef() const noexcept;
  18. [[nodiscard]] std::shared_ptr<PrivateKeyImpl>& GetRef() noexcept;
  19. };
  20. [[nodiscard]] std::unique_ptr<PrivateKeyDCRTPoly> DCRTPolyGenNullPrivateKey();
  21. } // openfhe