11#include <botan/pk_keys.h>
12#include <botan/bigint.h>
20class RSA_Private_Data;
34 std::span<const 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;
64 const BigInt& get_int_field(std::string_view field)
const override;
69 std::shared_ptr<const RSA_Public_Data> public_data()
const;
71 std::unique_ptr<PK_Ops::Encryption>
73 std::string_view params,
74 std::string_view provider)
const override;
76 std::unique_ptr<PK_Ops::KEM_Encryption>
77 create_kem_encryption_op(std::string_view params,
78 std::string_view provider)
const override;
80 std::unique_ptr<PK_Ops::Verification>
81 create_verification_op(std::string_view params,
82 std::string_view provider)
const override;
84 std::unique_ptr<PK_Ops::Verification>
86 std::string_view provider)
const override;
93 std::shared_ptr<const RSA_Public_Data>
m_public;
112 std::span<const uint8_t> key_bits);
126 const BigInt& d = BigInt::zero(),
127 const BigInt& n = BigInt::zero());
136 size_t bits,
size_t exp = 65537);
138 std::unique_ptr<Public_Key> public_key()
const override;
142 const BigInt& get_int_field(std::string_view field)
const override;
148 const BigInt& get_p()
const;
154 const BigInt& get_q()
const;
160 const BigInt& get_d()
const;
162 const BigInt& get_c()
const;
163 const BigInt& get_d1()
const;
164 const BigInt& get_d2()
const;
169 std::shared_ptr<const RSA_Private_Data> private_data()
const;
171 std::unique_ptr<PK_Ops::Decryption>
173 std::string_view params,
174 std::string_view provider)
const override;
176 std::unique_ptr<PK_Ops::KEM_Decryption>
178 std::string_view params,
179 std::string_view provider)
const override;
181 std::unique_ptr<PK_Ops::Signature>
183 std::string_view params,
184 std::string_view provider)
const override;
190 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_DIAGNOSTIC_POP
#define BOTAN_DIAGNOSTIC_PUSH
#define BOTAN_DIAGNOSTIC_IGNORE_INHERITED_VIA_DOMINANCE
#define BOTAN_PUBLIC_API(maj, min)
std::vector< T, secure_allocator< T > > secure_vector