All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
certificate-fetcher.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
23 #ifndef NDN_CERTIFICATE_FETCHER_HPP
24 #define NDN_CERTIFICATE_FETCHER_HPP
25 
26 #include "certificate-storage.hpp"
27 #include "certificate-request.hpp"
28 #include "validation-state.hpp"
29 
30 namespace ndn {
31 
37 public:
38  typedef func_lib::function<void
39  (const ptr_lib::shared_ptr<CertificateV2>& certificate,
40  const ptr_lib::shared_ptr<ValidationState>& state)> ValidationContinuation;
41 
43  : certificateStorage_(0)
44  {
45  }
46 
47  virtual
49 
56  virtual void
57  setCertificateStorage(CertificateStorage& certificateStorage);
58 
78  void
79  fetch
80  (const ptr_lib::shared_ptr<CertificateRequest>& certificateRequest,
81  const ptr_lib::shared_ptr<ValidationState>& state,
82  const ValidationContinuation& continueValidation);
83 
84 protected:
95  virtual void
96  doFetch
97  (const ptr_lib::shared_ptr<CertificateRequest>& certificateRequest,
98  const ptr_lib::shared_ptr<ValidationState>& state,
99  const ValidationContinuation& continueValidation) = 0;
100 
101 private:
105  void
106  continueFetch
107  (const ptr_lib::shared_ptr<CertificateV2>& certificate,
108  const ptr_lib::shared_ptr<ValidationState>& state,
109  const ValidationContinuation& continueValidation)
110  {
111  certificateStorage_->cacheUnverifiedCertificate(*certificate);
112  continueValidation(certificate, state);
113  }
114 
115  // Disable the copy constructor and assignment operator.
117  CertificateFetcher& operator=(const CertificateFetcher& other);
118 
119 protected:
120  CertificateStorage* certificateStorage_;
121 };
122 
123 }
124 
125 #endif
void fetch(const ptr_lib::shared_ptr< CertificateRequest > &certificateRequest, const ptr_lib::shared_ptr< ValidationState > &state, const ValidationContinuation &continueValidation)
Asynchronously fetch a certificate.
Definition: certificate-fetcher.cpp:44
virtual void setCertificateStorage(CertificateStorage &certificateStorage)
Assign the certificate storage used to check for known certificates and to cache unverified ones...
Definition: certificate-fetcher.cpp:37
void cacheUnverifiedCertificate(const CertificateV2 &certificate)
Cache the unverified certificate for a period of time (5 minutes).
Definition: certificate-storage.hpp:66
CertificateFetcher is an abstract base class which provides an interface used by the validator to fet...
Definition: certificate-fetcher.hpp:36
The CertificateStorage class stores trusted anchors and has a verified certificate cache...
Definition: certificate-storage.hpp:35
virtual void doFetch(const ptr_lib::shared_ptr< CertificateRequest > &certificateRequest, const ptr_lib::shared_ptr< ValidationState > &state, const ValidationContinuation &continueValidation)=0
An implementation to fetch a certificate asynchronously.