All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
memory-private-key-storage.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
22 #ifndef NDN_MEMORY_PRIVATE_KEY_STORAGE_HPP
23 #define NDN_MEMORY_PRIVATE_KEY_STORAGE_HPP
24 
25 #include <map>
26 #include "../tpm/tpm-private-key.hpp"
27 #include "private-key-storage.hpp"
28 
29 namespace ndn {
30 
36 public:
40  virtual
42 
50  void
52  (const Name& keyName, KeyType keyType, const uint8_t* publicKeyDer,
53  size_t publicKeyDerLength);
54 
59  void
60  DEPRECATED_IN_NDN_CPP setPublicKeyForKeyName
61  (const Name& keyName, const uint8_t* publicKeyDer, size_t publicKeyDerLength)
62  {
63  setPublicKeyForKeyName(keyName, KEY_TYPE_RSA, publicKeyDer, publicKeyDerLength);
64  }
65 
73  void
75  (const Name& keyName, KeyType keyType, const uint8_t* privateKeyDer,
76  size_t privateKeyDerLength);
77 
82  void
83  DEPRECATED_IN_NDN_CPP setPrivateKeyForKeyName
84  (const Name& keyName, const uint8_t* privateKeyDer, size_t privateKeyDerLength)
85  {
86  setPrivateKeyForKeyName(keyName, KEY_TYPE_RSA, privateKeyDer, privateKeyDerLength);
87  }
88 
98  void
100  (const Name& keyName, KeyType keyType, const uint8_t* publicKeyDer,
101  size_t publicKeyDerLength, const uint8_t* privateKeyDer,
102  size_t privateKeyDerLength)
103  {
104  setPublicKeyForKeyName(keyName, keyType, publicKeyDer, publicKeyDerLength);
105  setPrivateKeyForKeyName(keyName, keyType, privateKeyDer, privateKeyDerLength);
106  }
107 
112  void
113  DEPRECATED_IN_NDN_CPP setKeyPairForKeyName
114  (const Name& keyName, const uint8_t* publicKeyDer, size_t publicKeyDerLength,
115  const uint8_t* privateKeyDer, size_t privateKeyDerLength)
116  {
118  (keyName, KEY_TYPE_RSA, publicKeyDer, publicKeyDerLength, privateKeyDer,
119  privateKeyDerLength);
120  }
121 
127  virtual void
128  generateKeyPair(const Name& keyName, const KeyParams& params);
129 
134  virtual void
135  deleteKeyPair(const Name& keyName);
136 
142  virtual ptr_lib::shared_ptr<PublicKey>
143  getPublicKey(const Name& keyName);
144 
153  virtual Blob
154  sign(const uint8_t *data, size_t dataLength, const Name& keyName, DigestAlgorithm digestAlgorithm);
155 
164  virtual Blob
165  decrypt(const Name& keyName, const uint8_t* data, size_t dataLength, bool isSymmetric);
166 
175  virtual Blob
176  encrypt(const Name& keyName, const uint8_t* data, size_t dataLength, bool isSymmetric);
177 
183  virtual void
184  generateKey(const Name& keyName, const KeyParams& params);
185 
192  virtual bool
193  doesKeyExist(const Name& keyName, KeyClass keyClass);
194 
195 private:
196  // The map key is the keyName.toUri().
197  std::map<std::string, ptr_lib::shared_ptr<PublicKey> > publicKeyStore_;
198  std::map<std::string, ptr_lib::shared_ptr<TpmPrivateKey> > privateKeyStore_;
199 };
200 
201 }
202 
203 #endif
virtual Blob encrypt(const Name &keyName, const uint8_t *data, size_t dataLength, bool isSymmetric)
Encrypt data.
Definition: memory-private-key-storage.cpp:118
virtual void generateKey(const Name &keyName, const KeyParams &params)
Generate a symmetric key.
Definition: memory-private-key-storage.cpp:124
virtual void generateKeyPair(const Name &keyName, const KeyParams &params)
Generate a pair of asymmetric keys.
Definition: memory-private-key-storage.cpp:59
virtual void deleteKeyPair(const Name &keyName)
Delete a pair of asymmetric keys.
Definition: memory-private-key-storage.cpp:78
virtual Blob decrypt(const Name &keyName, const uint8_t *data, size_t dataLength, bool isSymmetric)
Decrypt data.
Definition: memory-private-key-storage.cpp:112
MemoryPrivateKeyStorage extends PrivateKeyStorage to implement a simple in-memory private key store...
Definition: memory-private-key-storage.hpp:35
KeyType
Definition: security-common.hpp:50
virtual ptr_lib::shared_ptr< PublicKey > getPublicKey(const Name &keyName)
Get the public key.
Definition: memory-private-key-storage.cpp:87
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:40
void setPrivateKeyForKeyName(const Name &keyName, KeyType keyType, const uint8_t *privateKeyDer, size_t privateKeyDerLength)
Set the private key for the keyName.
Definition: memory-private-key-storage.cpp:45
A Blob holds a pointer to an immutable byte array implemented as const std::vector<uint8_t>.
Definition: blob.hpp:42
void setPublicKeyForKeyName(const Name &keyName, KeyType keyType, const uint8_t *publicKeyDer, size_t publicKeyDerLength)
Set the public key for the keyName.
Definition: memory-private-key-storage.cpp:36
KeyParams is a base class for key parameters.
Definition: key-params.hpp:36
virtual ~MemoryPrivateKeyStorage()
The virtual destructor.
Definition: memory-private-key-storage.cpp:30
virtual Blob sign(const uint8_t *data, size_t dataLength, const Name &keyName, DigestAlgorithm digestAlgorithm)
Fetch the private key for keyName and sign the data, returning a signature Blob.
Definition: memory-private-key-storage.cpp:96
void setKeyPairForKeyName(const Name &keyName, KeyType keyType, const uint8_t *publicKeyDer, size_t publicKeyDerLength, const uint8_t *privateKeyDer, size_t privateKeyDerLength)
Set the public and private key for the keyName.
Definition: memory-private-key-storage.hpp:100
Definition: private-key-storage.hpp:39
virtual bool doesKeyExist(const Name &keyName, KeyClass keyClass)
Check if a particular key exists.
Definition: memory-private-key-storage.cpp:130