memory-identity-storage.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
22 #ifndef NDN_MEMORY_IDENTITY_STORAGE_HPP
23 #define NDN_MEMORY_IDENTITY_STORAGE_HPP
24 
25 #include <vector>
26 #include <map>
27 #include "identity-storage.hpp"
28 
29 namespace ndn {
30 
37 public:
41  virtual
43 
49  virtual bool
50  doesIdentityExist(const Name& identityName);
51 
56  virtual void
57  addIdentity(const Name& identityName);
58 
63  virtual bool
65 
71  virtual bool
72  doesKeyExist(const Name& keyName);
73 
82  virtual void
83  addKey(const Name& keyName, KeyType keyType, const Blob& publicKeyDer);
84 
91  virtual Blob
92  getKey(const Name& keyName);
93 
98  virtual void
99  activateKey(const Name& keyName);
100 
105  virtual void
106  deactivateKey(const Name& keyName);
107 
113  virtual bool
114  doesCertificateExist(const Name& certificateName);
115 
122  virtual void
123  addCertificate(const IdentityCertificate& certificate);
124 
131  virtual ptr_lib::shared_ptr<IdentityCertificate>
132  getCertificate(const Name &certificateName);
133 
134 
135  /*****************************************
136  * Get/Set Default *
137  *****************************************/
138 
144  virtual Name
146 
153  virtual Name
154  getDefaultKeyNameForIdentity(const Name& identityName);
155 
163  virtual Name
164  getDefaultCertificateNameForKey(const Name& keyName);
165 
172  virtual void
173  getAllIdentities(std::vector<Name>& nameList, bool isDefault);
174 
182  virtual void
184  (const Name& identityName, std::vector<Name>& nameList, bool isDefault);
185 
193  virtual void
195  (const Name& keyName, std::vector<Name>& nameList, bool isDefault);
196 
202  virtual void
203  setDefaultIdentity(const Name& identityName);
204 
212  virtual void
213  setDefaultKeyNameForIdentity(const Name& keyName, const Name& identityNameCheck = Name());
214 
220  virtual void
221  setDefaultCertificateNameForKey(const Name& keyName, const Name& certificateName);
222 
223  /*****************************************
224  * Delete Methods *
225  *****************************************/
226 
231  virtual void
232  deleteCertificateInfo(const Name& certificateName);
233 
238  virtual void
239  deletePublicKeyInfo(const Name& keyName);
240 
245  virtual void
246  deleteIdentityInfo(const Name& identity);
247 
248 private:
249  class IdentityRecord {
250  public:
251  void
252  setDefaultKey(const ptr_lib::shared_ptr<Name>& key) { defaultKey_ = key; }
253 
254  bool
255  hasDefaultKey() const { return !!defaultKey_; }
256 
257  const Name&
258  getDefaultKey() const { return *defaultKey_; }
259 
260  private:
261  ptr_lib::shared_ptr<Name> defaultKey_;
262  };
263 
264  class KeyRecord {
265  public:
266  KeyRecord(KeyType keyType, const Blob &keyDer)
267  : keyType_(keyType), keyDer_(keyDer)
268  {
269  }
270 
271  const KeyType getKeyType() const { return keyType_; }
272 
273  const Blob& getKeyDer() { return keyDer_; }
274 
275  void
276  setDefaultCertificate(const ptr_lib::shared_ptr<Name>& certificate)
277  {
278  defaultCertificate_ = certificate;
279  }
280 
281  bool
282  hasDefaultCertificate() const { return !!defaultCertificate_; }
283 
284  const Name&
285  getDefaultCertificate() const { return *defaultCertificate_; }
286 
287  private:
288  KeyType keyType_;
289  Blob keyDer_;
290  ptr_lib::shared_ptr<Name> defaultCertificate_;
291  };
292 
293  std::map<std::string, IdentityRecord>
294  identityStore_;
295  std::string defaultIdentity_;
296  std::map<std::string, ptr_lib::shared_ptr<KeyRecord> > keyStore_;
297  std::map<std::string, Blob> certificateStore_;
298 };
299 
300 }
301 
302 #endif
virtual Name getDefaultCertificateNameForKey(const Name &keyName)
Get the default certificate name for the specified key.
Definition: memory-identity-storage.cpp:179
Copyright (C) 2013-2016 Regents of the University of California.
Definition: common.hpp:35
virtual void setDefaultIdentity(const Name &identityName)
Set the default identity.
Definition: memory-identity-storage.cpp:221
virtual void getAllKeyNamesOfIdentity(const Name &identityName, std::vector< Name > &nameList, bool isDefault)
Append all the key names of a particular identity to the nameList.
Definition: memory-identity-storage.cpp:204
virtual ptr_lib::shared_ptr< IdentityCertificate > getCertificate(const Name &certificateName)
Get a certificate from the identity storage.
Definition: memory-identity-storage.cpp:137
Definition: identity-certificate.hpp:30
virtual ptr_lib::shared_ptr< IdentityCertificate > getDefaultCertificate()
Get the certificate of the default identity.
Definition: identity-storage.cpp:76
virtual void setDefaultCertificateNameForKey(const Name &keyName, const Name &certificateName)
Set the default key name for the specified identity.
Definition: memory-identity-storage.cpp:248
virtual void deactivateKey(const Name &keyName)
Deactivate a key.
Definition: memory-identity-storage.cpp:106
virtual void deleteCertificateInfo(const Name &certificateName)
Delete a certificate.
Definition: memory-identity-storage.cpp:259
virtual bool revokeIdentity()
Revoke the identity.
Definition: memory-identity-storage.cpp:55
virtual bool doesKeyExist(const Name &keyName)
Check if the specified key already exists.
Definition: memory-identity-storage.cpp:63
MemoryIdentityStorage extends IdentityStorage and implements its methods to store identity...
Definition: memory-identity-storage.hpp:36
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:40
IdentityStorage is a base class for the storage of identity, public keys and certificates.
Definition: identity-storage.hpp:39
A Blob holds a pointer to an immutable byte array implemented as const std::vector.
Definition: blob.hpp:42
virtual Name getDefaultIdentity()
Get the default identity.
Definition: memory-identity-storage.cpp:155
virtual bool doesCertificateExist(const Name &certificateName)
Check if the specified certificate already exists.
Definition: memory-identity-storage.cpp:114
virtual bool doesIdentityExist(const Name &identityName)
Check if the specified identity already exists.
Definition: memory-identity-storage.cpp:39
virtual Name getDefaultKeyNameForIdentity(const Name &identityName)
Get the default key name for the specified identity.
Definition: memory-identity-storage.cpp:164
virtual void addIdentity(const Name &identityName)
Add a new identity.
Definition: memory-identity-storage.cpp:45
virtual void setDefaultKeyNameForIdentity(const Name &keyName, const Name &identityNameCheck=Name())
Set a key as the default key of an identity.
Definition: memory-identity-storage.cpp:233
virtual ~MemoryIdentityStorage()
The virtual Destructor.
Definition: memory-identity-storage.cpp:34
virtual void deleteIdentityInfo(const Name &identity)
Delete an identity and related public keys and certificates.
Definition: memory-identity-storage.cpp:275
virtual void addKey(const Name &keyName, KeyType keyType, const Blob &publicKeyDer)
Add a public key to the identity storage.
Definition: memory-identity-storage.cpp:69
virtual void deletePublicKeyInfo(const Name &keyName)
Delete a public key and related certificates.
Definition: memory-identity-storage.cpp:267
virtual void addCertificate(const IdentityCertificate &certificate)
Add a certificate to the identity storage.
Definition: memory-identity-storage.cpp:120
virtual Blob getKey(const Name &keyName)
Get the public key DER blob from the identity storage.
Definition: memory-identity-storage.cpp:85
virtual void activateKey(const Name &keyName)
Activate a key.
Definition: memory-identity-storage.cpp:98
virtual void getAllIdentities(std::vector< Name > &nameList, bool isDefault)
Append all the identity names to the nameList.
Definition: memory-identity-storage.cpp:195
virtual void getAllCertificateNamesOfKey(const Name &keyName, std::vector< Name > &nameList, bool isDefault)
Append all the certificate names of a particular key name to the nameList.
Definition: memory-identity-storage.cpp:213