ndn::security::v2::CertificateBundleFetcher Class Reference

Fetch certificate bundle from the network. More...

#include <ndn-cxx/security/certificate-bundle-fetcher.hpp>

+ Inheritance diagram for ndn::security::v2::CertificateBundleFetcher:
+ Collaboration diagram for ndn::security::v2::CertificateBundleFetcher:

Public Types

using ValidationContinuation = std::function< void(const Certificate &cert, const shared_ptr< ValidationState > &state)>
 

Public Member Functions

 CertificateBundleFetcher (unique_ptr< CertificateFetcher > inner, Face &face)
 
void fetch (const shared_ptr< CertificateRequest > &certRequest, const shared_ptr< ValidationState > &state, const ValidationContinuation &continueValidation)
 Asynchronously fetch certificate. More...
 
time::milliseconds getBundleInterestLifetime () const
 
void setBundleInterestLifetime (time::milliseconds time)
 Set the lifetime of certificate bundle interest. More...
 
void setCertificateStorage (CertificateStorage &certStorage) override
 Set the storage for this and inner certificate fetcher. More...
 

Protected Member Functions

void doFetch (const shared_ptr< CertificateRequest > &certRequest, const shared_ptr< ValidationState > &state, const ValidationContinuation &continueValidation) override
 Asynchronous certificate fetching implementation. More...
 

Protected Attributes

CertificateStoragem_certStorage
 

Detailed Description

Fetch certificate bundle from the network.

Currently bundle fetching is attempted only for Data validation. This may change in the future. Bundle fetching always goes to the infrastructure regardless of the inner fetcher. Inner fetcher is used when the bundle interest times out or returns a Nack or when additional certificates are needed for validation.

See also
https://redmine.named-data.net/projects/ndn-cxx/wiki/Certificate_Bundle_Packet_Format

Definition at line 43 of file certificate-bundle-fetcher.hpp.

Member Typedef Documentation

◆ ValidationContinuation

using ndn::security::v2::CertificateFetcher::ValidationContinuation = std::function<void(const Certificate& cert, const shared_ptr<ValidationState>& state)>
inherited

Definition at line 42 of file certificate-fetcher.hpp.

Constructor & Destructor Documentation

◆ CertificateBundleFetcher()

ndn::security::v2::CertificateBundleFetcher::CertificateBundleFetcher ( unique_ptr< CertificateFetcher inner,
Face face 
)
explicit

Definition at line 39 of file certificate-bundle-fetcher.cpp.

Member Function Documentation

◆ doFetch()

void ndn::security::v2::CertificateBundleFetcher::doFetch ( const shared_ptr< CertificateRequest > &  certRequest,
const shared_ptr< ValidationState > &  state,
const ValidationContinuation continueValidation 
)
overrideprotectedvirtual

Asynchronous certificate fetching implementation.

Implements ndn::security::v2::CertificateFetcher.

Definition at line 68 of file certificate-bundle-fetcher.cpp.

◆ fetch()

void ndn::security::v2::CertificateFetcher::fetch ( const shared_ptr< CertificateRequest > &  certRequest,
const shared_ptr< ValidationState > &  state,
const ValidationContinuation continueValidation 
)
inherited

Asynchronously fetch certificate.

Precondition
m_certStorage != nullptr

If the requested certificate exists in the storage, then this method will immediately call continueValidation with the certification. If certificate is not available, the implementation-specific doFetch will be called to asynchronously fetch certificate. The successfully retrieved certificate will be automatically added to the unverified cache of the certificate storage.

When the requested certificate is retrieved, continueValidation is called. Otherwise, the fetcher implementation call state->failed() with the appropriate error code and diagnostic message.

Definition at line 50 of file certificate-fetcher.cpp.

◆ getBundleInterestLifetime()

time::milliseconds ndn::security::v2::CertificateBundleFetcher::getBundleInterestLifetime ( ) const
Returns
The lifetime of certificate bundle interest

Definition at line 55 of file certificate-bundle-fetcher.cpp.

◆ setBundleInterestLifetime()

void ndn::security::v2::CertificateBundleFetcher::setBundleInterestLifetime ( time::milliseconds  time)

Set the lifetime of certificate bundle interest.

Definition at line 49 of file certificate-bundle-fetcher.cpp.

◆ setCertificateStorage()

void ndn::security::v2::CertificateBundleFetcher::setCertificateStorage ( CertificateStorage certStorage)
overridevirtual

Set the storage for this and inner certificate fetcher.

Reimplemented from ndn::security::v2::CertificateFetcher.

Definition at line 61 of file certificate-bundle-fetcher.cpp.

Member Data Documentation

◆ m_certStorage

CertificateStorage* ndn::security::v2::CertificateFetcher::m_certStorage
protectedinherited

Definition at line 84 of file certificate-fetcher.hpp.