8#ifndef BOTAN_PK_KEYS_H_
9#define BOTAN_PK_KEYS_H_
11#include <botan/secmem.h>
12#include <botan/asn1_obj.h>
13#include <botan/pk_ops_fwd.h>
18class RandomNumberGenerator;
65 virtual OID get_oid()
const;
75 bool strong)
const = 0;
91 std::vector<uint8_t> subject_public_key()
const;
96 std::string fingerprint_public(
const std::string& alg =
"SHA-256")
const;
142 virtual std::unique_ptr<PK_Ops::Encryption>
144 const std::string& params,
145 const std::string& provider)
const;
159 virtual std::unique_ptr<PK_Ops::KEM_Encryption>
161 const std::string& params,
162 const std::string& provider)
const;
172 virtual std::unique_ptr<PK_Ops::Verification>
173 create_verification_op(
const std::string& params,
174 const std::string& provider)
const;
205 {
return algorithm_identifier(); }
212 std::string fingerprint_private(
const std::string& alg)
const;
214 BOTAN_DEPRECATED(
"Use fingerprint_private or fingerprint_public")
215 inline
std::
string fingerprint(const
std::
string& alg)
const
217 return fingerprint_private(alg);
233 virtual std::unique_ptr<PK_Ops::Decryption>
235 const std::string& params,
236 const std::string& provider)
const;
250 virtual std::unique_ptr<PK_Ops::KEM_Decryption>
252 const std::string& params,
253 const std::string& provider)
const;
267 virtual std::unique_ptr<PK_Ops::Signature>
269 const std::string& params,
270 const std::string& provider)
const;
284 virtual std::unique_ptr<PK_Ops::Key_Agreement>
286 const std::string& params,
287 const std::string& provider)
const;
317 const
std::
string& hash_name);
319template<typename Alloc>
321 const
std::
string& hash_name)
PK_Key_Agreement_Key()=default
PK_Key_Agreement_Key & operator=(const PK_Key_Agreement_Key &)=default
PK_Key_Agreement_Key(const PK_Key_Agreement_Key &)=default
virtual std::vector< uint8_t > public_value() const =0
virtual ~PK_Key_Agreement_Key()=default
Private_Key & operator=(const Private_Key &other)=default
Private_Key(const Private_Key &other)=default
virtual ~Private_Key()=default
virtual AlgorithmIdentifier pkcs8_algorithm_identifier() const
virtual bool stateful_operation() const
virtual secure_vector< uint8_t > private_key_bits() const =0
Public_Key(const Public_Key &other)=default
Public_Key & operator=(const Public_Key &other)=default
virtual ~Public_Key()=default
virtual AlgorithmIdentifier algorithm_identifier() const =0
virtual std::vector< uint8_t > public_key_bits() const =0
virtual Signature_Format default_x509_signature_format() const
virtual size_t estimated_strength() const =0
virtual bool check_key(RandomNumberGenerator &rng, bool strong) const =0
virtual size_t key_length() const =0
virtual size_t message_part_size() const
virtual std::string algo_name() const =0
virtual size_t message_parts() const
#define BOTAN_PUBLIC_API(maj, min)
PK_Key_Agreement_Key PK_KA_Key
Private_Key PKCS8_PrivateKey
std::string create_hex_fingerprint(const uint8_t bits[], size_t bits_len, const std::string &hash_name)
Public_Key X509_PublicKey
std::vector< T, secure_allocator< T > > secure_vector