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 
90  virtual Blob
91  getKey(const Name& keyName);
92 
97  virtual void
98  activateKey(const Name& keyName);
99 
104  virtual void
105  deactivateKey(const Name& keyName);
106 
112  virtual bool
113  doesCertificateExist(const Name& certificateName);
114 
120  virtual void
121  addCertificate(const IdentityCertificate& certificate);
122 
130  virtual ptr_lib::shared_ptr<IdentityCertificate>
131  getCertificate(const Name &certificateName, bool allowAny = false);
132 
133 
134  /*****************************************
135  * Get/Set Default *
136  *****************************************/
137 
143  virtual Name
145 
152  virtual Name
153  getDefaultKeyNameForIdentity(const Name& identityName);
154 
162  virtual Name
163  getDefaultCertificateNameForKey(const Name& keyName);
164 
172  virtual void
174  (const Name& identityName, std::vector<Name>& nameList, bool isDefault);
175 
181  virtual void
182  setDefaultIdentity(const Name& identityName);
183 
191  virtual void
192  setDefaultKeyNameForIdentity(const Name& keyName, const Name& identityNameCheck = Name());
193 
199  virtual void
200  setDefaultCertificateNameForKey(const Name& keyName, const Name& certificateName);
201 
202  /*****************************************
203  * Delete Methods *
204  *****************************************/
205 
210  virtual void
211  deleteCertificateInfo(const Name& certificateName);
212 
217  virtual void
218  deletePublicKeyInfo(const Name& keyName);
219 
224  virtual void
225  deleteIdentityInfo(const Name& identity);
226 
227 private:
228  class IdentityRecord {
229  public:
230  void
231  setDefaultKey(const ptr_lib::shared_ptr<Name>& key) { defaultKey_ = key; }
232 
233  bool
234  hasDefaultKey() const { return !!defaultKey_; }
235 
236  const Name&
237  getDefaultKey() const { return *defaultKey_; }
238 
239  private:
240  ptr_lib::shared_ptr<Name> defaultKey_;
241  };
242 
243  class KeyRecord {
244  public:
245  KeyRecord(KeyType keyType, const Blob &keyDer)
246  : keyType_(keyType), keyDer_(keyDer)
247  {
248  }
249 
250  const KeyType getKeyType() const { return keyType_; }
251 
252  const Blob& getKeyDer() { return keyDer_; }
253 
254  void
255  setDefaultCertificate(const ptr_lib::shared_ptr<Name>& certificate)
256  {
257  defaultCertificate_ = certificate;
258  }
259 
260  bool
261  hasDefaultCertificate() const { return !!defaultCertificate_; }
262 
263  const Name&
264  getDefaultCertificate() const { return *defaultCertificate_; }
265 
266  private:
267  KeyType keyType_;
268  Blob keyDer_;
269  ptr_lib::shared_ptr<Name> defaultCertificate_;
270  };
271 
272  std::map<std::string, IdentityRecord>
273  identityStore_;
274  std::string defaultIdentity_;
275  std::map<std::string, ptr_lib::shared_ptr<KeyRecord> > keyStore_;
276  std::map<std::string, Blob> certificateStore_;
277 };
278 
279 }
280 
281 #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:204
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:196
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:231
virtual void deactivateKey(const Name &keyName)
Deactivate a key.
Definition: memory-identity-storage.cpp:101
virtual void deleteCertificateInfo(const Name &certificateName)
Delete a certificate.
Definition: memory-identity-storage.cpp:242
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:109
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 ptr_lib::shared_ptr< IdentityCertificate > getCertificate(const Name &certificateName, bool allowAny=false)
Get a certificate from the identity storage.
Definition: memory-identity-storage.cpp:138
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:216
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:258
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:250
virtual void addCertificate(const IdentityCertificate &certificate)
Add a certificate to the identity storage.
Definition: memory-identity-storage.cpp:115
virtual Blob getKey(const Name &keyName)
Get the public key DER blob from the identity storage.
Definition: memory-identity-storage.cpp:82
virtual void activateKey(const Name &keyName)
Activate a key.
Definition: memory-identity-storage.cpp:93