23 #ifndef NDN_TPM_BACK_END_HPP
24 #define NDN_TPM_BACK_END_HPP
26 #include "../../name.hpp"
27 #include "../key-params.hpp"
45 class Error :
public std::runtime_error
48 Error(
const std::string& what)
49 : std::runtime_error(what)
63 hasKey(
const Name& keyName)
const {
return doHasKey(keyName); }
72 ptr_lib::shared_ptr<TpmKeyHandle>
83 ptr_lib::shared_ptr<TpmKeyHandle>
110 exportKey(
const Name& keyName,
const uint8_t* password,
size_t passwordLength);
130 (
const Name& keyName,
const uint8_t* pkcs8,
size_t pkcs8Length,
131 const uint8_t* password,
size_t passwordLength);
164 unlockTpm(
const uint8_t* password,
size_t passwordLength)
const;
174 (TpmKeyHandle& keyHandle,
const Name& identityName,
const KeyParams& params);
183 doHasKey(
const Name& keyName)
const = 0;
190 virtual ptr_lib::shared_ptr<TpmKeyHandle>
191 doGetKeyHandle(
const Name& keyName)
const = 0;
202 virtual ptr_lib::shared_ptr<TpmKeyHandle>
203 doCreateKey(
const Name& identityName,
const KeyParams& params) = 0;
211 doDeleteKey(
const Name& keyName) = 0;
227 doExportKey(
const Name& keyName,
const uint8_t* password,
size_t passwordLength);
246 (
const Name& keyName,
const uint8_t* pkcs8,
size_t pkcs8Length,
247 const uint8_t* password,
size_t passwordLength);
250 TpmBackEnd(
const TpmBackEnd& other);
251 TpmBackEnd& operator=(
const TpmBackEnd& other);
virtual void setTerminalMode(bool isTerminal) const
Set the terminal mode of the TPM.
Definition: tpm-back-end.cpp:118
void importKey(const Name &keyName, const uint8_t *pkcs8, size_t pkcs8Length, const uint8_t *password, size_t passwordLength)
Import an encoded private key with name keyName in PKCS #8 format, possibly password-encrypted.
Definition: tpm-back-end.cpp:82
virtual bool isTpmLocked() const
Check if the TPM is locked.
Definition: tpm-back-end.cpp:121
TpmBackEnd is an abstract base class for a TPM backend implementation which provides a TpmKeyHandle t...
Definition: tpm-back-end.hpp:39
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:40
A Blob holds a pointer to an immutable byte array implemented as const std::vector<uint8_t>.
Definition: blob.hpp:42
virtual bool unlockTpm(const uint8_t *password, size_t passwordLength) const
Unlock the TPM.
Definition: tpm-back-end.cpp:124
static void setKeyName(TpmKeyHandle &keyHandle, const Name &identityName, const KeyParams ¶ms)
Set the key name in keyHandle according to identityName and params.
Definition: tpm-back-end.cpp:93
bool hasKey(const Name &keyName) const
Check if the key with name keyName exists in the TPM.
Definition: tpm-back-end.hpp:63
Blob exportKey(const Name &keyName, const uint8_t *password, size_t passwordLength)
Get the encoded private key with name keyName in PKCS #8 format, possibly password-encrypted.
Definition: tpm-back-end.cpp:72
KeyParams is a base class for key parameters.
Definition: key-params.hpp:36
ptr_lib::shared_ptr< TpmKeyHandle > createKey(const Name &identityName, const KeyParams ¶ms)
Create a key for the identityName according to params.
Definition: tpm-back-end.cpp:37
virtual bool isTerminalMode() const
Check if the TPM is in terminal mode.
Definition: tpm-back-end.cpp:115
void deleteKey(const Name &keyName)
Delete the key with name keyName.
Definition: tpm-back-end.hpp:94
A TpmBackEnd::Error extends runtime_error and represents a non-semantic error in backend TPM processi...
Definition: tpm-back-end.hpp:45
ptr_lib::shared_ptr< TpmKeyHandle > getKeyHandle(const Name &keyName) const
Get the handle of the key with name keyName.
Definition: tpm-back-end.hpp:73