v2/validator.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
22 #ifndef NDN_SECURITY_V2_VALIDATOR_HPP
23 #define NDN_SECURITY_V2_VALIDATOR_HPP
24 
25 #include "certificate-fetcher.hpp"
26 #include "certificate-request.hpp"
27 #include "certificate-storage.hpp"
28 #include "validation-callback.hpp"
29 #include "validation-policy.hpp"
30 #include "validation-state.hpp"
31 
32 namespace ndn {
33 
34 class Face;
35 
36 namespace security {
37 namespace v2 {
38 
62 {
63 public:
70  Validator(unique_ptr<ValidationPolicy> policy, unique_ptr<CertificateFetcher> certFetcher);
71 
72  ~Validator();
73 
77  void
78  setMaxDepth(size_t depth);
79 
83  size_t
84  getMaxDepth() const;
85 
91  void
92  validate(const Data& data,
93  const DataValidationSuccessCallback& successCb,
94  const DataValidationFailureCallback& failureCb);
95 
101  void
102  validate(const Interest& interest,
103  const InterestValidationSuccessCallback& successCb,
104  const InterestValidationFailureCallback& failureCb);
105 
106 public: // anchor management
115  void
116  loadAnchor(const std::string& groupId, Certificate&& cert);
117 
129  void
130  loadAnchor(const std::string& groupId, const std::string& certfilePath,
131  time::nanoseconds refreshPeriod, bool isDir = false);
132 
138  void
140 
141 private: // Common validator operations
148  void
149  validate(const Certificate& cert, const shared_ptr<ValidationState>& state);
150 
157  void
158  requestCertificate(const shared_ptr<CertificateRequest>& certRequest,
159  const shared_ptr<ValidationState>& state);
160 
161 private:
162  unique_ptr<ValidationPolicy> m_policy;
163  unique_ptr<CertificateFetcher> m_certFetcher;
164  size_t m_maxDepth;
165 };
166 
167 } // namespace v2
168 } // namespace security
169 } // namespace ndn
170 
171 #endif // NDN_SECURITY_V2_VALIDATOR_HPP
Copyright (c) 2013-2016 Regents of the University of California.
Definition: common.hpp:74
The certificate following the certificate format naming convention.
function< void(const Data &data)> DataValidationSuccessCallback
Callback to report a successful Data validation.
void cacheVerifiedCertificate(Certificate &&cert)
Cache verified cert a period of time (1 hour)
represents an Interest packet
Definition: interest.hpp:42
function< void(const Data &data, const ValidationError &error)> DataValidationFailureCallback
Callback to report a failed Data validation.
void setMaxDepth(size_t depth)
Set the maximum depth of the certificate chain.
Storage for trusted anchors, verified certificate cache, and unverified certificate cache...
void validate(const Data &data, const DataValidationSuccessCallback &successCb, const DataValidationFailureCallback &failureCb)
Asynchronously validate data.
void loadAnchor(const std::string &groupId, Certificate &&cert)
load static trust anchor.
Validator(unique_ptr< ValidationPolicy > policy, unique_ptr< CertificateFetcher > certFetcher)
Validator constructor.
function< void(const Interest &interest, const ValidationError &error)> InterestValidationFailureCallback
Callback to report a failed Interest validation.
represents a Data packet
Definition: data.hpp:37
function< void(const Interest &interest)> InterestValidationSuccessCallback
Callback to report a successful Interest validation.
Interface for validating data and interest packets.