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 "../../lite/security/ec-private-key-lite.hpp"
27 #include "../../lite/security/rsa-private-key-lite.hpp"
28 #include "private-key-storage.hpp"
29 
30 namespace ndn {
31 
37 public:
41  virtual
43 
51  void
53  (const Name& keyName, KeyType keyType, const uint8_t* publicKeyDer,
54  size_t publicKeyDerLength);
55 
60  void
61  DEPRECATED_IN_NDN_CPP setPublicKeyForKeyName
62  (const Name& keyName, const uint8_t* publicKeyDer, size_t publicKeyDerLength)
63  {
64  setPublicKeyForKeyName(keyName, KEY_TYPE_RSA, publicKeyDer, publicKeyDerLength);
65  }
66 
74  void
76  (const Name& keyName, KeyType keyType, const uint8_t* privateKeyDer,
77  size_t privateKeyDerLength);
78 
83  void
84  DEPRECATED_IN_NDN_CPP setPrivateKeyForKeyName
85  (const Name& keyName, const uint8_t* privateKeyDer, size_t privateKeyDerLength)
86  {
87  setPrivateKeyForKeyName(keyName, KEY_TYPE_RSA, privateKeyDer, privateKeyDerLength);
88  }
89 
99  void
101  (const Name& keyName, KeyType keyType, const uint8_t* publicKeyDer,
102  size_t publicKeyDerLength, const uint8_t* privateKeyDer,
103  size_t privateKeyDerLength)
104  {
105  setPublicKeyForKeyName(keyName, keyType, publicKeyDer, publicKeyDerLength);
106  setPrivateKeyForKeyName(keyName, keyType, privateKeyDer, privateKeyDerLength);
107  }
108 
113  void
114  DEPRECATED_IN_NDN_CPP setKeyPairForKeyName
115  (const Name& keyName, const uint8_t* publicKeyDer, size_t publicKeyDerLength,
116  const uint8_t* privateKeyDer, size_t privateKeyDerLength)
117  {
119  (keyName, KEY_TYPE_RSA, publicKeyDer, publicKeyDerLength, privateKeyDer,
120  privateKeyDerLength);
121  }
122 
128  virtual void
129  generateKeyPair(const Name& keyName, const KeyParams& params);
130 
135  virtual void
136  deleteKeyPair(const Name& keyName);
137 
143  virtual ptr_lib::shared_ptr<PublicKey>
144  getPublicKey(const Name& keyName);
145 
154  virtual Blob
155  sign(const uint8_t *data, size_t dataLength, const Name& keyName, DigestAlgorithm digestAlgorithm);
156 
165  virtual Blob
166  decrypt(const Name& keyName, const uint8_t* data, size_t dataLength, bool isSymmetric);
167 
176  virtual Blob
177  encrypt(const Name& keyName, const uint8_t* data, size_t dataLength, bool isSymmetric);
178 
184  virtual void
185  generateKey(const Name& keyName, const KeyParams& params);
186 
193  virtual bool
194  doesKeyExist(const Name& keyName, KeyClass keyClass);
195 
196 private:
200  class PrivateKey {
201  public:
202  PrivateKey(KeyType keyType, const uint8_t* keyDer, size_t keyDerLength);
203 
204  KeyType getKeyType() const { return keyType_; }
205 
206  const RsaPrivateKeyLite& getRsaPrivateKey() const { return rsaPrivateKey_; }
207 
208  const EcPrivateKeyLite& getEcPrivateKey() const { return ecPrivateKey_; }
209 
210  private:
211  KeyType keyType_;
212  RsaPrivateKeyLite rsaPrivateKey_;
213  EcPrivateKeyLite ecPrivateKey_;
214  };
215 
216  std::map<std::string, ptr_lib::shared_ptr<PublicKey> > publicKeyStore_;
217  std::map<std::string, ptr_lib::shared_ptr<PrivateKey> > privateKeyStore_;
218 };
219 
220 }
221 
222 #endif
Copyright (C) 2013-2016 Regents of the University of California.
Definition: common.hpp:36
virtual Blob encrypt(const Name &keyName, const uint8_t *data, size_t dataLength, bool isSymmetric)
Encrypt data.
Definition: memory-private-key-storage.cpp:222
virtual void generateKey(const Name &keyName, const KeyParams &params)
Generate a symmetric key.
Definition: memory-private-key-storage.cpp:228
virtual void generateKeyPair(const Name &keyName, const KeyParams &params)
Generate a pair of asymmetric keys.
Definition: memory-private-key-storage.cpp:58
virtual void deleteKeyPair(const Name &keyName)
Delete a pair of asymmetric keys.
Definition: memory-private-key-storage.cpp:161
virtual Blob decrypt(const Name &keyName, const uint8_t *data, size_t dataLength, bool isSymmetric)
Decrypt data.
Definition: memory-private-key-storage.cpp:216
MemoryPrivateKeyStorage extends PrivateKeyStorage to implement a simple in-memory private key store...
Definition: memory-private-key-storage.hpp:36
virtual ptr_lib::shared_ptr< PublicKey > getPublicKey(const Name &keyName)
Get the public key.
Definition: memory-private-key-storage.cpp:170
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:49
A Blob holds a pointer to an immutable byte array implemented as const std::vector.
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:40
KeyParams is a base class for key parameters.
Definition: key-params.hpp:35
virtual ~MemoryPrivateKeyStorage()
The virtual destructor.
Definition: memory-private-key-storage.cpp:34
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:179
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:101
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:234