11#include <botan/pk_keys.h>
12#include <botan/bigint.h>
20class RSA_Private_Data;
34 const std::vector<uint8_t>& key_bits);
43 std::string
algo_name()
const override {
return "RSA"; }
49 std::vector<uint8_t> public_key_bits()
const override;
54 const BigInt& get_n()
const;
59 const BigInt& get_e()
const;
61 size_t key_length()
const override;
62 size_t estimated_strength()
const override;
65 std::shared_ptr<const RSA_Public_Data> public_data()
const;
67 std::unique_ptr<PK_Ops::Encryption>
69 const std::string& params,
70 const std::string& provider)
const override;
72 std::unique_ptr<PK_Ops::KEM_Encryption>
74 const std::string& params,
75 const std::string& provider)
const override;
77 std::unique_ptr<PK_Ops::Verification>
78 create_verification_op(
const std::string& params,
79 const std::string& provider)
const override;
86 std::shared_ptr<const RSA_Public_Data>
m_public;
125 size_t bits,
size_t exp = 65537);
133 const BigInt& get_p()
const;
139 const BigInt& get_q()
const;
145 const BigInt& get_d()
const;
147 const BigInt& get_c()
const;
148 const BigInt& get_d1()
const;
149 const BigInt& get_d2()
const;
154 std::shared_ptr<const RSA_Private_Data> private_data()
const;
156 std::unique_ptr<PK_Ops::Decryption>
158 const std::string& params,
159 const std::string& provider)
const override;
161 std::unique_ptr<PK_Ops::KEM_Decryption>
163 const std::string& params,
164 const std::string& provider)
const override;
166 std::unique_ptr<PK_Ops::Signature>
168 const std::string& params,
169 const std::string& provider)
const override;
175 std::shared_ptr<const RSA_Private_Data> m_private;
std::string algo_name() const override
std::shared_ptr< const RSA_Public_Data > m_public
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
std::vector< T, secure_allocator< T > > secure_vector