24 #ifndef NDN_CONFIG_POLICY_MANAGER_HPP
25 #define NDN_CONFIG_POLICY_MANAGER_HPP
30 #include <ndn-cpp/security/policy/certificate-cache.hpp>
31 #include "policy-manager.hpp"
38 class BoostInfoParser;
39 class IdentityCertificate;
78 (
const std::string& configFileName,
79 const ptr_lib::shared_ptr<CertificateCache>& certificateCache =
80 ptr_lib::shared_ptr<CertificateCache>(),
int searchDepth = 5,
82 int maxTrackedKeys = 1000);
145 virtual ptr_lib::shared_ptr<ValidationRequest>
147 (
const ptr_lib::shared_ptr<Data>& data,
int stepCount,
162 virtual ptr_lib::shared_ptr<ValidationRequest>
164 (
const ptr_lib::shared_ptr<Interest>& interest,
int stepCount,
190 friend class ::TestVerificationRulesFriend;
196 class TrustAnchorRefreshManager {
198 TrustAnchorRefreshManager()
202 static ptr_lib::shared_ptr<IdentityCertificate>
203 loadIdentityCertificateFromFile(
const std::string& filename);
205 ptr_lib::shared_ptr<IdentityCertificate>
206 getCertificate(
Name certificateName)
const
209 return certificateCache_.getCertificate(certificateName);
213 addDirectory(
const std::string& directoryName,
Milliseconds refreshPeriod);
219 class DirectoryInfo {
222 (
const std::vector<std::string>& certificateNames,
224 : certificateNames_(certificateNames), nextRefresh_(nextRefresh),
225 refreshPeriod_(refreshPeriod)
229 std::vector<std::string> certificateNames_;
237 std::map<std::string, ptr_lib::shared_ptr<DirectoryInfo> > refreshDirectories_;
247 loadTrustAnchorCertificates();
273 ptr_lib::shared_ptr<IdentityCertificate>
274 lookupCertificate(
const std::string& certID,
bool isPath);
286 findMatchingRule(
const Name& objName,
const std::string& matchType)
const;
303 (
const Name& name,
const Name& matchName,
const std::string& matchRelation);
312 static ptr_lib::shared_ptr<Signature>
364 ptr_lib::shared_ptr<Interest>
365 getCertificateInterest
366 (
int stepCount,
const std::string& matchType,
const Name& objectName,
382 onCertificateDownloadComplete
383 (
const ptr_lib::shared_ptr<Data> &data,
384 const ptr_lib::shared_ptr<Data> &originalData,
int stepCount,
400 onCertificateDownloadCompleteForInterest
401 (
const ptr_lib::shared_ptr<Data> &data,
402 const ptr_lib::shared_ptr<Interest> &originalInterest,
int stepCount,
406 ptr_lib::shared_ptr<CertificateCache> certificateCache_;
413 std::map<std::string, std::string> fixedCertificateCache_;
417 std::map<std::string, MillisecondsSince1970> keyTimestamps_;
418 ptr_lib::shared_ptr<BoostInfoParser> config_;
419 bool requiresVerification_;
420 TrustAnchorRefreshManager refreshManager_;
double Milliseconds
A time interval represented as the number of milliseconds.
Definition: common.hpp:111
A ConfigPolicyManager manages trust according to a configuration file in the Validator Configuration ...
Definition: config-policy-manager.hpp:56
func_lib::function< void(const ptr_lib::shared_ptr< Interest > &interest)> OnVerifyInterestFailed
An OnVerifyInterestFailed function object is used to pass a callback to verifyInterest to report a fa...
Definition: validation-request.hpp:52
Copyright (C) 2013-2015 Regents of the University of California.
Definition: common.hpp:35
func_lib::function< void(const ptr_lib::shared_ptr< Interest > &interest)> OnVerifiedInterest
An OnVerifiedInterest function object is used to pass a callback to verifyInterest to report a succes...
Definition: validation-request.hpp:45
virtual ptr_lib::shared_ptr< ValidationRequest > checkVerificationPolicy(const ptr_lib::shared_ptr< Data > &data, int stepCount, const OnVerified &onVerified, const OnVerifyFailed &onVerifyFailed)
Check whether the received data packet complies with the verification policy, and get the indication ...
virtual bool skipVerifyAndTrust(const Data &data)
Check if the received data packet can escape from verification and be trusted as valid.
virtual bool requireVerify(const Data &data)
Check if this PolicyManager has a verification rule for the received data.
func_lib::function< void(const ptr_lib::shared_ptr< Data > &data)> OnVerified
An OnVerified function object is used to pass a callback to verifyData to report a successful verific...
Definition: validation-request.hpp:33
BoostInfoTree is provided for compatibility with the Boost INFO property list format used in ndn-cxx...
Definition: boost-info-parser.hpp:45
ConfigPolicyManager(const std::string &configFileName, const ptr_lib::shared_ptr< CertificateCache > &certificateCache=ptr_lib::shared_ptr< CertificateCache >(), int searchDepth=5, Milliseconds graceInterval=3000, Milliseconds keyTimestampTtl=3600000, int maxTrackedKeys=1000)
Create a new ConfigPolicyManager which acts on the rules specified in the configuration file and down...
virtual Name inferSigningIdentity(const Name &dataName)
Infer the signing identity name according to the policy.
virtual ~ConfigPolicyManager()
The virtual destructor.
A Name holds an array of Name::Component and represents an NDN name.
Definition: name.hpp:42
A Signature is an abstract base class providing methods to work with the signature information in a D...
Definition: signature.hpp:36
An Interest holds a Name and other fields for an interest.
Definition: interest.hpp:41
TestVerificationRulesFriend is a friend of ConfigPolicyManager so we can call its private members thr...
Definition: test-verification-rules.cpp:140
double MillisecondsSince1970
The calendar time represented as the number of milliseconds since 1/1/1970.
Definition: common.hpp:116
func_lib::function< void(const ptr_lib::shared_ptr< Data > &data)> OnVerifyFailed
An OnVerifyFailed function object is used to pass a callback to verifyData to report a failed verific...
Definition: validation-request.hpp:38
virtual bool checkSigningPolicy(const Name &dataName, const Name &certificateName)
Override to always indicate that the signing certificate name and data name satisfy the signing polic...
A SignedBlob extends Blob to keep the offsets of a signed portion (e.g., the bytes of Data packet)...
Definition: signed-blob.hpp:34
A PolicyManager is an abstract base class to represent the policy for verifying data packets...
Definition: policy-manager.hpp:37
A CertificateCache is used to save other users' certificate during verification.
Definition: certificate-cache.hpp:36