#ifndef BOX_CRTP_RSA_H #define BOX_CRTP_RSA_H namespace cppbox { struct HData { unsigned char* data; size_t len; }; class CRSAOperatorImp; class CRSAOperator { private: CRSAOperatorImp* imp_{}; char* err_{}; public: CRSAOperator(); ~CRSAOperator(); public: bool encrypt_pub(const HData& public_pem, const HData& data, HData& result); bool encrypt_pub(const char* pub_path, const HData& data, HData& result); bool decrypt_pri(const HData& private_pem, const HData& data, HData& result); bool decrypt_pri(const char* pri_path, const HData& data, HData& result); bool generate_keypair(const char* pub_path, const char* pri_path); bool generate_keypair(HData& pub, HData& pri); const char* get_last_error() const; }; } // namespace cppbox #endif