security: Adding SecPolicyRegex and related rules

Change-Id: Ia9c709e849c405ed57f622b8afc442ce808991fb
diff --git a/src/security/sec-rule.hpp b/src/security/sec-rule.hpp
new file mode 100644
index 0000000..1e2dbd0
--- /dev/null
+++ b/src/security/sec-rule.hpp
@@ -0,0 +1,56 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/**
+ * Copyright (C) 2013 Regents of the University of California.
+ * @author: Yingdi Yu <yingdi@cs.ucla.edu>
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_SEC_RULE_HPP
+#define NDN_SEC_RULE_HPP
+
+#include "../data.hpp"
+
+namespace ndn
+{
+
+class SecRule
+{
+public:
+  struct Error : public std::runtime_error { Error(const std::string &what) : std::runtime_error(what) {} };
+  
+  SecRule(bool isPositive)
+  : m_isPositive(isPositive)
+  {}
+  
+  virtual 
+  ~SecRule() 
+  {}
+  
+  virtual bool 
+  matchDataName(const Data& data) = 0;
+  
+  virtual bool 
+  matchSignerName(const Data& data) = 0;
+  
+  virtual bool
+  satisfy(const Data& data) = 0;
+  
+  virtual bool
+  satisfy(const Name& dataName, const Name& signerName) = 0;
+  
+  inline bool
+  isPositive();
+  
+protected:
+  bool m_isPositive;
+};
+
+bool
+SecRule::isPositive()
+{
+  return m_isPositive;
+}
+    
+}
+
+#endif