8 #include <botan/pk_keys.h>
9 #include <botan/pk_ops.h>
10 #include <botan/der_enc.h>
11 #include <botan/oids.h>
12 #include <botan/hash.h>
13 #include <botan/hex.h>
43 const size_t PKCS8_VERSION = 0;
62 const auto hex_print =
hex_encode(hash->final());
64 std::string formatted_print;
66 for(
size_t i = 0; i != hex_print.size(); i += 2)
68 formatted_print.push_back(hex_print[i]);
69 formatted_print.push_back(hex_print[i+1]);
71 if(i != hex_print.size() - 2)
72 formatted_print.push_back(
':');
75 return formatted_print;
78 std::unique_ptr<PK_Ops::Encryption>
81 const std::string& )
const
86 std::unique_ptr<PK_Ops::KEM_Encryption>
89 const std::string& )
const
94 std::unique_ptr<PK_Ops::Verification>
96 const std::string& )
const
101 std::unique_ptr<PK_Ops::Decryption>
104 const std::string& )
const
109 std::unique_ptr<PK_Ops::KEM_Decryption>
112 const std::string& )
const
117 std::unique_ptr<PK_Ops::Signature>
120 const std::string& )
const
125 std::unique_ptr<PK_Ops::Key_Agreement>
128 const std::string& )
const
std::vector< uint8_t > get_contents_unlocked()
virtual std::vector< uint8_t > public_key_bits() const =0
virtual std::unique_ptr< PK_Ops::Signature > create_signature_op(RandomNumberGenerator &rng, const std::string ¶ms, const std::string &provider) const
std::string fingerprint(const std::string &alg="SHA") const
virtual AlgorithmIdentifier algorithm_identifier() const =0
virtual secure_vector< uint8_t > private_key_bits() const =0
secure_vector< uint8_t > get_contents()
virtual std::string algo_name() const =0
virtual std::unique_ptr< PK_Ops::Encryption > create_encryption_op(RandomNumberGenerator &rng, const std::string ¶ms, const std::string &provider) const
virtual std::unique_ptr< PK_Ops::Decryption > create_decryption_op(RandomNumberGenerator &rng, const std::string ¶ms, const std::string &provider) const
virtual OID get_oid() const
DER_Encoder & encode(bool b)
std::vector< T, secure_allocator< T >> secure_vector
std::string lookup(const OID &oid)
static std::unique_ptr< HashFunction > create(const std::string &algo_spec, const std::string &provider="")
virtual AlgorithmIdentifier pkcs8_algorithm_identifier() const
virtual std::unique_ptr< PK_Ops::KEM_Decryption > create_kem_decryption_op(RandomNumberGenerator &rng, const std::string ¶ms, const std::string &provider) const
virtual std::unique_ptr< PK_Ops::Key_Agreement > create_key_agreement_op(RandomNumberGenerator &rng, const std::string ¶ms, const std::string &provider) const
secure_vector< uint8_t > private_key_info() const
virtual std::unique_ptr< PK_Ops::KEM_Encryption > create_kem_encryption_op(RandomNumberGenerator &rng, const std::string ¶ms, const std::string &provider) const
DER_Encoder & start_cons(ASN1_Tag type_tag, ASN1_Tag class_tag=UNIVERSAL)
void hex_encode(char output[], const uint8_t input[], size_t input_length, bool uppercase)
virtual std::unique_ptr< PK_Ops::Verification > create_verification_op(const std::string ¶ms, const std::string &provider) const
std::vector< uint8_t > subject_public_key() const