validation-state.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
22 #ifndef NDN_SECURITY_V2_VALIDATION_STATE_HPP
23 #define NDN_SECURITY_V2_VALIDATION_STATE_HPP
24 
25 #include "../../tag-host.hpp"
26 #include "validation-callback.hpp"
27 #include "certificate.hpp"
28 
29 #include <unordered_set>
30 #include <list>
31 
32 namespace ndn {
33 namespace security {
34 namespace v2 {
35 
36 class Validator;
37 
56 class ValidationState : public TagHost, noncopyable
57 {
58 public:
63 
64  virtual
66 
70  virtual void
71  fail(const ValidationError& error) = 0;
72 
76  size_t
77  getDepth() const;
78 
82  bool
83  hasSeenCertificateName(const Name& certName);
84 
95  void
96  addCertificate(const Certificate& cert);
97 
98 private: // Interface intended to be used only by Validator class
104  virtual void
105  verifyOriginalPacket(const Certificate& trustedCert) = 0;
106 
110  virtual void
111  bypassValidation() = 0;
112 
127  const Certificate*
128  verifyCertificateChain(const Certificate& trustedCert);
129 
130 protected:
132 
133 private:
134  std::unordered_set<Name> m_seenCertificateNames;
135 
142  std::list<v2::Certificate> m_certificateChain;
143 
144  friend class Validator;
145 };
146 
151 {
152 public:
159  DataValidationState(const Data& data,
160  const DataValidationSuccessCallback& successCb,
161  const DataValidationFailureCallback& failureCb);
162 
169  ~DataValidationState() final;
170 
171  void
172  fail(const ValidationError& error) final;
173 
177  const Data&
178  getOriginalData() const;
179 
180 private:
181  void
182  verifyOriginalPacket(const Certificate& trustedCert) final;
183 
184  void
185  bypassValidation() final;
186 
187 private:
188  Data m_data;
189  DataValidationSuccessCallback m_successCb;
190  DataValidationFailureCallback m_failureCb;
191 };
192 
197 {
198 public:
205  InterestValidationState(const Interest& interest,
206  const InterestValidationSuccessCallback& successCb,
207  const InterestValidationFailureCallback& failureCb);
208 
215  ~InterestValidationState() final;
216 
217  void
218  fail(const ValidationError& error) final;
219 
223  const Interest&
224  getOriginalInterest() const;
225 
226 private:
227  void
228  verifyOriginalPacket(const Certificate& trustedCert) final;
229 
230  void
231  bypassValidation() final;
232 
233 private:
234  Interest m_interest;
237 };
238 
239 } // namespace v2
240 } // namespace security
241 } // namespace ndn
242 
243 #endif // NDN_SECURITY_V2_VALIDATION_STATE_HPP
ValidationState()
Create validation state.
DataValidationState(const Data &data, const DataValidationSuccessCallback &successCb, const DataValidationFailureCallback &failureCb)
Create validation state for data.
Copyright (c) 2013-2016 Regents of the University of California.
Definition: common.hpp:74
The certificate following the certificate format naming convention.
void fail(const ValidationError &error) final
Call the failure callback.
function< void(const Data &data)> DataValidationSuccessCallback
Callback to report a successful Data validation.
bool hasSeenCertificateName(const Name &certName)
Check if certName has been previously seen and record the supplied name.
ndn security v2 Validator
Base class to store tag information (e.g., inside Interest and Data packets)
Definition: tag-host.hpp:34
void addCertificate(const Certificate &cert)
Add cert to the top of the certificate chain.
represents an Interest packet
Definition: interest.hpp:42
function< void(const Data &data, const ValidationError &error)> DataValidationFailureCallback
Callback to report a failed Data validation.
Validation state for a data packet.
Validation state for an interest packet.
Name abstraction to represent an absolute name.
Definition: name.hpp:46
void fail(const ValidationError &error) final
Call the failure callback.
function< void(const Interest &interest, const ValidationError &error)> InterestValidationFailureCallback
Callback to report a failed Interest validation.
InterestValidationState(const Interest &interest, const InterestValidationSuccessCallback &successCb, const InterestValidationFailureCallback &failureCb)
Create validation state for interest.
Validation error code and optional detailed error message.
virtual void fail(const ValidationError &error)=0
Call the failure callback.
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.