All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
trust-anchor-group.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
23 #ifndef NDN_TRUST_ANCHOR_GROUP_HPP
24 #define NDN_TRUST_ANCHOR_GROUP_HPP
25 
26 #include <set>
27 #include "certificate-v2.hpp"
28 
29 namespace ndn {
30 
32 {
33 public:
34  virtual
36 
41  virtual void
42  add(const CertificateV2& certificate) = 0;
43 
49  virtual void
50  remove(const Name& certificateName) = 0;
51 };
52 
58 {
59 public:
66  (CertificateContainerInterface& certificateContainer, const std::string& id)
67  : certificates_(certificateContainer),
68  id_(id)
69  {
70  }
71 
72  virtual
74 
79  const std::string&
80  getId() const { return id_; }
81 
86  size_t
87  size() const { return anchorNames_.size(); }
88 
92  virtual void
93  refresh();
94 
100  static ptr_lib::shared_ptr<CertificateV2>
101  readCertificate(const std::string& filePath);
102 
103 protected:
104  CertificateContainerInterface& certificates_;
105  std::set<Name> anchorNames_;
106 
107 private:
108  // Disable the copy constructor and assignment operator.
109  TrustAnchorGroup(const TrustAnchorGroup& other);
110  TrustAnchorGroup& operator=(const TrustAnchorGroup& other);
111 
112  std::string id_;
113 };
114 
120 public:
122  (CertificateContainerInterface& certificateContainer, const std::string& id)
123  : TrustAnchorGroup(certificateContainer, id)
124  {
125  }
126 
132  void
133  add(const CertificateV2& certificate);
134 
139  void
140  remove(const Name& certificateName);
141 };
142 
148 public:
184  (CertificateContainerInterface& certificateContainer, const std::string& id,
185  const std::string& path, Milliseconds refreshPeriod,
186  bool isDirectory = false);
187 
191  virtual void
192  refresh();
193 
194 private:
195  void
196  loadCertificate(const std::string& file, std::set<Name>& oldAnchorNames);
197 
198  bool isDirectory_;
199  std::string path_;
200  Milliseconds refreshPeriod_;
201  Milliseconds expireTime_;
202 };
203 
204 }
205 
206 #endif
double Milliseconds
A time interval represented as the number of milliseconds.
Definition: common.hpp:114
const std::string & getId() const
Get the group id given to the constructor.
Definition: trust-anchor-group.hpp:80
The StaticTrustAnchorGroup class extends TrustAnchorGroup to implement a static trust anchor group...
Definition: trust-anchor-group.hpp:119
size_t size() const
Get the number of certificates in the group.
Definition: trust-anchor-group.hpp:87
CertificateV2 represents a certificate following the certificate format naming convention.
Definition: certificate-v2.hpp:81
static ptr_lib::shared_ptr< CertificateV2 > readCertificate(const std::string &filePath)
Read a base-64-encoded certificate from a file.
Definition: trust-anchor-group.cpp:53
DynamicTrustAnchorGroup(CertificateContainerInterface &certificateContainer, const std::string &id, const std::string &path, Milliseconds refreshPeriod, bool isDirectory=false)
Create a dynamic trust anchor group.
Definition: trust-anchor-group.cpp:95
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:40
void add(const CertificateV2 &certificate)
Load the static anchor certificate.
Definition: trust-anchor-group.cpp:76
virtual void refresh()
Request a certificate refresh.
Definition: trust-anchor-group.cpp:47
The DynamicTrustAnchorGroup class extends TrustAnchorGroup to implement a dynamic trust anchor group...
Definition: trust-anchor-group.hpp:147
TrustAnchorGroup(CertificateContainerInterface &certificateContainer, const std::string &id)
Create a TrustAnchorGroup to use an existing container.
Definition: trust-anchor-group.hpp:66
Definition: trust-anchor-group.hpp:31
virtual void refresh()
Request a certificate refresh.
Definition: trust-anchor-group.cpp:112
TrustAnchorGroup represents a group of trust anchors which implement the CertificateContainerInterfac...
Definition: trust-anchor-group.hpp:57
virtual void add(const CertificateV2 &certificate)=0
Add the certificate to the container.