auxiliarytool/cryp/box_rsa.h

101 lines
3.1 KiB
C
Raw Normal View History

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 17:29:42 +08:00
// 注意 HData 的所有内存分配与释放请统一使用:alloc_hdata 和 free_hdata
// alloc_hdata 使用方法:设定 HData.len 后调用 alloc_hdata(HData) 即可。
2024-02-28 15:51:36 +08:00
public:
2024-02-28 17:29:42 +08:00
/**
* @brief 使
*
* @param public_pem PEM
* @param data
* @param result (使 free_hdata )
* @return true false
*/
bool encrypt_pub(const HData& public_pem, const HData& data, HData& result);
/**
* @brief 使
*
* @param pub_path
* @param data
* @param result (使 free_hdata )
* @return true false
*/
bool encrypt_pub(const char* pub_path, const HData& data, HData& result);
/**
* @brief 使
*
* @param private_pem PEM
* @param data
* @param result (使 free_hdata )
* @return true false
*/
bool decrypt_pri(const HData& private_pem, const HData& data, HData& result);
/**
* @brief 使
*
* @param pri_path
* @param data
* @param result (使 free_hdata )
* @return true false
*/
bool decrypt_pri(const char* pri_path, const HData& data, HData& result);
/**
* @brief
*
* @param pub_path
* @param pri_path
* @return true false
*/
bool generate_keypair(const char* pub_path, const char* pri_path);
/**
* @brief
*
* @param pub
* @param pri
* @return true false
*/
bool generate_keypair(HData& pub, HData& pri);
/**
* @brief HData data
*/
void free_hdata(HData& data);
/**
* @brief HData data ( data.len)
*/
void alloc_hdata(HData& data);
/**
* @brief
*/
2024-02-28 15:51:36 +08:00
const char* get_last_error() const;
};
} // namespace cppbox
#endif