8#include <botan/pk_keys.h>
9#include <botan/internal/pk_ops.h>
10#include <botan/internal/fmt.h>
11#include <botan/der_enc.h>
12#include <botan/hash.h>
36 std::string_view hash_name)
39 const std::string hex_hash =
hex_encode(hash_fn->process(bits, bits_len));
43 for(
size_t i = 0; i != hex_hash.size(); i += 2)
46 fprint.push_back(
':');
48 fprint.push_back(hex_hash[i]);
49 fprint.push_back(hex_hash[i+1]);
57 std::vector<uint8_t> output;
69 const size_t PKCS8_VERSION = 0;
101std::unique_ptr<PK_Ops::Encryption>
104 std::string_view )
const
109std::unique_ptr<PK_Ops::KEM_Encryption>
111 std::string_view )
const
116std::unique_ptr<PK_Ops::Verification>
118 std::string_view )
const
123std::unique_ptr<PK_Ops::Verification>
125 std::string_view )
const
130std::unique_ptr<PK_Ops::Decryption>
133 std::string_view )
const
138std::unique_ptr<PK_Ops::KEM_Decryption>
141 std::string_view )
const
146std::unique_ptr<PK_Ops::Signature>
149 std::string_view )
const
154std::unique_ptr<PK_Ops::Key_Agreement>
157 std::string_view )
const
virtual std::string algo_name() const =0
virtual const BigInt & get_int_field(std::string_view field) const
virtual OID object_identifier() const
secure_vector< uint8_t > get_contents()
DER_Encoder & start_sequence()
DER_Encoder & encode(bool b)
static std::unique_ptr< HashFunction > create_or_throw(std::string_view algo_spec, std::string_view provider="")
static OID from_string(std::string_view str)
virtual std::unique_ptr< PK_Ops::Signature > create_signature_op(RandomNumberGenerator &rng, std::string_view params, std::string_view provider) const
std::string fingerprint_private(std::string_view alg) const
virtual std::unique_ptr< PK_Ops::Decryption > create_decryption_op(RandomNumberGenerator &rng, std::string_view params, std::string_view provider) const
virtual std::unique_ptr< PK_Ops::Key_Agreement > create_key_agreement_op(RandomNumberGenerator &rng, std::string_view params, std::string_view provider) const
virtual AlgorithmIdentifier pkcs8_algorithm_identifier() const
virtual secure_vector< uint8_t > raw_private_key_bits() const
secure_vector< uint8_t > private_key_info() const
virtual std::unique_ptr< PK_Ops::KEM_Decryption > create_kem_decryption_op(RandomNumberGenerator &rng, std::string_view params, std::string_view provider) const
virtual secure_vector< uint8_t > private_key_bits() const =0
std::string fingerprint_public(std::string_view alg="SHA-256") const
virtual AlgorithmIdentifier algorithm_identifier() const =0
virtual std::vector< uint8_t > public_key_bits() const =0
virtual std::unique_ptr< PK_Ops::Encryption > create_encryption_op(RandomNumberGenerator &rng, std::string_view params, std::string_view provider) const
virtual std::unique_ptr< PK_Ops::Verification > create_verification_op(std::string_view params, std::string_view provider) const
virtual std::unique_ptr< PK_Ops::Verification > create_x509_verification_op(const AlgorithmIdentifier &signature_algorithm, std::string_view provider) const
virtual std::unique_ptr< PK_Ops::KEM_Encryption > create_kem_encryption_op(std::string_view params, std::string_view provider) const
std::vector< uint8_t > subject_public_key() const
std::string fmt(std::string_view format, const T &... args)
void hex_encode(char output[], const uint8_t input[], size_t input_length, bool uppercase)
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