8 #ifndef BOTAN_PK_KEYS_H_
9 #define BOTAN_PK_KEYS_H_
11 #include <botan/secmem.h>
12 #include <botan/asn1_oid.h>
13 #include <botan/alg_id.h>
14 #include <botan/pk_ops_fwd.h>
19 class RandomNumberGenerator;
41 virtual std::string algo_name()
const = 0;
52 virtual size_t estimated_strength()
const = 0;
60 virtual size_t key_length()
const = 0;
66 virtual OID get_oid()
const;
76 bool strong)
const = 0;
87 virtual std::vector<uint8_t> public_key_bits()
const = 0;
92 std::vector<uint8_t> subject_public_key()
const;
97 std::string fingerprint_public(
const std::string& alg =
"SHA-256")
const;
143 virtual std::unique_ptr<PK_Ops::Encryption>
145 const std::string& params,
146 const std::string& provider)
const;
160 virtual std::unique_ptr<PK_Ops::KEM_Encryption>
162 const std::string& params,
163 const std::string& provider)
const;
173 virtual std::unique_ptr<PK_Ops::Verification>
174 create_verification_op(
const std::string& params,
175 const std::string& provider)
const;
206 {
return algorithm_identifier(); }
213 std::string fingerprint_private(
const std::string& alg)
const;
215 BOTAN_DEPRECATED(
"Use fingerprint_private or fingerprint_public")
216 inline
std::
string fingerprint(const
std::
string& alg)
const
218 return fingerprint_private(alg);
234 virtual std::unique_ptr<PK_Ops::Decryption>
236 const std::string& params,
237 const std::string& provider)
const;
251 virtual std::unique_ptr<PK_Ops::KEM_Decryption>
253 const std::string& params,
254 const std::string& provider)
const;
268 virtual std::unique_ptr<PK_Ops::Signature>
270 const std::string& params,
271 const std::string& provider)
const;
285 virtual std::unique_ptr<PK_Ops::Key_Agreement>
287 const std::string& params,
288 const std::string& provider)
const;
300 virtual std::vector<uint8_t> public_value()
const = 0;
318 const
std::
string& hash_name);
320 template<typename Alloc>
322 const
std::
string& hash_name)
virtual size_t message_part_size() const
#define BOTAN_PUBLIC_API(maj, min)
Private_Key PKCS8_PrivateKey
Public_Key X509_PublicKey
PK_Key_Agreement_Key PK_KA_Key
std::vector< T, secure_allocator< T >> secure_vector
virtual size_t message_parts() const
virtual AlgorithmIdentifier pkcs8_algorithm_identifier() const
std::string create_hex_fingerprint(const uint8_t bits[], size_t bits_len, const std::string &hash_name)
virtual bool stateful_operation() const
virtual Signature_Format default_x509_signature_format() const