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>
21class RandomNumberGenerator;
81 virtual OID object_identifier()
const;
96 virtual const BigInt& get_int_field(std::string_view field)
const;
122 BOTAN_DEPRECATED(
"Use object_identifier")
OID get_oid()
const
124 return this->object_identifier();
135 bool strong)
const = 0;
150 std::vector<uint8_t> subject_public_key()
const;
155 std::string fingerprint_public(std::string_view alg =
"SHA-256")
const;
186 return (this->message_parts() >= 2) ? Signature_Format::DerSequence : Signature_Format::Standard;
201 virtual std::unique_ptr<PK_Ops::Encryption>
203 std::string_view params,
204 std::string_view provider)
const;
215 virtual std::unique_ptr<PK_Ops::KEM_Encryption>
216 create_kem_encryption_op(std::string_view params,
217 std::string_view provider)
const;
227 virtual std::unique_ptr<PK_Ops::Verification>
228 create_verification_op(std::string_view params,
229 std::string_view provider)
const;
243 virtual std::unique_ptr<PK_Ops::Verification>
245 std::string_view provider)
const;
286 {
return algorithm_identifier(); }
299 std::string fingerprint_private(std::string_view alg)
const;
314 virtual std::unique_ptr<PK_Ops::Decryption>
316 std::string_view params,
317 std::string_view provider)
const;
331 virtual std::unique_ptr<PK_Ops::KEM_Decryption>
333 std::string_view params,
334 std::string_view provider)
const;
348 virtual std::unique_ptr<PK_Ops::Signature>
350 std::string_view params,
351 std::string_view provider)
const;
365 virtual std::unique_ptr<PK_Ops::Key_Agreement>
367 std::string_view params,
368 std::string_view provider)
const;
385 std::string_view hash_name);
388 std::string_view hash_name)
virtual std::string algo_name() const =0
virtual ~Asymmetric_Key()=default
virtual bool supports_operation(PublicKeyOperation op) const =0
virtual size_t estimated_strength() const =0
virtual std::vector< uint8_t > public_value() const =0
virtual std::unique_ptr< Public_Key > public_key() const =0
virtual AlgorithmIdentifier pkcs8_algorithm_identifier() const
virtual bool stateful_operation() const
virtual secure_vector< uint8_t > private_key_bits() const =0
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 bool check_key(RandomNumberGenerator &rng, bool strong) const =0
virtual size_t key_length() const =0
virtual size_t message_part_size() const
virtual size_t message_parts() const
#define BOTAN_PUBLIC_API(maj, min)
std::string create_hex_fingerprint(const uint8_t bits[], size_t bits_len, std::string_view hash_name)
std::vector< T, secure_allocator< T > > secure_vector