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/rng.h>
15 #include <botan/pk_ops_fwd.h>
19 class RandomNumberGenerator;
36 virtual std::string algo_name()
const = 0;
47 virtual size_t estimated_strength()
const = 0;
55 virtual size_t key_length()
const = 0;
61 virtual OID get_oid()
const;
71 bool strong)
const = 0;
82 virtual std::vector<uint8_t> public_key_bits()
const = 0;
87 std::vector<uint8_t> subject_public_key()
const;
128 virtual std::unique_ptr<PK_Ops::Encryption>
130 const std::string& params,
131 const std::string& provider)
const;
145 virtual std::unique_ptr<PK_Ops::KEM_Encryption>
147 const std::string& params,
148 const std::string& provider)
const;
158 virtual std::unique_ptr<PK_Ops::Verification>
159 create_verification_op(
const std::string& params,
160 const std::string& provider)
const;
189 {
return algorithm_identifier(); }
196 std::string fingerprint(
const std::string& alg =
"SHA")
const;
211 virtual std::unique_ptr<PK_Ops::Decryption>
213 const std::string& params,
214 const std::string& provider)
const;
228 virtual std::unique_ptr<PK_Ops::KEM_Decryption>
230 const std::string& params,
231 const std::string& provider)
const;
245 virtual std::unique_ptr<PK_Ops::Signature>
247 const std::string& params,
248 const std::string& provider)
const;
262 virtual std::unique_ptr<PK_Ops::Key_Agreement>
264 const std::string& params,
265 const std::string& provider)
const;
277 virtual std::vector<uint8_t> public_value()
const = 0;
virtual size_t message_part_size() const
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