All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
validation-policy.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
23 #ifndef NDN_VALIDATION_POLICY_HPP
24 #define NDN_VALIDATION_POLICY_HPP
25 
26 #include "validation-state.hpp"
27 #include "certificate-request.hpp"
28 #include "../../signature.hpp"
29 
30 // Give friend access to the tests.
31 class TestValidator_ConstructorSetValidator_Test;
32 
33 namespace ndn {
34 
35 class Validator;
36 
42 public:
43  typedef func_lib::function<void
44  (const ptr_lib::shared_ptr<CertificateRequest>& certificateRequest,
45  const ptr_lib::shared_ptr<ValidationState>& state)> ValidationContinuation;
46 
48  : validator_(0)
49  {
50  }
51 
52  virtual
54 
67  void
68  setInnerPolicy(const ptr_lib::shared_ptr<ValidationPolicy>& innerPolicy);
69 
74  bool
75  hasInnerPolicy() const { return !!innerPolicy_; }
76 
83  getInnerPolicy() { return *innerPolicy_; }
84 
90  void
91  setValidator(Validator& validator)
92  {
93  validator_ = &validator;
94  if (innerPolicy_)
95  innerPolicy_->setValidator(validator);
96  }
97 
116  virtual void
118  (const Data& data, const ptr_lib::shared_ptr<ValidationState>& state,
119  const ValidationContinuation& continueValidation) = 0;
120 
132  virtual void
134  (const Interest& interest, const ptr_lib::shared_ptr<ValidationState>& state,
135  const ValidationContinuation& continueValidation) = 0;
136 
149  virtual void
151  (const CertificateV2& certificate,
152  const ptr_lib::shared_ptr<ValidationState>& state,
153  const ValidationContinuation& continueValidation);
154 
162  static Name
164  {
165  return getKeyLocatorNameFromSignature(*data.getSignature(), state);
166  }
167 
176  static Name
177  getKeyLocatorName(const Interest& interest, ValidationState& state);
178 
179 private:
180  // Disable the copy constructor and assignment operator.
181  ValidationPolicy(const ValidationPolicy& other);
182  ValidationPolicy& operator=(const ValidationPolicy& other);
183 
187  static Name
188  getKeyLocatorNameFromSignature
189  (const Signature& signatureInfo, ValidationState& state);
190 
191 protected:
192  // Give friend access to the tests.
193  friend TestValidator_ConstructorSetValidator_Test;
194 
195  Validator* validator_;
196  ptr_lib::shared_ptr<ValidationPolicy> innerPolicy_;
197 };
198 
199 }
200 
201 #endif
Definition: data.hpp:37
static Name getKeyLocatorName(const Data &data, ValidationState &state)
Extract the KeyLocator Name from a Data packet.
Definition: validation-policy.hpp:163
CertificateV2 represents a certificate following the certificate format naming convention.
Definition: certificate-v2.hpp:81
ValidationPolicy is an abstract base class that implements a validation policy for Data and Interest ...
Definition: validation-policy.hpp:41
virtual void checkPolicy(const Data &data, const ptr_lib::shared_ptr< ValidationState > &state, const ValidationContinuation &continueValidation)=0
Check the Data packet against the policy.
virtual void checkCertificatePolicy(const CertificateV2 &certificate, const ptr_lib::shared_ptr< ValidationState > &state, const ValidationContinuation &continueValidation)
Check the certificate against the policy.
Definition: validation-policy.cpp:50
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:40
A Signature is an abstract base class providing methods to work with the signature information in a D...
Definition: signature.hpp:35
An Interest holds a Name and other fields for an interest.
Definition: interest.hpp:43
void setValidator(Validator &validator)
Set the validator to which this policy is associated.
Definition: validation-policy.hpp:91
bool hasInnerPolicy() const
Check if the inner policy is set.
Definition: validation-policy.hpp:75
void setInnerPolicy(const ptr_lib::shared_ptr< ValidationPolicy > &innerPolicy)
Set the inner policy.
Definition: validation-policy.cpp:34
The Validator class provides an interface for validating data and interest packets.
Definition: validator.hpp:55
ValidationPolicy & getInnerPolicy()
Get the inner policy.
Definition: validation-policy.hpp:83
ValidationState is an abstract base class for DataValidationState and InterestValidationState.
Definition: validation-state.hpp:80