12 #include <botan/exceptn.h>
13 #include <botan/pk_keys.h>
14 #include <botan/bigint.h>
15 #include <botan/rng.h>
16 #include <botan/uuid.h>
46 typedef std::function<std::string (std::string)>
pin_cb;
53 void gen_random(uint8_t out[],
size_t out_len);
56 void stir_random(
const uint8_t in[],
size_t in_len);
63 uint32_t current_counter();
65 TSS_HCONTEXT
handle()
const {
return m_ctx; }
66 TSS_HKEY
srk()
const {
return m_srk; }
69 std::function<std::string (std::string)> m_pin_cb;
82 m_ctx.stir_random(in, in_len);
85 void randomize(uint8_t out[],
size_t out_len)
override
87 m_ctx.gen_random(out, out_len);
90 std::string
name()
const override {
return "TPM_RNG"; }
122 const std::string& uuid,
126 const std::vector<uint8_t>& blob);
138 std::unique_ptr<Public_Key> public_key()
const;
140 std::vector<uint8_t> export_blob()
const;
149 static std::vector<std::string> registered_keys(
TPM_Context& ctx);
151 size_t estimated_strength()
const override;
153 size_t key_length()
const override;
157 std::vector<uint8_t> public_key_bits()
const override;
163 std::string
algo_name()
const override {
return "RSA"; }
165 std::unique_ptr<PK_Ops::Signature>
167 const std::string& params,
168 const std::string& provider)
const override;
bool is_seeded() const override
TSS_HCONTEXT handle() const
std::string name() const override
std::vector< T, secure_allocator< T >> secure_vector
void randomize(uint8_t out[], size_t out_len) override
void add_entropy(const uint8_t in[], size_t in_len) override
std::string algo_name() const override
std::function< std::string(std::string)> pin_cb
TPM_RNG(TPM_Context &ctx)
std::string get_user_pin(const std::string &who)
TPM_Error(const std::string &err)
const TPM_PrivateKey & m_key
TPM_Context & ctx() const