ndn::security::v2::ValidationState Class Referenceabstract

Validation state. More...

#include <validation-state.hpp>

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

Public Member Functions

 ValidationState ()
 Create validation state. More...
 
virtual ~ValidationState ()
 
void addCertificate (const Certificate &cert)
 Add cert to the top of the certificate chain. More...
 
virtual void fail (const ValidationError &error)=0
 Call the failure callback. More...
 
size_t getDepth () const
 
boost::logic::tribool getOutcome () const
 
template<typename T >
shared_ptr< T > getTag () const
 get a tag item More...
 
bool hasSeenCertificateName (const Name &certName)
 Check if certName has been previously seen and record the supplied name. More...
 
template<typename T >
void removeTag () const
 remove tag item More...
 
template<typename T >
void setTag (shared_ptr< T > tag) const
 set a tag item More...
 

Protected Attributes

boost::logic::tribool m_outcome
 

Friends

class Validator
 

Detailed Description

Validation state.

One instance of the validation state is kept for the validation of the whole certificate chain.

The state collects the certificate chain that adheres to the selected validation policy to validate data or interest packets. Certificate, data, and interest packet signatures are verified only after the validator determines that the chain terminates with a trusted certificate (a trusted anchor or a previously validated certificate). This model allows filtering out invalid certificate chains without incurring (costly) cryptographic signature verification overhead and mitigates some forms of denial-of-service attacks.

Validation policy and/or key fetcher may add custom information associated with the validation state using tags (

See also
TagHost)
DataValidationState, InterestValidationState

Definition at line 58 of file validation-state.hpp.

Constructor & Destructor Documentation

ndn::security::v2::ValidationState::ValidationState ( )

Create validation state.

Definition at line 36 of file validation-state.cpp.

ndn::security::v2::ValidationState::~ValidationState ( )
virtual

Definition at line 41 of file validation-state.cpp.

Member Function Documentation

void ndn::security::v2::ValidationState::addCertificate ( const Certificate cert)

Add cert to the top of the certificate chain.

If m_certificateChain is empty, cert should be the signer of the original packet. If m_certificateChain is not empty, cert should be the signer of m_certificateChain.front().

Postcondition
m_certificateChain.front() == cert
Note
This function does not verify the signature bits.

Definition at line 60 of file validation-state.cpp.

virtual void ndn::security::v2::ValidationState::fail ( const ValidationError error)
pure virtual
size_t ndn::security::v2::ValidationState::getDepth ( ) const
Returns
Depth of certificate chain

Definition at line 48 of file validation-state.cpp.

boost::logic::tribool ndn::security::v2::ValidationState::getOutcome ( ) const
inline

Definition at line 70 of file validation-state.hpp.

template<typename T >
shared_ptr< T > ndn::TagHost::getTag ( ) const
inlineinherited

get a tag item

Template Parameters
Ttype of the tag, which must be a subclass of ndn::Tag
Return values
nullptrif no Tag of type T is stored

Definition at line 67 of file tag-host.hpp.

bool ndn::security::v2::ValidationState::hasSeenCertificateName ( const Name certName)

Check if certName has been previously seen and record the supplied name.

Definition at line 54 of file validation-state.cpp.

template<typename T >
void ndn::TagHost::removeTag ( ) const
inlineinherited

remove tag item

Note
Tag can be removed even on a const tag host instance

Definition at line 94 of file tag-host.hpp.

template<typename T >
void ndn::TagHost::setTag ( shared_ptr< T >  tag) const
inlineinherited

set a tag item

Template Parameters
Ttype of the tag, which must be a subclass of ndn::Tag
Note
Tag can be set even on a const tag host instance

Definition at line 80 of file tag-host.hpp.

Friends And Related Function Documentation

friend class Validator
friend

Definition at line 152 of file validation-state.hpp.

Member Data Documentation

boost::logic::tribool ndn::security::v2::ValidationState::m_outcome
protected

Definition at line 139 of file validation-state.hpp.