2024-02-28 15:51:36 +08:00
|
|
|
#ifndef BOX_CRTP_RSA_H
|
|
|
|
#define BOX_CRTP_RSA_H
|
|
|
|
|
|
|
|
namespace cppbox {
|
|
|
|
|
|
|
|
struct HData {
|
|
|
|
unsigned char* data;
|
2024-02-28 17:02:36 +08:00
|
|
|
size_t len;
|
2024-02-28 15:51:36 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRSAOperatorImp;
|
|
|
|
class CRSAOperator
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
CRSAOperatorImp* imp_{};
|
|
|
|
char* err_{};
|
2024-02-28 17:02:36 +08:00
|
|
|
|
2024-02-28 15:51:36 +08:00
|
|
|
public:
|
|
|
|
CRSAOperator();
|
|
|
|
~CRSAOperator();
|
2024-02-28 17:02:36 +08:00
|
|
|
|
2024-02-28 15:51:36 +08:00
|
|
|
public:
|
2024-02-28 17:02:36 +08:00
|
|
|
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);
|
|
|
|
void free_hdata(HData& data);
|
2024-02-28 17:06:02 +08:00
|
|
|
void alloc_hdata(HData& data);
|
2024-02-28 15:51:36 +08:00
|
|
|
const char* get_last_error() const;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace cppbox
|
|
|
|
|
|
|
|
#endif
|