24 #ifndef NDN_CONFIG_POLICY_MANAGER_HPP
25 #define NDN_CONFIG_POLICY_MANAGER_HPP
30 #include "certificate-cache.hpp"
31 #include "../v2/certificate-cache-v2.hpp"
32 #include "policy-manager.hpp"
35 class TestVerificationRules_NameRelation_Test;
36 class TestVerificationRules_SimpleRegex_Test;
37 class TestVerificationRules_Hierarchical_Test;
38 class TestVerificationRules_HyperRelation_Test;
43 class BoostInfoParser;
44 class IdentityCertificate;
87 (
const std::string& configFileName =
"",
88 const ptr_lib::shared_ptr<CertificateCache>& certificateCache =
89 ptr_lib::shared_ptr<CertificateCache>(),
int searchDepth = 5,
91 int maxTrackedKeys = 1000);
113 (
const std::string& configFileName,
114 const ptr_lib::shared_ptr<CertificateCacheV2>& certificateCache,
116 Milliseconds keyTimestampTtl = 3600000,
int maxTrackedKeys = 1000);
136 load(
const std::string& configFileName);
145 load(
const std::string& input,
const std::string& inputName);
208 virtual ptr_lib::shared_ptr<ValidationRequest>
210 (
const ptr_lib::shared_ptr<Data>& data,
int stepCount,
232 virtual ptr_lib::shared_ptr<ValidationRequest>
234 (
const ptr_lib::shared_ptr<Interest>& interest,
int stepCount,
261 friend TestVerificationRules_NameRelation_Test;
262 friend TestVerificationRules_SimpleRegex_Test;
263 friend TestVerificationRules_Hierarchical_Test;
264 friend TestVerificationRules_HyperRelation_Test;
270 class TrustAnchorRefreshManager {
272 TrustAnchorRefreshManager(
bool isSecurityV1)
273 : isSecurityV1_(isSecurityV1)
277 static ptr_lib::shared_ptr<IdentityCertificate>
278 loadIdentityCertificateFromFile(
const std::string& filename);
280 static ptr_lib::shared_ptr<CertificateV2>
281 loadCertificateV2FromFile(
const std::string& filename);
283 ptr_lib::shared_ptr<IdentityCertificate>
284 getCertificate(
Name certificateName)
const;
286 ptr_lib::shared_ptr<CertificateV2>
287 getCertificateV2(
Name certificateName)
const;
290 addDirectory(
const std::string& directoryName,
Milliseconds refreshPeriod);
296 class DirectoryInfo {
299 (
const std::vector<std::string>& certificateNames,
301 : certificateNames_(certificateNames), nextRefresh_(nextRefresh),
302 refreshPeriod_(refreshPeriod)
306 std::vector<std::string> certificateNames_;
316 std::map<std::string, ptr_lib::shared_ptr<DirectoryInfo> > refreshDirectories_;
326 loadTrustAnchorCertificates();
344 (
const Name& signatureName,
const Name& objectName,
355 ptr_lib::shared_ptr<IdentityCertificate>
356 lookupCertificate(
const std::string& certID,
bool isPath);
366 ptr_lib::shared_ptr<CertificateV2>
367 lookupCertificateV2(
const std::string& certID,
bool isPath);
379 findMatchingRule(
const Name& objName,
const std::string& matchType)
const;
396 (
const Name& name,
const Name& matchName,
const std::string& matchRelation);
407 static ptr_lib::shared_ptr<Signature>
410 std::string& failureReason);
422 interestTimestampIsFresh
424 std::string& failureReason)
const;
453 std::string& failureReason)
const;
471 ptr_lib::shared_ptr<Interest>
472 getCertificateInterest
473 (
int stepCount,
const std::string& matchType,
const Name& objectName,
474 const Signature* signature, std::string& failureReason);
489 onCertificateDownloadComplete
490 (
const ptr_lib::shared_ptr<Data> &data,
491 const ptr_lib::shared_ptr<Data> &originalData,
int stepCount,
508 onCertificateDownloadCompleteForInterest
509 (
const ptr_lib::shared_ptr<Data> &data,
510 const ptr_lib::shared_ptr<Interest> &originalInterest,
int stepCount,
516 ptr_lib::shared_ptr<CertificateCache> certificateCache_;
517 ptr_lib::shared_ptr<CertificateCacheV2> certificateCacheV2_;
524 std::map<std::string, std::string> fixedCertificateCache_;
528 std::map<std::string, MillisecondsSince1970> keyTimestamps_;
529 ptr_lib::shared_ptr<BoostInfoParser> config_;
530 bool requiresVerification_;
531 ptr_lib::shared_ptr<TrustAnchorRefreshManager> refreshManager_;
double Milliseconds
A time interval represented as the number of milliseconds.
Definition: common.hpp:114
A ConfigPolicyManager manages trust according to a configuration file in the Validator Configuration ...
Definition: config-policy-manager.hpp:61
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:53
virtual bool skipVerifyAndTrust(const Data &data)
Check if the received data packet can escape from verification and be trusted as valid.
void reset()
Reset the certificate cache and other fields to the constructor state.
virtual bool requireVerify(const Data &data)
Check if this PolicyManager has a verification rule for the received data.
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 will act on the rules specified in the configuration and downl...
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:46
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:40
A Signature is an abstract base class providing methods to work with the signature information in a D...
Definition: signature.hpp:35
An Interest holds a Name and other fields for an interest.
Definition: interest.hpp:43
void load(const std::string &configFileName)
Call reset() and load the configuration rules from the file.
virtual ptr_lib::shared_ptr< ValidationRequest > checkVerificationPolicy(const ptr_lib::shared_ptr< Data > &data, int stepCount, const OnVerified &onVerified, const OnDataValidationFailed &onValidationFailed)
Check whether the received data packet complies with the verification policy, and get the indication ...
double MillisecondsSince1970
The calendar time represented as the number of milliseconds since 1/1/1970.
Definition: common.hpp:119
func_lib::function< void(const ptr_lib::shared_ptr< Interest > &interest, const std::string &reason)> OnInterestValidationFailed
An OnInterestValidationFailed function object is used to pass a callback to verifyInterest to report ...
Definition: validation-request.hpp:61
A CertificateCacheV2 holds other user's verified certificates in security v2 format CertificateV2...
Definition: certificate-cache-v2.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
func_lib::function< void(const ptr_lib::shared_ptr< Data > &data, const std::string &reason)> OnDataValidationFailed
An OnDataValidationFailed function object is used to pass a callback to verifyData to report a failed...
Definition: validation-request.hpp:41
A CertificateCache is used to save other users' certificate during verification.
Definition: certificate-cache.hpp:36