24 #include "../transform/private-key.hpp" 25 #include "../../encoding/buffer-stream.hpp" 26 #include <unordered_map> 37 std::unordered_map<Name, shared_ptr<PrivateKey>>
keys;
50 static std::string scheme =
"tpm-memory";
55 BackEndMem::doHasKey(
const Name& keyName)
const 57 return (m_impl->keys.count(keyName) > 0);
61 BackEndMem::doGetKeyHandle(
const Name& keyName)
const 63 auto it = m_impl->keys.find(keyName);
64 if (it == m_impl->keys.end())
66 return make_unique<KeyHandleMem>(it->second);
70 BackEndMem::doCreateKey(
const Name& identityName,
const KeyParams& params)
73 unique_ptr<KeyHandle> keyHandle = make_unique<KeyHandleMem>(key);
77 m_impl->keys[keyHandle->getKeyName()] = key;
82 BackEndMem::doDeleteKey(
const Name& keyName)
84 m_impl->keys.erase(keyName);
88 BackEndMem::doExportKey(
const Name& keyName,
const char* pw,
size_t pwLen)
91 m_impl->keys[keyName]->savePkcs8(os, pw, pwLen);
96 BackEndMem::doImportKey(
const Name& keyName,
const uint8_t* buf,
size_t size,
const char* pw,
size_t pwLen)
99 auto key = make_shared<PrivateKey>();
100 key->loadPkcs8(buf, size, pw, pwLen);
101 m_impl->keys[keyName] = key;
103 catch (
const PrivateKey::Error& e) {
104 BOOST_THROW_EXCEPTION(Error(std::string(
"Cannot import private key: ") + e.what()));
Copyright (c) 2011-2015 Regents of the University of California.
BackEndMem(const std::string &location="")
Create memory-based TPM backend.
Represents an absolute name.
static void setKeyName(KeyHandle &keyHandle, const Name &identity, const KeyParams ¶ms)
Set the key name in keyHandle according to identity and params.
static const std::string & getScheme()
Base class of key parameters.
std::unordered_map< Name, shared_ptr< PrivateKey > > keys
shared_ptr< const Buffer > ConstBufferPtr