SecTpmMemory implements a simple in-memory TPM. More...
#include <sec-tpm-memory.hpp>
Data Structures | |
| class | Error |
| class | RsaPrivateKey |
| RsaPrivateKey is a simple class to hold an RSA private key. More... | |
Public Member Functions | |
| virtual | ~SecTpmMemory () |
| virtual void | setTpmPassword (const uint8_t *password, size_t passwordLength) |
| set password of TPM More... | |
| virtual void | resetTpmPassword () |
| reset password of TPM More... | |
| virtual void | setInTerminal (bool inTerminal) |
| set inTerminal flag More... | |
| virtual bool | getInTerminal () |
| get inTerminal flag More... | |
| virtual bool | locked () |
| check if TPM is locked. More... | |
| virtual bool | unlockTpm (const char *password, size_t passwordLength, bool usePassword) |
| Unlock the TPM. More... | |
| virtual void | generateKeyPairInTpm (const Name &keyName, KeyType keyType, int keySize) |
| Generate a pair of asymmetric keys. More... | |
| virtual shared_ptr< PublicKey > | getPublicKeyFromTpm (const Name &keyName) |
| Get a public key. More... | |
| virtual void | deleteKeyPairInTpm (const Name &keyName) |
| Delete a key pair of asymmetric keys. More... | |
| virtual Block | signInTpm (const uint8_t *data, size_t dataLength, const Name &keyName, DigestAlgorithm digestAlgorithm) |
| Sign data. More... | |
| virtual ConstBufferPtr | decryptInTpm (const uint8_t *data, size_t dataLength, const Name &keyName, bool isSymmetric) |
| Decrypt data. More... | |
| virtual ConstBufferPtr | encryptInTpm (const uint8_t *data, size_t dataLength, const Name &keyName, bool isSymmetric) |
| Encrypt data. More... | |
| virtual void | generateSymmetricKeyInTpm (const Name &keyName, KeyType keyType, int keySize) |
| Generate a symmetric key. More... | |
| virtual bool | doesKeyExistInTpm (const Name &keyName, KeyClass keyClass) |
| Check if a particular key exists. More... | |
| virtual bool | generateRandomBlock (uint8_t *res, size_t size) |
| Generate a random block. More... | |
| virtual void | addAppToACL (const Name &keyName, KeyClass keyClass, const std::string &appPath, AclType acl) |
| Add the application into the ACL of a particular key. More... | |
| void | setKeyPairForKeyName (const Name &keyName, const uint8_t *publicKeyDer, size_t publicKeyDerLength, const uint8_t *privateKeyDer, size_t privateKeyDerLength) |
| Set the public and private key for the keyName. More... | |
| ConstBufferPtr | exportPrivateKeyPkcs5FromTpm (const Name &keyName, const std::string &password) |
| Export a private key in PKCS#5 format. More... | |
| bool | importPrivateKeyPkcs5IntoTpm (const Name &keyName, const uint8_t *buf, size_t size, const std::string &password) |
| Import a private key in PKCS#5 format. More... | |
Protected Member Functions | |
| virtual ConstBufferPtr | exportPrivateKeyPkcs1FromTpm (const Name &keyName) |
| virtual bool | importPrivateKeyPkcs1IntoTpm (const Name &keyName, const uint8_t *buf, size_t size) |
| virtual bool | importPublicKeyPkcs1IntoTpm (const Name &keyName, const uint8_t *buf, size_t size) |
| Import a public key in PKCS#1 format. More... | |
| virtual ConstBufferPtr | exportPrivateKeyPkcs8FromTpm (const Name &keyName)=0 |
| Export a private key in PKCS#8 format. More... | |
| virtual bool | importPrivateKeyPkcs8IntoTpm (const Name &keyName, const uint8_t *buf, size_t size)=0 |
| Import a private key in PKCS#8 format. More... | |
| virtual bool | getImpExpPassWord (std::string &password, const std::string &prompt) |
| Get import/export password. More... | |
SecTpmMemory implements a simple in-memory TPM.
You should initialize by calling setKeyPairForKeyName.
Definition at line 23 of file sec-tpm-memory.hpp.
|
virtual |
Definition at line 51 of file sec-tpm-memory.cpp.
|
inlinevirtual |
Add the application into the ACL of a particular key.
| keyName | the name of key |
| keyClass | the class of key, e.g. Private Key |
| appPath | the absolute path to the application |
| acl | the new acl of the key |
Implements ndn::SecTpm.
Definition at line 106 of file sec-tpm-memory.hpp.
|
virtual |
Decrypt data.
| data | Pointer to the byte arry to be decrypted. |
| dataLength | The length of data. |
| keyName | The name of the decrypting key. |
| isSymmetric | If true symmetric encryption is used, otherwise asymmetric encryption. |
| SecTpm::Error | if decryption fails. |
Implements ndn::SecTpm.
Definition at line 139 of file sec-tpm-memory.cpp.
|
virtual |
Delete a key pair of asymmetric keys.
| keyName | The name of the key pair. |
Implements ndn::SecTpm.
Definition at line 72 of file sec-tpm-memory.cpp.
Check if a particular key exists.
| keyName | The name of the key. |
| keyClass | The class of the key, e.g. KEY_CLASS_PUBLIC, KEY_CLASS_PRIVATE. |
Implements ndn::SecTpm.
Definition at line 159 of file sec-tpm-memory.cpp.
|
virtual |
Encrypt data.
| data | Pointer to the byte arry to be decrypted. |
| dataLength | The length of data. |
| keyName | The name of the encrypting key. |
| isSymmetric | If true symmetric encryption is used, otherwise asymmetric encryption. |
| SecTpm::Error | if encryption fails. |
Implements ndn::SecTpm.
Definition at line 146 of file sec-tpm-memory.cpp.
|
protectedvirtual |
Definition at line 78 of file sec-tpm-memory.cpp.
|
inherited |
Export a private key in PKCS#5 format.
| keyName | The private key name. |
| password | The password to encrypt the private key. |
| SecTpm::Error | if private key cannot be exported. |
Definition at line 17 of file sec-tpm.cpp.
|
protectedpure virtualinherited |
Export a private key in PKCS#8 format.
| keyName | The private key name. |
Implemented in ndn::SecTpmFile, and ndn::SecTpmOsx.
|
virtual |
Generate a pair of asymmetric keys.
| keyName | The name of the key pair. |
| keyType | The type of the key pair, e.g. KEY_TYPE_RSA. |
| keySize | The size of the key pair. |
| SecTpm::Error | if fails. |
Implements ndn::SecTpm.
Definition at line 66 of file sec-tpm-memory.cpp.
|
virtual |
Generate a random block.
| res | The pointer to the generated block. |
| size | The random block size. |
Implements ndn::SecTpm.
Definition at line 171 of file sec-tpm-memory.cpp.
|
virtual |
Generate a symmetric key.
| keyName | The name of the key. |
| keyType | The type of the key, e.g. KEY_TYPE_AES. |
| keySize | The size of the key. |
| SecTpm::Error | if key generating fails. |
Implements ndn::SecTpm.
Definition at line 153 of file sec-tpm-memory.cpp.
|
inlineprotectedvirtualinherited |
Get import/export password.
| password | On return, the password. |
| prompt | Prompt for password, i.e., "Password for key:" |
Definition at line 279 of file sec-tpm.hpp.
|
inlinevirtual |
get inTerminal flag
Implements ndn::SecTpm.
Definition at line 60 of file sec-tpm-memory.hpp.
Get a public key.
| keyName | The public key name. |
| SecTpm::Error | if public key does not exist in TPM. |
Implements ndn::SecTpm.
Definition at line 96 of file sec-tpm-memory.cpp.
|
protectedvirtual |
Definition at line 84 of file sec-tpm-memory.cpp.
|
inherited |
Import a private key in PKCS#5 format.
Also recover the public key and installed it in TPM.
| keyName | The private key name. |
| key | The encoded private key info. |
| password | The password to encrypt the private key. |
Definition at line 139 of file sec-tpm.cpp.
|
protectedpure virtualinherited |
Import a private key in PKCS#8 format.
| keyName | The private key name. |
| key | The encoded private key info. |
Implemented in ndn::SecTpmFile, and ndn::SecTpmOsx.
|
protectedvirtual |
Import a public key in PKCS#1 format.
| keyName | The public key name. |
| key | The encoded public key info. |
Implements ndn::SecTpm.
Definition at line 90 of file sec-tpm-memory.cpp.
|
inlinevirtual |
check if TPM is locked.
Implements ndn::SecTpm.
Definition at line 66 of file sec-tpm-memory.hpp.
|
inlinevirtual |
|
inlinevirtual |
set inTerminal flag
If the inTerminal flag is set, and password is not set, TPM may ask for password via terminal. inTerminal flag is set by default.
| inTerminal. |
Implements ndn::SecTpm.
Definition at line 54 of file sec-tpm-memory.hpp.
| void ndn::SecTpmMemory::setKeyPairForKeyName | ( | const Name & | keyName, |
| const uint8_t * | publicKeyDer, | ||
| size_t | publicKeyDerLength, | ||
| const uint8_t * | privateKeyDer, | ||
| size_t | privateKeyDerLength | ||
| ) |
Set the public and private key for the keyName.
| keyName | The key name. |
| publicKeyDer | The public key DER byte array. |
| publicKeyDerLength | The length of publicKeyDer. |
| privateKeyDer | The private key DER byte array. |
| privateKeyDerLength | The length of privateKeyDer. |
Definition at line 56 of file sec-tpm-memory.cpp.
|
inlinevirtual |
set password of TPM
Password is used to unlock TPM when it is locked. You should be cautious when using this method, because remembering password is kind of dangerous.
| password | The password. |
| passwordLength | The length of password. |
Implements ndn::SecTpm.
Definition at line 44 of file sec-tpm-memory.hpp.
|
virtual |
Sign data.
| data | Pointer to the byte array to be signed. |
| dataLength | The length of data. |
| keyName | The name of the signing key. |
| digestAlgorithm | the digest algorithm. |
| SecTpm::Error | if signing fails. |
Implements ndn::SecTpm.
Definition at line 105 of file sec-tpm-memory.cpp.
|
inlinevirtual |
Unlock the TPM.
| password | The password. |
| passwordLength | The password size. 0 indicates no password. |
| usePassword | True if we want to use the supplied password to unlock the TPM. |
Implements ndn::SecTpm.
Definition at line 72 of file sec-tpm-memory.hpp.