Adapt sync to use new ndn.cxx api
diff --git a/src/sync-policy-manager.h b/src/sync-policy-manager.h
new file mode 100644
index 0000000..418abc7
--- /dev/null
+++ b/src/sync-policy-manager.h
@@ -0,0 +1,124 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2013, Regents of the University of California
+ * Yingdi Yu
+ *
+ * BSD license, See the LICENSE file for more information
+ *
+ * Author: Yingdi Yu <yingdi@cs.ucla.edu>
+ */
+
+#ifndef SYNC_POLICY_MANAGER_H
+#define SYNC_POLICY_MANAGER_H
+
+#include <ndn.cxx/security/policy/policy-manager.h>
+#include <ndn.cxx/security/policy/identity-policy-rule.h>
+#include <ndn.cxx/security/certificate/identity-certificate.h>
+#include <ndn.cxx/regex/regex.h>
+#include <ndn.cxx/wrapper/wrapper.h>
+#include "specific-policy-rule.h"
+
+
+class SyncPolicyManager : public ndn::security::PolicyManager
+{
+public:
+ SyncPolicyManager(const ndn::Name& signingIdentity,
+ const ndn::Name& signingCertificateName,
+ const ndn::Name& syncPrefix,
+ int m_stepLimit = 3);
+
+ virtual
+ ~SyncPolicyManager();
+
+ bool
+ skipVerifyAndTrust (const ndn::Data& data);
+
+ bool
+ requireVerify (const ndn::Data& data);
+
+ ndn::Ptr<ndn::security::ValidationRequest>
+ checkVerificationPolicy(ndn::Ptr<ndn::Data> data,
+ const int& stepCount,
+ const ndn::DataCallback& verifiedCallback,
+ const ndn::UnverifiedCallback& unverifiedCallback);
+
+ bool
+ checkSigningPolicy(const ndn::Name& dataName,
+ const ndn::Name& certificateName);
+
+ ndn::Name
+ inferSigningIdentity(const ndn::Name& dataName);
+
+ void
+ addTrustAnchor(const ndn::security::IdentityCertificate& identityCertificate, bool isIntroducer);
+
+ void
+ addChatDataRule(const ndn::Name& prefix,
+ const ndn::security::IdentityCertificate& identityCertificate,
+ bool isIntroducer);
+
+ inline void
+ setWrapper(ndn::Wrapper* handler)
+ { m_handler = handler; }
+
+private:
+ ndn::Ptr<ndn::security::ValidationRequest>
+ prepareIntroducerRequest(const ndn::Name& keyName,
+ ndn::Ptr<ndn::Data> data,
+ const int & stepCount,
+ const ndn::DataCallback& verifiedCallback,
+ const ndn::UnverifiedCallback& unverifiedCallback);
+
+ ndn::Ptr<const std::vector<ndn::Name> >
+ getAllIntroducerName();
+
+ ndn::Ptr<ndn::security::ValidationRequest>
+ prepareRequest(const ndn::Name& keyName,
+ bool forIntroducer,
+ ndn::Ptr<ndn::Data> data,
+ const int & stepCount,
+ const ndn::DataCallback& verifiedCallback,
+ const ndn::UnverifiedCallback& unverifiedCallback);
+
+ void
+ onIntroCertVerified(ndn::Ptr<ndn::Data> introCertificateData,
+ bool forIntroducer,
+ ndn::Ptr<ndn::Data> originalData,
+ const ndn::DataCallback& verifiedCallback,
+ const ndn::UnverifiedCallback& unverifiedCallback);
+
+ void
+ onIntroCertUnverified(ndn::Ptr<ndn::Data> introCertificateData,
+ ndn::Ptr<ndn::Name> interestPrefixName,
+ bool forIntroducer,
+ ndn::Ptr<const std::vector<ndn::Name> > introNameList,
+ const int& nextIntroducerIndex,
+ ndn::Ptr<ndn::Data> originalData,
+ const ndn::DataCallback& verifiedCallback,
+ const ndn::UnverifiedCallback& unverifiedCallback);
+
+ void
+ onIntroCertTimeOut(ndn::Ptr<ndn::Closure> closure,
+ ndn::Ptr<ndn::Interest> interest,
+ int retry,
+ const ndn::UnverifiedCallback& unverifiedCallback,
+ ndn::Ptr<ndn::Data> data);
+
+
+
+private:
+ ndn::Name m_signingIdentity;
+ ndn::Name m_signingCertificateName;
+ ndn::Name m_syncPrefix;
+ int m_stepLimit;
+ ndn::Ptr<ndn::Regex> m_syncPrefixRegex;
+ ndn::Ptr<ndn::Regex> m_wotPrefixRegex;
+ ndn::Ptr<ndn::security::IdentityPolicyRule> m_chatDataPolicy;
+ std::map<ndn::Name, ndn::security::Publickey> m_trustedIntroducers;
+ std::map<ndn::Name, ndn::security::Publickey> m_trustedProducers;
+ std::map<ndn::Name, SpecificPolicyRule> m_chatDataRules;
+
+ ndn::Wrapper* m_handler;
+};
+
+#endif