basic-identity-storage.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
23 #ifndef NDN_BASIC_IDENTITY_STORAGE_H
24 #define NDN_BASIC_IDENTITY_STORAGE_H
25 
26 // Only compile if ndn-cpp-config.h defines NDN_CPP_HAVE_SQLITE3.
27 #include <ndn-cpp/ndn-cpp-config.h>
28 #ifdef NDN_CPP_HAVE_SQLITE3
29 
30 #include <sqlite3.h>
31 #include "../../common.hpp"
32 #include "identity-storage.hpp"
33 
34 namespace ndn
35 {
36 
41 class BasicIdentityStorage : public IdentityStorage {
42 public:
48  BasicIdentityStorage(const std::string& databaseFilePath = "");
49 
53  virtual
54  ~BasicIdentityStorage();
55 
61  virtual bool
62  doesIdentityExist(const Name& identityName);
63 
68  virtual void
69  addIdentity(const Name& identityName);
70 
75  virtual bool
76  revokeIdentity();
77 
83  virtual bool
84  doesKeyExist(const Name& keyName);
85 
94  virtual void
95  addKey(const Name& keyName, KeyType keyType, const Blob& publicKeyDer);
96 
102  virtual Blob
103  getKey(const Name& keyName);
104 
109  virtual void
110  activateKey(const Name& keyName);
111 
116  virtual void
117  deactivateKey(const Name& keyName);
118 
124  virtual bool
125  doesCertificateExist(const Name& certificateName);
126 
131  void
132  addAnyCertificate (const IdentityCertificate& certificate);
133 
139  virtual void
140  addCertificate(const IdentityCertificate& certificate);
141 
148  virtual ptr_lib::shared_ptr<IdentityCertificate>
149  getCertificate(const Name &certificateName, bool allowAny = false);
150 
151 
152  /*****************************************
153  * Get/Set Default *
154  *****************************************/
155 
161  virtual Name
162  getDefaultIdentity();
163 
170  virtual Name
171  getDefaultKeyNameForIdentity(const Name& identityName);
172 
180  virtual Name
181  getDefaultCertificateNameForKey(const Name& keyName);
182 
190  virtual void
191  getAllKeyNamesOfIdentity
192  (const Name& identityName, std::vector<Name>& nameList, bool isDefault);
193 
199  virtual void
200  setDefaultIdentity(const Name& identityName);
201 
209  virtual void
210  setDefaultKeyNameForIdentity(const Name& keyName, const Name& identityNameCheck = Name());
211 
217  virtual void
218  setDefaultCertificateNameForKey(const Name& keyName, const Name& certificateName);
219 
220  /*****************************************
221  * Delete Methods *
222  *****************************************/
223 
228  virtual void
229  deleteCertificateInfo(const Name& certificateName);
230 
235  virtual void
236  deletePublicKeyInfo(const Name& keyName);
237 
242  virtual void
243  deleteIdentityInfo(const Name& identity);
244 
245 private:
246 
247  void
248  updateKeyStatus(const Name& keyName, bool isActive);
249 
250  sqlite3 *database_;
251 };
252 
253 }
254 
255 #endif // NDN_CPP_HAVE_SQLITE3
256 
257 #endif
Copyright (C) 2013-2016 Regents of the University of California.
Definition: common.hpp:35