12#include <botan/exceptn.h>
13#include <botan/pk_keys.h>
14#include <botan/bigint.h>
16#include <botan/uuid.h>
48 typedef std::function<std::string (std::string)>
pin_cb;
55 void gen_random(uint8_t out[],
size_t out_len);
58 void stir_random(
const uint8_t in[],
size_t in_len);
65 uint32_t current_counter();
67 TSS_HCONTEXT
handle()
const {
return m_ctx; }
68 TSS_HKEY
srk()
const {
return m_srk; }
71 std::function<std::string (std::string)> m_pin_cb;
75 TSS_HPOLICY m_srk_policy;
87 m_ctx.stir_random(in, in_len);
90 void randomize(uint8_t out[],
size_t out_len)
override
92 m_ctx.gen_random(out, out_len);
95 std::string
name()
const override {
return "TPM_RNG"; }
125 const std::string& uuid,
129 const std::vector<uint8_t>& blob);
141 std::unique_ptr<Public_Key> public_key()
const override;
143 std::vector<uint8_t> export_blob()
const;
147 TSS_HKEY
handle()
const {
return m_key; }
152 static std::vector<std::string> registered_keys(
TPM_Context& ctx);
154 size_t estimated_strength()
const override;
156 size_t key_length()
const override;
160 std::vector<uint8_t> public_key_bits()
const override;
170 std::string
algo_name()
const override {
return "RSA"; }
172 std::unique_ptr<PK_Ops::Signature>
174 const std::string& params,
175 const std::string& provider)
const override;
TSS_HCONTEXT handle() const
std::string get_user_pin(const std::string &who)
std::function< std::string(std::string)> pin_cb
ErrorType error_type() const noexcept override
TPM_Error(const std::string &err)
TPM_Context & ctx() const
std::string algo_name() const override
bool accepts_input() const override
bool is_seeded() const override
std::string name() const override
void add_entropy(const uint8_t in[], size_t in_len) override
TPM_RNG(TPM_Context &ctx)
void randomize(uint8_t out[], size_t out_len) override
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
std::vector< T, secure_allocator< T > > secure_vector